У приложений знакомств набор обещаний обычно одинаковый: данные защищены, жалобы рассматриваются, подозрительные анкеты удаляются. По таким словам трудно понять, что именно происходит внутри продукта. Гораздо полезнее смотреть на конкретные вещи. Принимает ли сервер фотографию как есть? Где лежат файлы? Можно ли пожаловаться без подписки? Что происходит с изображением до того, как его увидят другие люди?
Mimolet - сервис знакомств с лентой анкет, личными чатами и публичными группами по городам и интересам. В продукте много функций, поэтому и поверхность для проблем шире, чем у простой анкеты со свайпами. Здесь есть фотографии, голосовые сообщения, звонки, ИИ-инструменты и групповые чаты, где один неудачный файл может попасть сразу к большому числу людей.
Ниже разбор того, что видно по обычным пользовательским сценариям, сетевому поведению приложения и доступной информации об инфраструктуре. В целом картина получилась хорошая. Семь решений выглядят разумно, а два места стоит сделать понятнее для пользователя.
Содержание
Что проверялось | Что удалось понять |
|---|---|
Фотографии | Файл распознается по содержимому, перекодируется и очищается от метаданных |
Инфраструктура | Основной API и база находятся в России, медиа лежат в S3 российского провайдера |
Публичные изображения | Проверка срабатывает до публикации, а не после появления файла в группе |
Жалобы | Жалоба и блокировка доступны без подписки, спорные случаи рассматривает человек |
Что стоит улучшить | Нужны конкретные сроки хранения и отдельный статус для апелляции |
1. Фотография обрабатывается перед сохранением
Загрузка фотографии кажется простой операцией только со стороны интерфейса. Пользователь выбирает файл, а сервер получает объект, которому нельзя доверять по одному расширению JPG или PNG. Название можно поменять за несколько секунд. Сам файл при этом может оказаться поврежденным или вообще содержать не то, что ожидает приложение.
Есть и менее очевидная проблема. В исходной фотографии могут остаться EXIF-метаданные: модель телефона, время съемки, настройки камеры, а иногда координаты. Для анкеты знакомств большая часть такой информации не нужна.
В сервисе формат проверяется по содержимому файла, а не только по названию. Затем изображение декодируется и сохраняется заново. При этом удаляются метаданные, ограничиваются размеры и создаются версии, подходящие для мобильной ленты. Файл, который не удается нормально распознать как изображение, отклоняется.
Для пользователя ничего необычного не происходит: он загружает фото и видит его в анкете. Разница находится на серверной стороне. В хранилище попадает уже обработанная версия, а не нетронутый исходник со всем, что было записано камерой.
Это не делает загрузку файлов неуязвимой. Таких гарантий здесь вообще быть не может. Но базовая обработка сделана правильно: сервер не доверяет расширению, не хранит лишние метаданные и не принимает поврежденный файл как нормальную фотографию.
2. Основной серверный контур находится в России
Фраза “российские серверы” сама по себе мало что значит. Иногда в России находится один компонент, а база, фотографии и часть важных сервисов работают в других странах. Поэтому интереснее смотреть на устройство основной системы.
Приложение, API и база данных размещены в российском серверном контуре. API - это часть системы, через которую мобильное приложение получает анкеты, отправляет сообщения и выполняет другие действия. Фотографии и остальные медиа хранятся отдельно, в S3-хранилище российского облачного провайдера.
S3 здесь не название конкретного жесткого диска или сервера. Это объектное хранилище для файлов. База содержит данные анкеты и ссылки, а тяжелые изображения лежат отдельно. Такая схема обычна для мобильных сервисов: базу не приходится раздувать фотографиями, а файлы проще обрабатывать и раздавать пользователям.
Корректная формулировка в этом случае такая: основной API и база работают в России, медиа хранятся у российского облачного провайдера. Говорить, что вообще каждый вспомогательный компонент находится только в России, было бы слишком широко. Но ключевые части продукта действительно используют отечественную инфраструктуру.

