Як працює пошук

пошук кохання

завдання, які вирішує компанія Quarks, що робить застосунок для знайомств

з точки

зору технологій

Команда IT-компанії Quarks щодня стикається із неординарними та цікавими інженерними викликами. Що зрозуміло: адже їхній флагманський продукт — застосунок для знайомств Kismia, яким у більше ніж 20 країнах скористались понад 51 млн людей. Активна і велика користувацька база у застосунку, яка постійно зростає — наслідок того, що до підбору пар залучені складні алгоритми, а анкети ретельно перевіряються.

>20
країн
51 M
користувачів

На відміну від багатьох IT-компаній, що говорять про те, як вони змінюють світ, — компанії, що працюють над застосунками для спілкування, буквально змінюють життя людей. Користувачі Kismia пишуть про те, що застосунок зручний і зрозумілий, підтримка — дружня та ефективна. Простий інтерфейс, ефективні алгоритми, які «вміють» знайомити людей зі спільними цінностями, ефективна підтримка, штучний інтелект, що цілодобово слідкує за безпекою — за цим усім стоїть злагоджена робота команди, яка щодня вирішує непрості й водночас цікаві задачі.

Редактор AIN.UA розпитала у спеціалістів із компанії Quarks, над якими завданнями вони працюють та як їх вирішення впливає на користувацький досвід. Уся магія, яка стається, коли люди знаходять собі в онлайні кохання та дружбу за допомогою технологій, якраз і складається із таких доволі нетривіальних тасків.

Команда, що розповіла нам про свою роботу

Олексій Безуський

Head of Product

У компанії понад 6 років. Відповідає за управління та розвиток продукту.

Фанат A/B-тестування та роботи з даними. В основі управління продуктом притримується Data-Driven підходу для імплементації обґрунтованих рішень щодо стратегії та поліпшення продукту

Олег Озімок

Head of Engineering

У компанії понад 7 років. Відповідає за розробку, експлуатацію та технічний розвиток компанії.

Спеціалізується на проектуванні та розробці високодоступних розподілених систем побудованих на основі Golang, gRPC і Kubernetes. Цікавиться DevOps/SRE-практиками

Андрій Філенко

Backend Tech Lead

У компанії вже 3 роки. Відповідає за technical excellence бекенду продукту.

Спеціалізується на створенні високоякісних розподілених систем на Golang із використанням gRPC та protobuf. Пише на Golang заради зменшення вуглецевого сліду

Ілля Касьян

Machine Learning Engineer

У компанії 2 роки. Відповідає за повний цикл розробки моделей для модерації, від ресьорчу до створення сервісу.

Пише на Python, спеціалізується на Computer Vision. Цікавиться Generative AI

Анна Невгад

Moderation Manager

У компанії 4,5 роки. Відповідає за розвиток напряму модерації фотоконтенту та боротьби з шахраями.

Цікавиться Project та People Management.

розповідає Олексій Безуський, Head of Product

Задача 1.Як підбираємо релевантних користувачів

Для клієнта спілкування, зустріч та побудова стосунків — це основна мета використання додатка знайомств. Підбір користувачів відіграє ключову роль в успішних знайомствах. Це — одна з важливих і водночас найскладніших задач у сфері знайомств.

Уявіть, що потрібно підібрати того єдиного користувача продукту із мільйонів та закрити запит вашого клієнта. Система допомагає підібрати потенційного партнера з урахуванням сотні параметрів та критеріїв: вік, стать, інтереси, розташування і т.д. Якісний підбір — це складне завдання, яке вимагає поєднання алгоритмічних методів, аналізу даних та уваги до індивідуальних вподобань користувачів.

Завдання:

Розробити технічне рішення, яке би забезпечувало релевантний підбір партнерів у застосунку

Рішення:

