Как в Uklon работает динамический тариф? Проверяет ли Uklon оценки водителей от пассажиров? Какую магию с автомобилями делает UX/UI-дизайн? Правда ли миф, что в зависимости от марки телефона сервисы такси меняют цены? Как цена-спрос изменяется в дождь или снег? Пользователи спрашивали – команда Uklon Tech ответила.
Ежемесячно более 2 млн человек вызывают автомобили с помощью Uklon. Ведь пользоваться приложением просто: несколько тапов — и через несколько минут тебя будет ждать авто. Простой интерфейс – ключ к тому, чтобы тебя любили пользователи.
За этой простотой стоит постоянная работа немалой 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, подумал о себе: «No bad, not bad, Uklon — это любовь».
Проверяет ли Uklon оценки водителей от пассажиров? Например, я ставлю одну звездочку водителю, потому что не понравилось его поведение, и пишу комментарий. Будет ли ко мне звонок от call-center с попыткой прояснить ситуацию?
Елена Сингай, Product Owner (CRM) в Uklon
Конечно, все отзывы проверяются. Сразу к задаче подключается AI-система, сортирующая эти отзывы по приоритетности, по ключевым словам, по истории отзывов о водителе, по триггерным шаблонам и другим вещам, которые я не могу полностью раскрывать.
- Каждый отзыв проходит приоритизацию. Работа по некоторым отзывам у нас автоматизирована: система может сразу заблокировать такого водителя или информировать его о предупреждении. Также она предоставляет обратную связь клиенту. Если же ситуация экстренная и требует вмешательства человека — такие отзывы помещаются вверху списка, и наши специалисты очень быстро приступают к обработке в порядке критичности отзывов — экстренные первыми.
- Относительно вопроса об оценке-единичке. Если пассажир ставит водителю единицу, система сразу же предложит добавить его в черный список. Ведь единичка – это самая низкая оценка, которая сигнализирует о том, что все плохо, и вряд ли пассажир захочет еще раз встретиться с конкретным водителем. Также отмечу, что водители не видят, кто именно поставил низкую оценку: обычно они получают обобщенный и анонимизированный отчет по оценкам за неделю.
- Также в зависимости от фидбека наш специалист принимает решение: звонить по телефону или нет. От чего же это зависит? Если в комментарии пассажира доступно и понятно описано, в чем именно проблема, в таком случае нет необходимости звонить по телефону: наш специалист связывается с водителем и проясняет ситуацию с ним.
- Если же данных недостаточно, например, пассажир оставил комментарий «Нарушены правила дорожного движения», тогда специалист может позвонить по телефону, чтобы уточнить, что именно произошло. Ведь мы, например, видим скорость, с которой двигался водитель, но не можем увидеть, ехал ли он на красный свет.
Как в приложении машинкам удается быть разноцветными и включать свет фар для ночной темы?
Екатерина Николаева, iOS Developer в Uklon и Ростислав Матюк, UX/UI Designer в Uklon
Ростислав:
За ответ на этот вопрос предлагаем «залезть под капот» наших автомобилей и узнать, из чего они состоят. Каждый автомобиль – это фактически набор отдельных слоев изображения, причем для светлой и темной темы эти слои отличаются. К примеру, слой со светом фар отображается только для темной темы в приложении. А слой с тенью от авто только для светлой темы.
Я эти слои отдельно выгружаю и передаю разработчикам, в частности Екатерине.
Екатерина:
Полученные слои в виде PNG-изображений мы загружаем в проект. Далее с помощью методов на основе компонентов SDK мы держим их в единое изображение. Таким образом получаем готовое «собранное» авто, которое и отображается на карте в приложении. Если у пользователя тема в телефоне сменилась темной ночной, она меняется и в приложении, автоматически «включая» слой с фарами: их будто окрашивают из темного на светлый, что дает эффект света. Мы заменяем слой с тенью авто на слой с освещением от фар. Так и совершается магия.
Ростислав:
Относительно того, как автомобилям удается быть разноцветными в приложении, откроем тайну: у нас есть каталог авто, где есть цвета авто, которые чаще всего приезжают к пользователям. У каждого цвета есть подходящий для светлой и темной тем в приложении.
Цветные машинки у нас – не только для красоты, но и для удобства пассажира. Когда машина уже едет выполнять заказ, в приложении отображается ее реальный цвет, так что пользователю проще ее найти. Цвет машин приложение получает из бэкенда тогда, когда водитель принял заказ пользователя.
Как работает динамический тариф? Как цена-спрос изменяется в дождь или снег? А если я включаю все приложения на телефоне и жду того такси, которое первым приедет, это влияет на спрос?
Владимир Андриенко, Head of R&D в Uklon
О динамических ценах
В идеальном мире мы могли бы точно спрогнозировать будущее, но в реальном мире спрос пассажиров – непостоянен, и обеспечивать свободным авто всех желающих – задача не из простых. У Uklon за динамические цены отвечает отдельный сервис. Его главная задача: сбалансировать спрос и предложение и предоставить возможность заказать автомобиль в любой момент.
Как это работает
- С одной стороны, есть спрос пассажиров. Для прогнозирования того, сколько и в каком районе города возникнет запрос на поездки, сервис Uklon использует AI-алгоритмы. Они учитывают исторические данные в геовременном разрезе, прогноз погоды, общую динамику поведения пассажиров за последние 5, 10, 15 минут. И на основе этих данных прогнозируется количество заказов на ближайшее время для каждого условного района города.
- С другой стороны есть предложение: водители, которые в этот момент готовы выполнять заказы.
Таким образом, получаем прогноз заказов пассажиров и данные о доступных водителях в эту минуту. И если, например, растет спрос в конкретной локации, то срабатывает динамический коэффициент, который помогает привлечь туда дополнительных водителей.
О вызове в нескольких приложениях одновременно
Если вы вызываете авто в, например, трех приложениях, вы «бронируете» себе водителя в каждом из них. Добавки независимы между собой, поэтому спрос не повышается. При отмене двух из трех заказов эти водители будут вынуждены искать новый заказ, уже потратив время и топливо на путь к вам.
Программа автоматически определяет, что водитель прибыл? Как она это делает? Тот же вопрос и по поводу ожидания
Александр Назаренко, Product Owner, Driver team в Uklon
То, что драйвер (водитель) прибыл на место, определяется в приложении вручную. После этого автоматически начинается ожидание, или, как мы говорим «простой». Сначала несколько минут бесплатный, затем платный. Сервис позволяет водителю сообщить о своем прибытии только тогда, когда автомобиль действительно находится рядом с координатами точки подачи.
Почему это пока происходит вручную? Автоматизация должна учитывать как координаты пассажира при оформлении заказа, так и постоянно двигающегося водителя. И есть целый ряд кейсов, когда совпадение этих координат еще не означает, что авто на месте:
- нестабильность и хаотические «скачки» координат водителя, в частности во время военного положения;
- драйвер проезжает мимо места подачи через дорогу, например, чтобы развернуться;
- райдер неправильно установил пен (точку подачи), и драйверу нужно дополнительно уточнять, куда подавать авто и т.д.
Поэтому мы двигаемся в сторону полуавтоматизации, когда будем подсказывать водителю, что он близок к пассажиру, и переносить кнопку изменения статуса ближе, например через виджет. Чтобы водитель мог отметить, что уже прибыл на место, даже находясь в другом приложении. Но в любом случае изменение статуса решает водитель.
После того, как пассажир сел в автомобиле, водитель вручную отмечает, что они начинают двигаться по маршруту. После этого простой выключается. Если вы спросите: «А если водитель забыл сообщить о начале движения, и просто будет считать, даже когда пассажир уже в авто?». Такое невозможно, ведь система увидит, что авто двигается, и выключит простой. Простой также будет выключен при отсутствии координат от драйвера при выключении приложения или отсутствии интернет-соединения.
Во время поездки у водителя можно вручную включить простой для случаев, когда клиент, например, просит остановиться и подождать его возле магазина.
Мы постоянно улучшаем процесс выполнения заказов и, в частности, процесс изменения статуса поездки. Также планируем новые фичи, которые помогут водителям своевременно обновлять эти статусы.
Правда ли миф, что в зависимости от марки телефона сервисы такси меняют цены? К примеру, пользователи iPhone получают высший прайс за заказ?
Роман Петрик, VP of Product в Uklon
Очень интересный вопрос, не задумывался о таких кейсах. Сам пользуюсь iPhone, но есть и тестовый Android. Так что я сам решил в приложении проверить гипотезу об изменении цены в зависимости от бренда и операционной системы смартфона. Для этого просчитал стоимость одинаковых поездок для обоих устройств (iOS & Android):
Результат: по всем маршрутам цена не отличалась. То есть, в приложении Uklon стоимость поездки не зависит от модели или операционной системы смартфона.
Цена для пользователей всегда одинакова, если не используются динамические коэффициенты. Кажется, автор этого вопроса любил кататься перед комендантским часом, когда как раз за счет коэффициента тариф увеличивался :)
Просто интересно: когда добавляешь одну функцию в приложении, сколько времени уходит на работу команды и сколько людей над этим работает?
Сергей Гришков, Chief Product Officer в Uklon
Чтобы разобраться, сколько времени у команды уходит на работу над определенной фичой, для начала расскажу о нашей структуре.
У нас 11 кроссфункциональных команд, отвечающих за разработку определенных приложений. Внутренних продуктов Uklon более 50, и они отвечают за часть бизнес-логики. Это может быть сервис распределения заказов, расчет стоимости или коэффициента и т.д.
Над фичей могут работать от двух до 11 команд в зависимости от сложности самой фичи и проекта. От двух – потому что мы используем микросервисную архитектуру, и соответственно у нас много бэкенд-сервисов. Также есть и фронтенд-разработка, включая мобильную. А значит, даже для небольшой фичи должна работать мобильная и бэкенд-команды соответствующего сервиса и добавляемой логики.
Возьмем для примера процесс работы над сложной фичей и простой. В качестве сложной возьмем новый продукт «Доставка»: над ним работало 10 команд. Это проектная задача, требующая добавления логики в большинство имеющихся сервисов, от клиентского приложения и до водительского. Это работа и с процессом заказов, и с добавлениями фидбеков, оценок, ценообразования, она пронизывает весь наш комплекс, большинство наших сервисов.
Если же возьмем более простую опцию «Еду с животным», здесь были привлечены три команды:
- райдерская (клиентская) команда работала над тем, чтобы в приложении вы имели возможность выбрать эту опцию;
- бэкенд-команда прорабатывала запрос, делала наценку и добавляла во флоу-заказ эту дополнительную опцию;
- драйверская (водительская) команда отвечала за то, чтобы водитель увидел, что заказ включает в себя перевозку животного, и был готов его принять.
Стандартно бэкенд-релиз фичи в плановом режиме – это 7-8 рабочих дней. Если все делаем кратчайшим путем, это может быть от нескольких часов до нескольких дней.
Обычно плановая продуктовая разработка – от одной недели до нескольких месяцев, в зависимости от сложности фичи и кроссфункциональных зависимостей, которые она создает.
Насколько быстро работает кнопка SOS?
Елена Сингай, Product Owner (CRM) в Uklon
Кнопка SOS работает мгновенно. Как только человек нажал кнопку и подтвердил, что в опасности как минимум двум людям из команды поддержки пользователей поступает сообщение об этом.
Пропустить его невозможно: оно перекрывает рабочее пространство на компьютере.
Наш эксперт сразу подключается к этому тикету, и будет звонить по телефону пассажиру, чтобы узнать, что произошло. Задаст контрольные вопросы, на которые можно отвечать «да» или «нет», не прибегая к деталям. После этого оператор вызовет полицию или предоставит клиенту какую-либо другую помощь. Это все занимает 10-15 секунд. Колцентр работает 24/7, поэтому сообщение 100% кто-нибудь увидит и поможет.
За время существования этой функции еще не случалось каких-либо экстренных случаев. Бывало, что ребенку дали телефон и он нажал кнопку, или сам пассажир нажал ее случайно. Были и люди, которые хотели проверить скорость реакции нашего колцентра: наша команда реагировала очень оперативно. Но такого не делайте, не надо — мы сами мониторим и тестируем оперативность колцентра нашим внутренним отделом качества;)
Как вы работаете с базой клиентов? Кто ваши клиенты и сколько они живут в сервисе?
Елена Орлова, Head of CRM в Uklon
В работе с нашей клиентской базой мы всегда стараемся соединить эмоциональные и финансовые преимущества для обеих сторон как клиента, так и компании. Мы много времени уделяем исследованию поведения наших клиентов, например:
- Дата-аналитики команды маркетинга помогают с регулярной аналитикой каждого нашего пользователя. Речь идет о классическом RFM-анализе, который показывает, как давно/как часто клиент пользуется сервисом Uklon и сколько денег тратит. И все это зависит от города, где проживает наш клиент.
- Время от времени запускаем опрос на пользователей, помогающих лучше понять, почему они ведут себя так или иначе. К примеру, кто-то заходит в приложение Uklon, просчитывает стоимость, однако не вызывает авто. После опроса мы смогли четко понять, с чем это связано: кто просто приценивался без необходимости ехать именно сейчас, а кто выбирал лучшую цену на рынке.
- Команда data science помогает нам с микросегментацией базы клиентов и churn prevention-моделью (churn – это анализ оттока клиентов). Анализируя более 30 параметров в churn-модели, мы понимаем, кто из клиентов с высокой вероятностью склонен уйти из нашего сервиса. А микросегментация дает понять лайфстайл наших пользователей в зависимости от того, куда они ездят: будь то hard worker, клиент с ребенком или тусовщик.
Благодаря этому мы понимаем полный жизненный цикл нашего клиента (будь то новый или стабильный клиент), его привязанность к сервису и вероятное поведение в зависимости от стиля жизни. Среди наших обязательных метрик есть LTV: время, которое пользователь проводит от первой до последней поездки. В среднем он составляет более двух лет.
Зная клиента, наша CRM команда может предлагать ему дополнительную ценность в сервисе. Ведь каждому, кроме качественного сервиса, хотелось бы чувствовать заботу компании: будь то напоминание, что мы работаем даже в трудные времена, или поощрение скидкой.
Большинство алгоритмов работы с клиентами работают автоматически. У нас таких алгоритмов ориентировочно 400 в зависимости от типов пользователей, городов и мессиджей. Они помогают мотивировать нового клиента, например отправляя ему приветственное сообщение с приятной скидкой. Или удержать клиента, который начал реже заходить в приложение, мотивировать его остаться с нами.
Именно таким взаимодействием нам удается как можно дольше оставлять пользователя в сервисе и мотивировать пользоваться им.
Как приложение подтягивает место назначения поездки и улучшается ли этот механизм? На днях не смогла вызвать Uklon в адрес Львова, потому что в поиске было только название моей улицы в других городах.
Максим Гарнец, Application Architect/Tech Lead в Uklon
В приложении пользователь видит единственное поле для ввода адреса. Но под капотом у нас отдельный сервис автокомплита, который ищет и находит все совпадения с введенным запросом, даже с учетом ошибок. Он учитывает и популярность адресов (чем популярнее адрес, тем выше он в списке предложенных вариантов). Автокомплит учитывает и синонимы: старые или альтернативные названия улиц, станций метро.
У нас есть собственная база адресов, над усовершенствованием которой работает целый штат картографов. Представьте себе карту Украины – это миллионы адресов, которые необходимо обновлять каждый день. Картографы вносят изменения в свою базу, затем они автоматически переносятся в сервис автокомплита.
Что касается улучшения подтягивания места назначения: планируем внедрить усовершенствование под рабочим названием «Возможно, вы имели в виду?». Идея в том, чтобы предлагать пассажиру адрес, который они искали под другим названием. К примеру, если пользователь вводит «Кудашово», автокомплит не находит адреса, пользователь изменяет запрос и выбирает базу отдыха. Мы проанализируем историю этого запроса — и в будущем по запросу «Кудашово» будем сразу предлагать базу отдыха.
Если же вы не смогли найти в приложении своего адреса, можно сообщить нам об этом, нажав кнопку «Сообщить об отсутствующем адресе». Этот запрос поступает команде картографов, они проверяют адрес, и если он реальный – добавят его в базу. И уже на следующий день она появится в приложении.
Между нажатием на кнопку вызова и поездкой обычно проходит несколько минут. За этой простотой скрывается много интересных, сложных и неочевидных механик, работающих на то, чтобы машины находились вовремя, а драйверы и райдеры были довольны поездкой.