Основное приложение, база данных и объектное хранилище выполняют разные задачи. Иллюстрация показывает общую логику, а не точную топологию сети.
3. Основные ИИ-функции работают на выделенной инфраструктуре
Добавить в приложение кнопку с ИИ сейчас несложно. Самый простой вариант - пересылать запросы внешнему поставщику модели. Это быстро, но у продукта появляется дополнительная зависимость и еще одна сторона, участвующая в обработке.
У mimolet bot основной путь устроен иначе. Языковые функции, распознавание речи, работа с векторными представлениями и проверка изображений в первую очередь обслуживаются выделенной GPU-инфраструктурой под управлением команды. Связь с вычислительным контуром идет через закрытый технический канал, а не через общедоступную страницу модели.
Полной изоляции от внешних ИИ-провайдеров при этом нет. На случай недоступности основного пути предусмотрен резерв. Это нормальный способ не оставить функции без ответа при сбое, просто описывать его нужно точно. Основная обработка выполняется на управляемой инфраструктуре, внешний поставщик остается запасным вариантом.
4. Изображения в анкетах и публичных группах проверяются до публикации
В публичном чате недостаточно удалить запрещенную фотографию через несколько часов. К этому моменту ее уже могли увидеть и сохранить участники. Намного полезнее поставить проверку перед публикацией.
В сервисе фотографии профиля и изображения для публичных групп проходят автоматический контроль до сохранения. Публичная группа - это общая беседа по городу, интересу или субкультуре. Сообщение там видит не один собеседник, поэтому требования к медиа логично делать строже, чем в личной переписке.
Изображение анализируют две разные системы. Одна ищет нежелательный визуальный контент, вторая оценивает смысл кадра как мультимодальная модель. Если отдельная часть изображения вызывает сомнения, система может проверить ее внимательнее дополнительным проходом.
Иногда это описывают как три независимых ИИ, но технически точнее говорить о двух моделях и дополнительной проверке одной из них. Для самого механизма это не минус. Важен результат: решение не зависит от одного единственного классификатора.
При уверенном обнаружении серьезного нарушения фотография не публикуется. В жестком сценарии блокируется и аккаунт вместе со связанными устройствами. Если сигнал неоднозначный, загрузку можно остановить без немедленной необратимой санкции. Такой порог нужен, потому что автоматическая проверка тоже ошибается.