Наша система підбору користувачів є складним технічним рішенням, яке базується на аналізі великої кількості даних та факторів про користувачів, які ми збираємо на продукті. Алгоритм може використовувати інформацію, яку надають користувачі у своїх профілях, а також аналізувати їхню активність на сайті, щоб отримати детальну картину про користувача та його інтереси.

У базі даних нашої системи підбору є мільйони користувачів, кожен з них має низку динамічних параметрів, які впливають на його релевантність. Параметри постійно змінюються, тож система постійно оновлює їх у режимі реального часу, враховуючи складні алгоритми виключень, які побудовані на основі поведінки користувачів.

Візьмемо на прикладі підбору користувача в Сан-Паулу (Бразилія)

  1. Передусім ми використовуємо інформацію про геопозицію користувача для визначення розташування. Якщо ж у нас відсутня інформація про геопозицію, ми використовуватимемо пошукові дані, які вказав користувач, наприклад, місто пошуку. В основу пошуку закладається відстань між користувачами, оскільки це дуже важливий фактор для виводу стосунків на офлайн-рівень

  2. Далі враховуємо активність та поведінку користувачів. Додаткові системи оцінювання та інтереси: один з важливих критеріїв, що базується на реакціях користувачів, і дозволяє їх сегментувати й вибирати людей, у яких імовірніше виникне інтерес одне до одного

  3. Враховуючи всі вищевказані критерії, а також великий набір анкетних даних, ми формуємо вибірку користувачів, сортуємо їх за визначеними критеріями та відображаємо одне одному

Користувачі не готові довго чекати, поки алгоритм подумає та підбере людину, тому наша система підбору має за мить знайти ідеального партнера для наших користувачів.

Досягаємо цього завдяки наступним технічним рішенням:

Організація даних

  1. Розподіляємо всіх користувачів у певні окремі групи даних за певною ознакою — бакети, наприклад, по 500 000 користувачів у кожен

  2. У кожному бакеті організовуємо користувачів у залежності від їхніх уподобань і в такий спосіб ще наполовину зменшуємо кількість користувачів, які братимуть участь у пошуку

  3. Рівномірно розподіляємо бакети з користувачами по серверах баз даних

Пошук

  1. Пошук виконуємо у двох фазах (Scatter Phase та Gather Phase), які координуються вузлом, що отримав запит від клієнта

  2. Scatter Phase. Робимо паралельні запити у всі бакети та фільтруємо і ранжуємо користувачів у межах кожного бакета незалежно

  3. Gather Phase. Об’єднуємо результати кожного бакета в один загальний набір результатів і знову ранжуємо користувачів

Запит

Описані вище технічні рішення дозволяють нам ефективно та швидко розв'язувати питання підбору користувачів, а використання A/B-тестування дозволяє регулярно покращувати релевантність підбору користувачів.

розповідає Андрій Філенко, Backend Tech Lead

Задача 2.Як працює анкета користувача

Оптимальна анкета профілю — це доволі серйозний виклик для продуктової команди. З одного боку, необхідно зібрати достатньо інформації про користувача, щоб забезпечити якісний підбір потенційних партнерів. З іншого боку, потрібно зробити анкету простою і зрозумілою, щоб користувач мав змогу заповнити її без зайвих зусиль.

Завдання:

З одного боку, забезпечити збір даних, достатніх, щоб підбирати цікавих співрозмовників, з іншого боку — не переускладнювати анкету

Рішення:

Ми враховуємо те, що деякі запитання можуть бути особистими або чутливими для користувача. Наприклад, запитання про фізичні параметри, дохід або попередні стосунки можуть викликати незручність та небажання давати відповіді. Тому важливо збалансувати необхідність отримання цієї інформації з повагою до приватності та комфорту.

Важливо розмістити запитання у логічному порядку, розробити зрозумілі та прості для взаємодії елементи управління. А головне — забезпечити, локалізацію з урахуванням національних особливостей користувачів із майже 20 країн світу.

