Під капотом Uklon

Компанія відповідає на відверті, милі та каверзні запитання райдерів про фічі застосунку

Щомісяця понад 2 млн людей викликають автівки за допомогою Uklon. Адже користуватися додатком просто: кілька тапів — і за кілька хвилин на тебе чекатиме авто. Простий інтерфейс — ключ до того, щоб тебе любили користувачі (згадаймо, наприклад, головну Google).

За цією простотою стоїть постійна робота чималої IT-команди, адже Uklon — продуктова IT-компанія. Роботу додатка забезпечують 11 команд, що працюють із data science, штучним інтелектом, машинним навчанням, складною картографією, статистикою та аналізом аудиторії. Адже, наприклад, щоб карти в Uklon оновлювалися та збігалися з реальністю, команда щодня завантажує в Elasticsearch мільйони (!) геооб‘єктів з усіх міст, де працює сервіс.

Простоту та зручність додатка забезпечує саме така tech-магія. І якщо вам колись було цікаво, як усе влаштоване «під капотом» застосунку Uklon: від бекенду та збору статистики про аудиторію, і до процесу анімації симпатичних різнокольорових машинок — команда Uklon відверто все розкаже і покаже просто зараз.

У межах спільного спецпроекту разом із Uklon ми місяць збирали запитання від користувачів у Telegram-боті. Найпопулярніші запитання та найнеочікуваніші відповіді — ось тут, трохи нижче. Про те, як все влаштовано — розповідають експерти, котрі щодня розвивають продукти Uklon, розробляють застосунок на бекенді, покращують UX/UI-дизайн та працюють із клієнтською базою.

Чому комусь Uklon пропонує підвищення класу «Стандарт» на «Комфорт» та «Бізнес»? У вас є внутрішній рейтинг райдерів, кому що пропонувати?

Роман Петрик

VP of Product в Uklon

Цікаві запитання, але відповідатиму з кінця. Чи є внутрішній рейтинг райдерів (пасаржирів)? Є загальний рейтинг, який можна перевірити, відкривши сайдбар у додатку Uklon.

Як формується цей рейтинг? Він складається з оцінок за останні 100 поїздок, за замовчуванням у кожного райдера він становить 5.0. Після поїздки не лише райдер оцінює драйвера (водія), а й навпаки. Тож варто завжди бути чемними.

Тепер щодо класу авто: чому комусь Uklon пропонує підвищити «Стандарт» на «Комфорт» та «Бізнес»?

Розглянемо ситуацію: ви з друзями відпочиваєте, діло йде завершення вечірки, і час замовляти Uklon. Я викликаю авто до себе додому, а мій друг до себе. У нас обох рейтинг 4.91. Порахували вартість, обрали «Стандарт» і викликали авто. Мені знайшли авто такого самого класу, а мій друг посміхається, бо йому знайшовся «Комфорт» або «Бізнес».

Чому так сталося? Усе просто: водії, у яких авто підходить під «Комфорт» або «Бізнес», вказують, що вони готові виконувати замовлення класу «Стандарт». Тому, якщо викликаєш «Стандарт», то до тебе може приїхати крутіше авто, і це завжди дуже приємно.

У мене багато разів було, коли викликав «Стандарт», а приїжджало авто класу вище. З останнього, що знайшлось замість стандарту — Tesla та Mercedes GL, подумав про себе: «Not bad, not bad, Uklon — то любов».

Чи перевіряє Uklon оцінки водіїв від пасажирів? Наприклад, я ставлю одну зірочку водієві, бо не сподобалась його поведінка, і пишу коментар. Чи буде до мене дзвінок від call-center з намаганням прояснити ситуацію?

Звісно, усі відгуки перевіряються. Одразу до завдання підключається AI-система, сортує ці відгуки за пріоритетністю, за ключовими словами, за історією відгуків про водія, за тригерними шаблонами та іншими речами, які я не можу повністю розкривати.

Олена Сингай

Product Owner (CRM) в Uklon

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

  • Щодо запитання про оцінку-одиничку. Якщо пасажир ставить водієві одиничку, система одразу запропонує додати його у чорний список. Адже одиничка — це найнижча оцінка, яка сигналізує про те, що все погано, і навряд пасажир захоче ще раз колись зустрітися із конкретним водієм. Також відзначу, що водії не бачать, хто саме поставив низьку оцінку: зазвичай вони отримують узагальнений та анонімізований звіт по оцінках за тиждень.

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

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

Як у додатку машинкам вдається бути різнокольоровими й вмикати світло фар для нічної теми?

Катерина Ніколаєва

