завдання, які вирішує компанія Quarks, що робить застосунок для знайомств
Команда IT-компанії Quarks щодня стикається із неординарними та цікавими інженерними викликами. Що зрозуміло: адже їхній флагманський продукт — застосунок для знайомств Kismia, яким у більше ніж 20 країнах скористались понад 51 млн людей. Активна і велика користувацька база у застосунку, яка постійно зростає — наслідок того, що до підбору пар залучені складні алгоритми, а анкети ретельно перевіряються.
На відміну від багатьох IT-компаній, що говорять про те, як вони змінюють світ, — компанії, що працюють над застосунками для спілкування, буквально змінюють життя людей. Користувачі Kismia пишуть про те, що застосунок зручний і зрозумілий, підтримка — дружня та ефективна. Простий інтерфейс, ефективні алгоритми, які «вміють» знайомити людей зі спільними цінностями, ефективна підтримка, штучний інтелект, що цілодобово слідкує за безпекою — за цим усім стоїть злагоджена робота команди, яка щодня вирішує непрості й водночас цікаві задачі.
Редактор AIN.UA розпитала у спеціалістів із компанії Quarks, над якими завданнями вони працюють та як їх вирішення впливає на користувацький досвід. Уся магія, яка стається, коли люди знаходять собі в онлайні кохання та дружбу за допомогою технологій, якраз і складається із таких доволі нетривіальних тасків.
розповідає Олексій Безуський, Head of Product
Для клієнта спілкування, зустріч та побудова стосунків — це основна мета використання додатка знайомств. Підбір користувачів відіграє ключову роль в успішних знайомствах. Це — одна з важливих і водночас найскладніших задач у сфері знайомств.
Уявіть, що потрібно підібрати того єдиного користувача продукту із мільйонів та закрити запит вашого клієнта. Система допомагає підібрати потенційного партнера з урахуванням сотні параметрів та критеріїв: вік, стать, інтереси, розташування і т.д. Якісний підбір — це складне завдання, яке вимагає поєднання алгоритмічних методів, аналізу даних та уваги до індивідуальних вподобань користувачів.
Наша система підбору користувачів є складним технічним рішенням, яке базується на аналізі великої кількості даних та факторів про користувачів, які ми збираємо на продукті. Алгоритм може використовувати інформацію, яку надають користувачі у своїх профілях, а також аналізувати їхню активність на сайті, щоб отримати детальну картину про користувача та його інтереси.
У базі даних нашої системи підбору є мільйони користувачів, кожен з них має низку динамічних параметрів, які впливають на його релевантність. Параметри постійно змінюються, тож система постійно оновлює їх у режимі реального часу, враховуючи складні алгоритми виключень, які побудовані на основі поведінки користувачів.
Передусім ми використовуємо інформацію про геопозицію користувача для визначення розташування. Якщо ж у нас відсутня інформація про геопозицію, ми використовуватимемо пошукові дані, які вказав користувач, наприклад, місто пошуку. В основу пошуку закладається відстань між користувачами, оскільки це дуже важливий фактор для виводу стосунків на офлайн-рівень
Далі враховуємо активність та поведінку користувачів. Додаткові системи оцінювання та інтереси: один з важливих критеріїв, що базується на реакціях користувачів, і дозволяє їх сегментувати й вибирати людей, у яких імовірніше виникне інтерес одне до одного
Враховуючи всі вищевказані критерії, а також великий набір анкетних даних, ми формуємо вибірку користувачів, сортуємо їх за визначеними критеріями та відображаємо одне одному
Користувачі не готові довго чекати, поки алгоритм подумає та підбере людину, тому наша система підбору має за мить знайти ідеального партнера для наших користувачів.
Досягаємо цього завдяки наступним технічним рішенням:
Розподіляємо всіх користувачів у певні окремі групи даних за певною ознакою — бакети, наприклад, по 500 000 користувачів у кожен
У кожному бакеті організовуємо користувачів у залежності від їхніх уподобань і в такий спосіб ще наполовину зменшуємо кількість користувачів, які братимуть участь у пошуку
Рівномірно розподіляємо бакети з користувачами по серверах баз даних
Пошук виконуємо у двох фазах (Scatter Phase та Gather Phase), які координуються вузлом, що отримав запит від клієнта
Scatter Phase. Робимо паралельні запити у всі бакети та фільтруємо і ранжуємо користувачів у межах кожного бакета незалежно
Gather Phase. Об’єднуємо результати кожного бакета в один загальний набір результатів і знову ранжуємо користувачів
Описані вище технічні рішення дозволяють нам ефективно та швидко розв'язувати питання підбору користувачів, а використання A/B-тестування дозволяє регулярно покращувати релевантність підбору користувачів.
розповідає Андрій Філенко, Backend Tech Lead
Оптимальна анкета профілю — це доволі серйозний виклик для продуктової команди. З одного боку, необхідно зібрати достатньо інформації про користувача, щоб забезпечити якісний підбір потенційних партнерів. З іншого боку, потрібно зробити анкету простою і зрозумілою, щоб користувач мав змогу заповнити її без зайвих зусиль.
Ми враховуємо те, що деякі запитання можуть бути особистими або чутливими для користувача. Наприклад, запитання про фізичні параметри, дохід або попередні стосунки можуть викликати незручність та небажання давати відповіді. Тому важливо збалансувати необхідність отримання цієї інформації з повагою до приватності та комфорту.
Важливо розмістити запитання у логічному порядку, розробити зрозумілі та прості для взаємодії елементи управління. А головне — забезпечити, локалізацію з урахуванням національних особливостей користувачів із майже 20 країн світу.
Всі ці завдання ми вирішуємо за допомогою величезної кількості A/B-тестів, які проводимо на базі власного рішення для проведення й аналізу експериментів. Сервіс дозволяє експерименти з високонавантаженими частинами системи у реальному часі, додаючи мінімальну затримку, та підбиває підсумки без втручання людини.
Анкета користувача — найпопулярніший ресурс на продукті. Щосекунди ми отримуємо понад тисячу запитів від людей, а також більш ніж п'ять тисяч запитів від внутрішніх мікросервісів. У таких умовах, швидкість роботи сервісу грає ключову роль — завдяки Golang та розподіленій архітектурі ми можемо гарантувати 2 мілісекунди для 95% запитів, витрачаючи при цьому мінімальну кількість обчислювальних ресурсів.
Оскільки анкета користувача містить чутливу особисту інформацію, ми докладаємо максимум зусиль для безпечної передачі та зберігання цих даних. Наприклад, використовуємо Continuous Security-підхід, який базується на постійному моніторингу, оцінці та вдосконаленні безпекових заходів протягом всього життєвого циклу розробки та експлуатації нашої системи. Безпека даних наших користувачів має завжди найвищий пріоритет.
розповідають Moderation Manager Анна Невгад та Machine Learning Engineer Ілля Касьян
Модерація користувацького контенту — це здебільшого контроль фотографій вручну та автоматично. Більше гарних та якісних фото — більше користувачів на сайті. А що більше користувачів на сайті, то більше шансів у кожної нової людини зустріти своє кохання
Для досягнення цілі ми розробили та впровадили низку ML-моделей, які дозволили автоматично модерувати більшість контенту, та відправляти на ручну модерацію виключно ті фотографії, де даних для прийняття рішення недостатньо.
Модерація фотографій виглядає наступним чином: спочатку фото проходить через наші ML-моделі, кожна з яких додає до фото свої метадані: наприклад, чи є на фото обличчя або яка ймовірність, що фото містить небезпечний контент. Далі на основі цих метаданих ми приймаємо рішення: відхилити фото, автоматично схвалити його або ж одразу відправити на ручну перевірку. Варто враховувати, що фотографії, які автоматично схвалюються, додатково проходитимуть процес постмодерації, який дозволить прибрати можливі помилки ML-моделей і тим самим покращити наші внутрішні рішення.
Усі ML-моделі проходять постійний контроль якості, і ми покращуємо їх на основі попередніх результатів. У нашому арсеналі є як і загальнодоступні моделі, які ми адаптували під наші потреби, так і моделі, розроблені у стінах компанії.
Ми розробили низку моделей, що дозволили нам автоматизувати модерацію 45% фотографій та пришвидшити її в декілька разів. Наразі більшість фотографій на сайті модерується не довже як 30 секунд, що значно покращує користувацький досвід, оскільки користувач швидко отримує повноцінний доступ до ресурсу, а шляхом постмодерації ми робимо додаткову мануальну перевірку, тим самим прибираємо мізерну кількість помилок, які можуть допустити ML-моделі.
розповідають Moderation Manager Анна Невгад та Machine Learning Engineer Ілля Касьян
Фрод та скам у сфері знайомств є дуже різноманітними і несуть значні фінансові та репутаційні ризики для компаній та користувачів. Робота над безпекою користувачів — це постійні перегони, у яких шахраї завжди намагаються бути на один крок попереду, а продукт намагається оптимізувати свої інструменти в боротьбі з ними.
Працює нейронна мережа, яка допомагає вже на цьому етапі розуміти, наскільки ризиковим є для нас користувач. Модель використовує історично зібрані дані та перенавчається в реальному часі.
Під час використання продукту аналізуємо поведінку користувачів, використовуючи різні рішення, зокрема, і нейронні мережі, в результаті яких можемо відправити анкету на додаткову мануальну перевірку. У результаті перевірки анкет приймається остаточне рішення про необхідність блокування ризикових користувачів.
Верифікація фотографій. Цей механізм дає змогу перевірити та підтвердити особу користувача шляхом порівняння завантаженої фотографії та щойно зробленого селфі.
Після появи фотоверифікації ми нарешті побачили, як насправді виглядають ті, з ким ведемо постійну боротьбу. Ліворуч на малюнку нижче — фото, що було зроблене на фотоверифікацію, а праворуч — фото, яке було в профілі користувача до цього.
Великий набір правил та ML-рішення допомагають швидко локалізовувати шахраїв та відправляти на додаткову перевірку анкети для проходження фотоверифікації.
«Тіньовий бан» — наш найефективніший інструмент для боротьби з шахраями
Для окремих сегментів шахраїв є змога потрапити в окреме середовище, яке не відрізняється від звичайного продукту. При «тіньовому бані» шахрай не може дізнатися, у який момент його було викрито. Скамери продовжують користуватися продуктом, спілкуватися між собою і при цьому не мати доступу до звичайних користувачів. У такий спосіб ми вирішуємо питання шахрайських дій на нашому продукті та мінімізуємо вплив на інших користувачів.
Комбінація усіх інструментів дала нам змогу пришвидшити ідентифікацію шахраїв. Наразі 60% від усіх блокувань відбувається в перші п'ять хвилин після реєстрації. Інші 40% ми ізолюємо пізніше, адже вони проявляють шахрайську активність тільки через деякий час і відповідно ізоляція відбувається пізніше.
розповідає Олег Озімок, Head of Engineering
У сучасному цифровому світі, де мобільність та технології займають центральне місце, кожна людина має свій улюблений пристрій на улюбленій платформі та взаємодіє з інтернетом через різноманітні додатки. Одні люди віддають перевагу вебзастосункам через їхню універсальність. Іншим подобаються застосунки на мобільній платформі, як-от iOS та Android, через їхні широкі функціональні можливості та тісну інтеграцію з екосистемою.
Багато компаній намагаються оптимізовувати свої витрати, віддаючи перевагу кросплатформеній розробці, використовуючи такі фреймворки, як React Native та Flatter. Це гарні та потужні інструменти, але, на жаль, вони не можуть дати користувачу той рівень досвіду та комфорту, який він отримує від взаємодії із застосунком, що був спеціально створений для конкретної платформи з урахуванням всіх її можливостей, зокрема апаратних.
Тому для себе ми вирішили, віддати перевагу виключно нативним інструментам для розробки клієнтських додатків, використовуючи при цьому новітні підходи до побудови інтерфейсів та кращі практики дизайну.
Ми досягаємо мети не тільки за допомогою оптимального вибору клієнтського стека технологій, уніфікованого дизайну та елементів керування і поведінки, а й через вирішення складних завдань та викликів на серверному рівні.
Одним з таких викликів є забезпечення сумісності API з різними мобільними клієнтами. Кожна платформа має свої особливості та вимоги до формату даних, протоколів передачі, аутентифікації та безпеки. Тож для вирішення цього завдання ми використовуємо BFF (Backend for Frontend). Це — архітектурний підхід, де для кожної платформи створюємо окремий компонент посередник (BFF). Кожен BFF спеціалізується на обслуговуванні конкретної платформи, забезпечуючи оптимізований API та функціонал, необхідний саме для цієї платформи.
Таким чином нам вдається розділити функції та відповідальність між різними BFF-серверами, що не тільки покращує швидкість розробки, а й користувацький досвід, за рахунок заощадження інтернет-трафіку та заряду батареї користувацького пристрою.
Вищевказані рішення також дозволяють нам ефективно розподіляти та використовувати ресурси команди, забезпечуючи при цьому прозорий овнершіп та надають можливість команді досягати цілей з мінімальним залученням інших команд
розповідає Олексій Безуський, Head of Product
Локалізація продукту — важлива частина продукту, яка необхідна для роботи на різних локаціях. Цей процес включає переклад й адаптацію контенту, а також модифікацію дизайну та функцій, для відповідності потребам та вимогам різноманітних ринків.
Інтерфейс нашого застосунку перекладений вісьмома мовами. Для мовного перекладу ми використовуємо Crowdin, долучаючи до цієї платформи партнерів, які можуть забезпечити швидкий та якісний переклад. Платформа дозволяє забезпечити найвищу якість перекладів завдяки додатковим перевіркам із залученням носіїв мови.
Однією із маловідомих, але вкрай важливих частин локалізації є локалізація прийому платежів.
Врахування валютних систем країни або регіону, в якому продукт буде використовуватись. Це означає забезпечення підтримки валютних обчислень, відображення цін, конвертацію валют та інших валютних операцій, а також врахування фактору девальвації, який є невід’ємною частиною країн, що розвиваються
Вартість продукту, яка залежатиме від країни, з урахуванням маси факторів при формуванні вартості послуг
Дотримання місцевих правових та регуляторних вимог, пов'язаних з платіжними операціями. Це включає захист персональних даних, відповідність нормам безпеки платежів, обробку повернення платежів та інші правила, які можуть бути різними в різних країнах або регіонах
Підтримка місцевих популярних способів оплати, які є характерними для цільової аудиторії
Вирішити це завдання нам допомагає наша власна розробка — білінг-платформа, що дозволяє керувати локалізацією прийому платежів у реальному часі за допомогою зручного інтерфейсу. Платформа інтегрована з іншими нашими внутрішніми інструментами, як-от платформою для проведення експериментів, що дозволяє проводити A/B-тести без додаткового залучення розробників.
Люди знаходять одне одного завдяки тому, що ми знайшли тебе. Якщо ти хочеш долучитися до роботи над застосунком та вважаєш кожну складну технологічну задачу як виклик для себе — тобі сюди