Всі ці завдання ми вирішуємо за допомогою величезної кількості A/B-тестів, які проводимо на базі власного рішення для проведення й аналізу експериментів. Сервіс дозволяє експерименти з високонавантаженими частинами системи у реальному часі, додаючи мінімальну затримку, та підбиває підсумки без втручання людини.

Анкета користувача — найпопулярніший ресурс на продукті. Щосекунди ми отримуємо понад тисячу запитів від людей, а також більш ніж п'ять тисяч запитів від внутрішніх мікросервісів. У таких умовах, швидкість роботи сервісу грає ключову роль — завдяки Golang та розподіленій архітектурі ми можемо гарантувати 2 мілісекунди для 95% запитів, витрачаючи при цьому мінімальну кількість обчислювальних ресурсів.

Варто зазначити

Оскільки анкета користувача містить чутливу особисту інформацію, ми докладаємо максимум зусиль для безпечної передачі та зберігання цих даних. Наприклад, використовуємо Continuous Security-підхід, який базується на постійному моніторингу, оцінці та вдосконаленні безпекових заходів протягом всього життєвого циклу розробки та експлуатації нашої системи. Безпека даних наших користувачів має завжди найвищий пріоритет.

розповідають Moderation Manager Анна Невгад та Machine Learning Engineer Ілля Касьян

Задача 3.Як модеруємо фотоконтент

Модерація користувацького контенту — це здебільшого контроль фотографій вручну та автоматично. Більше гарних та якісних фото — більше користувачів на сайті. А що більше користувачів на сайті, то більше шансів у кожної нової людини зустріти своє кохання

Завдання:

Автоматизувати процес модерації контенту

Рішення:

Для досягнення цілі ми розробили та впровадили низку ML-моделей, які дозволили автоматично модерувати більшість контенту, та відправляти на ручну модерацію виключно ті фотографії, де даних для прийняття рішення недостатньо.

Модерація фотографій виглядає наступним чином: спочатку фото проходить через наші ML-моделі, кожна з яких додає до фото свої метадані: наприклад, чи є на фото обличчя або яка ймовірність, що фото містить небезпечний контент. Далі на основі цих метаданих ми приймаємо рішення: відхилити фото, автоматично схвалити його або ж одразу відправити на ручну перевірку. Варто враховувати, що фотографії, які автоматично схвалюються, додатково проходитимуть процес постмодерації, який дозволить прибрати можливі помилки ML-моделей і тим самим покращити наші внутрішні рішення.

Усі ML-моделі проходять постійний контроль якості, і ми покращуємо їх на основі попередніх результатів. У нашому арсеналі є як і загальнодоступні моделі, які ми адаптували під наші потреби, так і моделі, розроблені у стінах компанії.

Яких результатів ми досягли:

Ми розробили низку моделей, що дозволили нам автоматизувати модерацію 45% фотографій та пришвидшити її в декілька разів. Наразі більшість фотографій на сайті модерується не довже як 30 секунд, що значно покращує користувацький досвід, оскільки користувач швидко отримує повноцінний доступ до ресурсу, а шляхом постмодерації ми робимо додаткову мануальну перевірку, тим самим прибираємо мізерну кількість помилок, які можуть допустити ML-моделі.

розповідають Moderation Manager Анна Невгад та Machine Learning Engineer Ілля Касьян

Задача 4.Як стежимо за безпекою користувачів

Фрод та скам у сфері знайомств є дуже різноманітними і несуть значні фінансові та репутаційні ризики для компаній та користувачів. Робота над безпекою користувачів — це постійні перегони, у яких шахраї завжди намагаються бути на один крок попереду, а продукт намагається оптимізувати свої інструменти в боротьбі з ними.

Завдання:

Ізолювати шахраїв та створити комфортну і безпечну атмосферу в застосунку

Рішення:

На етапі реєстрації:

Працює нейронна мережа, яка допомагає вже на цьому етапі розуміти, наскільки ризиковим є для нас користувач. Модель використовує історично зібрані дані та перенавчається в реальному часі.