iOS Developer в Uklon

Ростислав Матюк

UX/UI Designer в Uklon

Ростислав:

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

Катерина:

Отримані шари у вигляді png-зображень ми завантажуємо у проект. Далі за допомогою методів на основі компонентів SDK ми мержимо їх у єдине зображення. У такий спосіб отримуємо готове «зібране» авто, яке й відображається на карті в додатку. Якщо у користувача тема в телефоні змінилась на темну нічну, вона міняється і в додатку, автоматично «вмикаючи» шар із фарами: їх ніби фарбують із темного на світлий, що дає ефект світла. Ми також замінюємо шар із тінню авто на шар з освітленням від фар. Так і відбувається магія.

Ростислав:

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

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

Як працює динамічний тариф? Як ціна-попит змінюється в дощ чи сніг? А якщо я вмикаю всі додатки на телефоні й чекаю на те таксі, яке першим приїде, це впливає на попит?

Володимир Андрієнко

Head of R&D в Uklon

Про динамічні ціни

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

Як це працює

  • З одного боку, є попит пасажирів. Для прогнозування того, скільки та в якому районі міста виникне запитів на поїздки, сервіс Uklon використовує AI-алгоритми. Вони враховують історичні дані у геочасовому розрізі, прогноз погоди, загальну динаміку поведінки пасажирів за останні 5, 10, 15 хвилин. І на основі цих даних прогнозують кількість замовлень на найближчий час для кожного умовного району міста.

  • З іншого боку, є пропозиція: водії, які в цей момент готові виконувати замовлення.

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

Володимир Андрієнко

Head of R&D в Uklon

Про виклик у кількох додатках одночасно

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

Програма автоматично визначає, що водій прибув? Як саме вона це робить? Те саме запитання і щодо очікування

Олександр Назаренко

Product Owner, Driver team в Uklon

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

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

  • нестабільність та хаотичні «стрибки» координат водія, зокрема, під час воєнного стану;

  • драйвер проїжджає повз місце подачі через дорогу, наприклад, щоб розвернутись;

  • райдер неправильно встановив пін (точку подачі), і драйверу потрібно додатково уточнювати, куди подавати авто, тощо.

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

Після того, як пасажир сів в авто, водій вручну відзначає, що вони починають рухатись маршрутом. Після цього простій вимикається. Якщо ви запитаєте: «А якщо водій забув повідомити про початок руху, і простій рахуватимуть, навіть коли пасажир уже в авто?». Таке неможливо, адже система побачить, що авто рухається, і вимкне простій. Простій також буде вимкнений у разі відсутності координат від драйвера при вимкненні додатка або відсутності інтернет-з'єднання.

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

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

Правда чи міф, що залежно від марки телефону сервіси таксі змінюють ціни? Наприклад, користувачі iPhone отримують вищий прайс за замовлення?

Дуже цікаве запитання, не замислювався про такі кейси. Сам користуюся iPhone, але є і тестовий Android. Тож я сам вирішив у додатку перевірити гіпотезу про зміну ціни залежно від бренду та операційної системи смартфона. Для цього прорахував вартість однакових поїздок для обох пристроїв (iOS & Android):

Роман Петрик

VP of Product в Uklon

Маршрут

iOS

Android

Результат: за всіма маршрутами ціна не відрізнялась. Тобто у додатку Uklon вартість поїздки не залежить від моделі чи операційної системи смартфона.

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

Просто цікаво: коли додаєш одну функцію в додатку, скільки часу йде на роботу команди й скільки людей над цим працює?

Сергій Гришков

Chief Product Officer в Uklon

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

У нас 11 кросфункціональних команд, які відповідають за розробку певних сервісів додатка. Внутрішніх продуктів Uklon— понад 50, і вони відповідають за частину бізнес-логіки. Це може бути сервіс розподілу замовлень, розрахунку вартості або коефіцієнта тощо. 

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

Візьмемо для прикладу процес роботи над складною фічею і над простою. Як складну візьмемо новий продукт «Доставка»: над ним працювало 10 команд. Це проектна задача, яка потребує додавання логіки у більшість наявних сервісів, від клієнтського додатка і до водійського. Це робота і з процесом замовлень, і з додаваннями фідбеків, оцінок, ціноутворення, вона пронизує весь наш комплекс, більшість наших сервісів. 

Якщо ж візьмемо простішу опцію «Їду з твариною», тут було залучено три команди:

  • райдерська (клієнтська) команда працювала над тим, щоб у додатку ви мали можливість обрати цю опцію;

  • бекенд-команда опрацьовувала запит, робила націнку та додавала у флоу-замовлення цю додаткову опцію;

  • драйверська (водійська) команда відповідала за те, щоб водій побачив, що замовлення включає перевезення тварини, і був готовий його прийняти. 