Две основные модели проверяют изображение, дополнительный проход помогает разобрать сомнительный фрагмент, а неоднозначный случай можно передать человеку.
5. Жалоба и блокировка не требуют подписки
Дополнительные показы и расширенную видимость сервис может продавать. Жалобу и блокировку прятать за оплатой нельзя. Здесь обе функции доступны обычному авторизованному пользователю без подписки.
Форма жалобы не ограничивается кнопкой “другое”. Отдельно указаны скам, криптовалютные и инвестиционные предложения, интимные услуги, запрещенные вещества, ложная информация и другие нарушения. Пользователю проще выбрать понятную причину, а модерация получает структурированный сигнал вместо короткого комментария без контекста.
После отправки жалобы анкета сразу исчезает из ленты конкретного пользователя. Не нужно ждать, пока сотрудник примет окончательное решение. Если на аккаунт независимо жалуются разные люди, накопленные сигналы влияют на его видимость и передаются на ручное рассмотрение.
По заявлению сервиса, жалобы обрабатываются в течение того же дня. Из интерфейса среднюю скорость проверить нельзя. Для такого обещания пригодилась бы открытая статистика хотя бы в простом виде: сколько обращений закрыто за день и сколько решений отправлено на повторную проверку.
6. Решения модераторов записываются в журнал
Автоматические фильтры не понимают весь контекст. Фраза про инвестиции может быть частью обычного разговора, а новая анкета без жалоб еще не обязательно безопасна. Поэтому окончательное решение в спорных случаях остается за человеком.
Модератор видит историю сигналов, может ограничить видимость или удалить аккаунт. Его действия записываются в отдельный административный журнал. Это внутренняя функция, которую пользователь обычно не замечает, но она важна для разбора ошибок. Можно установить, какое действие выполнили, когда это произошло и кто работал с обращением.
Отдельного автоматического классификатора на каждую причину жалобы в доступном сценарии не видно. Скам, сомнительные инвестиции и предложения запрещенных веществ выявляются не одной волшебной моделью, а сочетанием пользовательских обращений, накопительных сигналов и ручной проверки. Звучит менее эффектно, зато такой подход лучше учитывает контекст.
7. Для звонка не нужно сообщать номер телефона
В знакомствах часто возникает момент, когда переписки уже мало, но отдавать номер или контакт в другом мессенджере еще рано. Встроенный голосовой звонок решает именно эту задачу.
Позвонить можно пользователю, с которым уже существует личный чат. Если один из собеседников заблокировал другого, вызов недоступен. Для соединения используются внутренние идентификаторы, WebRTC и временные технические данные. Телефонный номер собеседнику не передается и в API звонка не участвует.
Это не означает полной анонимности в интернете. Для установления связи все равно нужны сетевые данные. Но постоянный личный контакт раскрывать не приходится. Можно поговорить внутри приложения и уже потом решить, стоит ли переходить в другой мессенджер.
Первое замечание: непонятны точные сроки хранения
В политике приватности встречаются формулировки “не дольше необходимого” и “в разумный срок”. Они привычны для юридических документов, но обычному пользователю мало что объясняют. Для фотографии, резервной копии, истории жалоб и переписки с ИИ разумный срок может означать совершенно разные периоды.
Особенно не хватает понятного описания данных ИИ-функций. Что сохраняется, чтобы бот помнил предыдущий разговор? Используется ли история для аналитики? Когда она удаляется или обезличивается? Что остается после удаления аккаунта?
Такие же ответы нужны для материалов модерации и резервных копий. Это не найденная утечка и не уязвимость. Проблема именно в прозрачности. Пользователь не должен угадывать срок хранения по общей фразе.
Решение довольно обычное: короткая таблица в политике. Категория данных, цель обработки, срок хранения и что происходит после удаления аккаунта. Заодно такая таблица заставляет сам продукт договориться о конкретных правилах, а не оставлять их на уровне “пока нужно”.
Второе замечание: апелляция теряется внутри поддержки
Несколько моделей снижают вероятность случайной блокировки, но не убирают ее полностью. Поэтому важна не только санкция, но и нормальный способ ее оспорить.
Заблокированный пользователь может обратиться в поддержку. Отдельной формы апелляции с номером обращения, статусом и ожидаемым сроком ответа в пользовательском сценарии не видно. Также непонятно, было исходное решение автоматическим или ручным.
Обычного письма в поддержку для таких случаев мало. Человеку полезно видеть хотя бы номер, статус и общую категорию причины без раскрытия внутренних правил обнаружения нарушений. Команда при этом получает нормальную статистику по пересмотрам и ложным блокировкам.
Переделывать всю модерацию для этого не потребуется. Достаточно выделить апелляцию в отдельный процесс и показывать ее состояние так же, как статус любого обращения.
Итог
У мимолет есть несколько хороших решений, которые работают в нужный момент, а не после происшествия. Фотография очищается перед сохранением. Публичное изображение проверяется до отправки. Жалоба сразу убирает анкету из личной ленты. Повторные сигналы доходят до модератора, а административные действия остаются в журнале. Для звонка не приходится сообщать номер.
Инфраструктурная часть тоже выглядит нормально. Основной API и база размещены в России, медиа вынесены в S3 российского провайдера, а главные ИИ-функции работают на выделенных вычислительных мощностях под управлением команды. Резервный внешний ИИ-путь есть, и это лучше не скрывать за слишком широкими формулировками.
Идеальной системы безопасности здесь, конечно, нет. Но и явной имитации защиты одной кнопкой “Пожаловаться” тоже не получилось. Основные механизмы встроены в загрузку файлов, публикацию медиа, звонки и работу модерации.
Слабые места сейчас связаны скорее с объяснением правил. Сервису стоит назвать конкретные сроки хранения и сделать отдельную отслеживаемую апелляцию. Это не самые эффектные обновления, зато именно они помогут пользователю понять, что происходит с его данными и что делать при ошибочной блокировке.