На етапі використання продукту:

Під час використання продукту аналізуємо поведінку користувачів, використовуючи різні рішення, зокрема, і нейронні мережі, в результаті яких можемо відправити анкету на додаткову мануальну перевірку. У результаті перевірки анкет приймається остаточне рішення про необхідність блокування ризикових користувачів.

Верифікація фотографій. Цей механізм дає змогу перевірити та підтвердити особу користувача шляхом порівняння завантаженої фотографії та щойно зробленого селфі.

Після появи фотоверифікації ми нарешті побачили, як насправді виглядають ті, з ким ведемо постійну боротьбу. Ліворуч на малюнку нижче — фото, що було зроблене на фотоверифікацію, а праворуч — фото, яке було в профілі користувача до цього.

Фото
користувача
Очікуваний
жест
Фото
з профілю
Імʼя: Аннабель
Вік: 32 роки
Стать: жіноча
Країна: США
Імʼя: Тіна
Вік: 35 років
Стать: жіноча
Країна: США
Імʼя: Паскаль
Вік: 42 роки
Стать: чоловіча
Країна: Франція

Великий набір правил та ML-рішення допомагають швидко локалізовувати шахраїв та відправляти на додаткову перевірку анкети для проходження фотоверифікації.

«Тіньовий бан» — наш найефективніший інструмент для боротьби з шахраями

Для окремих сегментів шахраїв є змога потрапити в окреме середовище, яке не відрізняється від звичайного продукту. При «тіньовому бані» шахрай не може дізнатися, у який момент його було викрито. Скамери продовжують користуватися продуктом, спілкуватися між собою і при цьому не мати доступу до звичайних користувачів. У такий спосіб ми вирішуємо питання шахрайських дій на нашому продукті та мінімізуємо вплив на інших користувачів.

Яких результатів ми досягли:

Комбінація усіх інструментів дала нам змогу пришвидшити ідентифікацію шахраїв. Наразі 60% від усіх блокувань відбувається в перші п'ять хвилин після реєстрації. Інші 40% ми ізолюємо пізніше, адже вони проявляють шахрайську активність тільки через деякий час і відповідно ізоляція відбувається пізніше.

розповідає Олег Озімок, Head of Engineering

Задача 5.Як робимо застосунок доступним для усіх популярних платформ

У сучасному цифровому світі, де мобільність та технології займають центральне місце, кожна людина має свій улюблений пристрій на улюбленій платформі та взаємодіє з інтернетом через різноманітні додатки. Одні люди віддають перевагу вебзастосункам через їхню універсальність. Іншим подобаються застосунки на мобільній платформі, як-от iOS та Android, через їхні широкі функціональні можливості та тісну інтеграцію з екосистемою.

Завдання:

Зробити так, щоб користувачі почувалися комфортно незалежно від платформи, на якій вони використовують наш продукт

Рішення:

Багато компаній намагаються оптимізовувати свої витрати, віддаючи перевагу кросплатформеній розробці, використовуючи такі фреймворки, як React Native та Flatter. Це гарні та потужні інструменти, але, на жаль, вони не можуть дати користувачу той рівень досвіду та комфорту, який він отримує від взаємодії із застосунком, що був спеціально створений для конкретної платформи з урахуванням всіх її можливостей, зокрема апаратних.

Тому для себе ми вирішили, віддати перевагу виключно нативним інструментам для розробки клієнтських додатків, використовуючи при цьому новітні підходи до побудови інтерфейсів та кращі практики дизайну.

Ми досягаємо мети не тільки за допомогою оптимального вибору клієнтського стека технологій, уніфікованого дизайну та елементів керування і поведінки, а й через вирішення складних завдань та викликів на серверному рівні.