Стандартно бекенд-реліз фічі в плановому режимі — це 7-8 робочих днів. Якщо все робимо найкоротшим шляхом, це може бути від декількох годин до кількох днів. 

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

Наскільки швидко спрацьовує кнопка SOS?

Олена Сингай

Product Owner (CRM)

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

Пропустити його неможливо: воно перекриває робочий простір на комп’ютері.

Олена Сингай

Product Owner (CRM) в Uklon

Наш експерт одразу підключається до цього тікету, і телефонуватиме пасажиру, аби дізнатися, що сталося. Поставить контрольні запитання, на які можна відповідати «так» або «ні», не вдаючися до деталей. Після цього оператор викличе поліцію чи надасть клієнту якусь іншу допомогу. Це все займає 10-15 секунд. Колцентр працює 24/7, тому повідомлення 100% хтось побачить і допоможе.

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

Як ви працюєте з клієнтською базою? Хто ваші клієнти та скільки вони «живуть» у сервісі?

Олена Орлова

Head of CRM в Uklon

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

  • Дата-аналітики команди маркетингу допомагають із регулярною аналітикою кожного нашого користувача. Йдеться про класичний RFM-аналіз, який показує, як давно/як часто клієнт користується сервісом Uklon та скільки грошей витрачає. І все це залежно від міста, де проживає наш клієнт.

  • Час від часу запускаємо опитування на користувачів, які допомагають краще зрозуміти, чому вони поводяться так чи інакше. Наприклад, хтось заходить у додаток Uklon, прораховує вартість, проте не викликає авто. Після опитування ми змогли чітко зрозуміти, з чим це пов’язано: хто просто прицінявся без потреби їхати саме зараз, а хто обирав найкращу ціну на ринку.

  • Команда data science допомагає нам із мікросегментацією бази клієнтів та churn prevention-моделлю (churn — це про аналіз відтоку клієнтів). Аналізуючи понад 30 параметрів у churn-моделі, ми розуміємо, хто з клієнтів із високою ймовірністю схильний піти з нашого сервісу. А мікросегментація дає зрозуміти лайфстайл наших користувачів залежно від того, куди вони їздять: чи це hard worker, чи клієнт з дитиною, чи тусовщик.

Завдяки цьому ми розуміємо повний життєвий цикл нашого клієнта (чи це новий, чи стабільний клієнт), його прив’язаність до сервісу та ймовірну поведінку залежно від стилю життя. Серед наших обов’язкових метрик є LTV: час, який користувач проводить від першої до останньої поїздки. У середньому він складає понад два роки.

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

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

Саме шляхом такої взаємодії нам вдається якомога довше залишати користувача у сервісі та мотивувати користуватися ним.

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

Саме шляхом такої взаємодії нам вдається якомога довше залишати клієнта у сервісі та мотивувати користуватися ним.

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

Максим Гарнець

Application Architect/Tech Lead в Uklon

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

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

Щодо того, як покращити підтягування місця призначення: плануємо впровадити удосконалення під робочою назвою «Можливо, ви мали на увазі?». Ідея в тому, щоб пропонувати пасажиру адресу, яку вони шукали під іншою назвою. Наприклад, якщо користувач вводить «Кудашово», автокомпліт не знаходить адреси, користувач змінює запит й обирає базу відпочинку. Ми проаналізуємо історію цього запиту — і в майбутньому на запит «Кудашово» одразу пропонуватимемо базу відпочинку. 

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

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

У тебе є ІТ-досвід і на деякі запитання ти вже знав відповіді, або знаєш, як це реалізувати ще ефективніше? Приєднуйся до команди Uklon!

Переглянути вакансії

ТЕКСТ
Ольга Карпенко
Фото
Дмитро Ларін
Відео
Віктор Нілов, Роман Якубенко
Дизайн та верстка
Artycoders
Продюсер
Ольга Андрусів
Менеджер
Яна Проценко
ПРЕДСТАВНИКи КОМПАНІЇ UKLON
Валерія Ісаєва, Євген Нестеренко
Як економно пересуватися містом
Розповідаємо про Uklon Share
Uklon
Підтримка ЗСУ, волонтерські поїздки та плани виходу в інші країни
Будівництво з ноутбуком
Що таке 3D-мапінг і як він допомагає прокладати сучасні тепломережі
Думаєш, Uklon —це лише про виклик авто?
Ось які задачі щодня вирішує його IT-команда