Одним з таких викликів є забезпечення сумісності API з різними мобільними клієнтами. Кожна платформа має свої особливості та вимоги до формату даних, протоколів передачі, аутентифікації та безпеки. Тож для вирішення цього завдання ми використовуємо BFF (Backend for Frontend). Це — архітектурний підхід, де для кожної платформи створюємо окремий компонент посередник (BFF). Кожен BFF спеціалізується на обслуговуванні конкретної платформи, забезпечуючи оптимізований API та функціонал, необхідний саме для цієї платформи.

Таким чином нам вдається розділити функції та відповідальність між різними BFF-серверами, що не тільки покращує швидкість розробки, а й користувацький досвід, за рахунок заощадження інтернет-трафіку та заряду батареї користувацького пристрою.

Важливо зазначити

Вищевказані рішення також дозволяють нам ефективно розподіляти та використовувати ресурси команди, забезпечуючи при цьому прозорий овнершіп та надають можливість команді досягати цілей з мінімальним залученням інших команд

розповідає Олексій Безуський, Head of Product

Задача 6.Як локалізуємо застосунок

Локалізація продукту — важлива частина продукту, яка необхідна для роботи на різних локаціях. Цей процес включає переклад й адаптацію контенту, а також модифікацію дизайну та функцій, для відповідності потребам та вимогам різноманітних ринків.

Інтерфейс нашого застосунку перекладений вісьмома мовами. Для мовного перекладу ми використовуємо Crowdin, долучаючи до цієї платформи партнерів, які можуть забезпечити швидкий та якісний переклад. Платформа дозволяє забезпечити найвищу якість перекладів завдяки додатковим перевіркам із залученням носіїв мови.

Однією із маловідомих, але вкрай важливих частин локалізації є локалізація прийому платежів.

До основних складових цього типу локалізації належать:

Валюти

Врахування валютних систем країни або регіону, в якому продукт буде використовуватись. Це означає забезпечення підтримки валютних обчислень, відображення цін, конвертацію валют та інших валютних операцій, а також врахування фактору девальвації, який є невід’ємною частиною країн, що розвиваються

Тарифи

Вартість продукту, яка залежатиме від країни, з урахуванням маси факторів при формуванні вартості послуг

Юридичні та регуляторні вимоги

Дотримання місцевих правових та регуляторних вимог, пов'язаних з платіжними операціями. Це включає захист персональних даних, відповідність нормам безпеки платежів, обробку повернення платежів та інші правила, які можуть бути різними в різних країнах або регіонах

Локалізовані способи оплати

Підтримка місцевих популярних способів оплати, які є характерними для цільової аудиторії

Вирішити це завдання нам допомагає наша власна розробка — білінг-платформа, що дозволяє керувати локалізацією прийому платежів у реальному часі за допомогою зручного інтерфейсу. Платформа інтегрована з іншими нашими внутрішніми інструментами, як-от платформою для проведення експериментів, що дозволяє проводити A/B-тести без додаткового залучення розробників.

Be a part of something bigger

Люди знаходять одне одного завдяки тому, що ми знайшли тебе. Якщо ти хочеш долучитися до роботи над застосунком та вважаєш кожну складну технологічну задачу як виклик для себе — тобі сюди

Актуальні вакансії
ТЕКСТ
Ольга Карпенко
ЛІТЕРАТУРНИЙ РЕДАКТОР
Оля Закревська
Фото
надані Quarks
Дизайн та верстка
Quarks, Artycoders
Продюсер
Ольга Андрусів
Менеджер
Ірина Насильнєва
ПредставниЦЯ Quarks
Марта Протопіш
Цифрове життя для старовинних книг та сучасних документів
Як працює Scanner Pro
Під капотом Uklon
Компанія відповідає на відверті, милі та каверзні запитання райдерів про фічі застосунку
Думаєш, Uklon —це лише про виклик авто?
WIN-WIN ДЛЯ СТУДЕНТІВ ТА
ІТ-КОМПАНІЙ
Чим корисні менторські програми