Всем привет! Меня зовут Вика Большова, я продакт-лид сборки в СберМаркете. Если вы пользуетесь нашим сервисом, то, возможно, заметили, что сейчас мы привозим заказы быстрее, чем в прошлом году. В этом материале я расскажу, как нам удалось увеличить скорость сборки на 20% и сделать условия сотрудничества для сборщиков более data-driven.
![](https://habrastorage.org/getpro/habr/upload_files/e0b/3aa/197/e0b3aa197c29474c7e7f1c8ea3a0a97c.png)
Как было раньше
Думаю, многие догадываются, что у e-com приложений есть и «обратная сторона» помимо витрины для клиентов. Я имею в виду админку и прочие сопутствующие сервисы, которые помогают учитывать, собирать и доставлять товары. Кроме покупателей у СберМаркета есть и другие группы пользователей: ретейлеры, бренды, курьеры и сборщики.
Сегодня расскажу про Шоппер — приложение, которым пользуются наши сборщики. А именно о том, как мы оптимизировали его работу.
До мая 2022 года сборщик заходил в Шоппер, видел список всех заказов и сам выбирал, к какому из них приступить. Мы заметили, что некоторые заказы собирают быстро, а другие могут идти в работу не сразу, и стали копать, в чём тут дело.
Оказалось, что сборщики негласно маркировали заказы как «удобные» и «неудобные». Удобный заказ — самый выгодный с позиции вознаграждения на трудозатраты. Вот его характеристики:
Много товарных позиций. Вознаграждение за сборку заказа рассчитывалось по формуле, привязанной к количеству позиций, поэтому сборщиков интересовали заказы побольше.
Товары лёгкие и компактные. Собирать чипсы и шоколадки гораздо приятнее, чем тяжёлые бутылки.
Мало или совсем нет весовых товаров, охлаждёнки и заморозки. Собирать фрукты, овощи и молочку нужно более тщательно: проверять срок годности и качество упаковки, а также согласовывать с клиентом перевес или недовес.
![](https://habrastorage.org/getpro/habr/upload_files/88a/a97/bb8/88aa97bb817d537ada2dd7686d733f74.png)
Руководствуясь этой негласной системой, опытные сборщики могли бронировать «удобные» заказы. Это влекло за собой ряд незапланированных эффектов:
Некоторые новички теряли мотивацию. Им доставались сложные заказы, которые они собирали медленно и могли допускать ошибки.
Заказы опаздывали. «Удобные» — потому что их откладывали и могли начать собирать не сразу, а «неудобные», потому что их собирали новички.
Как итог было сложно выстроить прозрачную систему аналитики. Мы не понимали, сколько времени по факту уходит на сборку. А из-за этого была закрыта опция мотивации сборщиков на основе скорости, которая помогла бы вознаграждать их более справедливо.
Супервайзерам и старшим сборщикам удавалось частично решить этот вопрос на уровне магазина: они записывали все заказы на листочки, чтобы распределить их по-честному. Однако было очевидно, что система несовершенна, и её необходимо значительно дорабатывать. На помощь выдвинулись две продуктовые команды.
Диспетчеризация
Одна команда взяла на себя задачу улучшить флоу сборки, а вторая начала работать над диспатчем.
Диспатч — это автоматическая система, которая назначает сборщика на основе параметров заказа. Диспатч работает на основе алгоритма first in, first out с поправкой на значительный ряд параметров: габариты, массу, сложность сборки, дедлайн, опыт сборщиков на смене и т. д.
Здесь рассказываю, как работает диспатч
Допустим, заказ должен быть доставлен клиенту в слот с 12:00 до 13:00. Назовём левую границу T1, а правую T2.
Для каждого слота имеется настройка «правило закрытия слота» (ПЗС). В нём учитывается среднее время на сборку и доставку — оно, в свою очередь, определяется для каждого конкретного магазина. Это наша подушка безопасности.
Допустим, в том магазине, откуда мы хотим заказать товары, закладывается 30 мин на сборку и 30 мин на доставку. Тогда ПСЗ равно 60 минут. В этом случае система рассчитывает в качестве рекомендованного дедлайна сборки 11:00. По формуле:
Далее ML-модель на основе исторических данных по магазину прогнозирует время сборки конкретного заказа. Туда входит сборка позиций, уточнения по заменам, оплата на кассе и упаковка. При этом учитываются самые разные параметры заказа, которые указала выше. Вычитая это время из Дедлайна мы получаем Старт — время, когда сборка заказа должна быть начата.
По полученному времени Старта диспатч приоритезирует заказы в очереди на сборку по методу first in, first out. При этом алгоритм с меньшим приоритетом выдает новичкам сложные заказы — если будет свободен опытный сборщик, такой заказ упадет на него.
Вознаграждение сборщиков стало прозрачнее. На этапе оффера им показывают, сумму, которая будет начислена за сборку.
Вознаграждение стало более справедливым, потому что заказы равномерно распределяются на сотрудников точки. Исчезли кейсы с бронированием «удобных» заказов и нежеланием собирать «неудобные».
И главное — у нас наконец-то появилась аналитика, из которой выросла система мотивации.
На этом этапе несмотря на значительные изменения процесса увеличение OPH и снижение средней стоимости сборки было небольшим — на 5% и 3% соответственно. Сам по себе диспатч не ускорял сборщиков, но он был энейблером, то есть необходимым элементом, для будущих разработок.
Два главных нововведения
После того, как мы раскатили диспатч, работа продолжилась в двух направлениях.
#1 Бонусы за скорость
Идея была следующей: когда сборщик берёт заказ, он видит таймер и если он укладывается в отведённое время, то получает бонус. На текущий момент время для таймера считается с помощью ML-модели, но в начале мы использовали упрощенную модель:
х — кол-во позиций;
а — кол-во минут на сборку позиции;
b — время на упаковку и сборки.
A и b определялись по историческим данным для каждого отдельного магазина. Со временем мы заменили формулу на ML-модель, которая лучше учитывает специфику работы магазина от месяца к месяцу. Сейчас в ней учитывется сезонность, соотношение новичков и старичков в смене и изменения в расстановка внутри магазина
#2 Параллельная сборка
Исторически некоторые сборщики собирали по два заказа одновременно, чтобы упростить себе жизнь и больше заработать. Первый собирался через приложение Шоппер, а второй — просто по скриншотам. Удобства в этом было мало.
Мы реализовали фичу параллельной сборки и диспатч научился назначать сдвоенные заказы. Это продвинутый функционал, который доступен только опытным сборщикам. Он позволяет не проходить два раза по всему магазину и не стоять два раза в очереди на кассе. Плюс эта механика сделала процесс сборки двух заказов бесшовным для сборщика.
Эти две функции уже привели к значительному приросту в метриках: OPH увеличилось на 30%, а скорость сборки на 21%.
Lessons learned
Хочу поделиться несколькими уроками, которые мы с командой усвоили в процессе работы над проектом:
Большие автоматизации, которые напрямую меняют важный бизнес-процесс (и в которые инвестированы много сил и ресурсов) не всегда сами по себе дают какой-то значимый эффект в метриках. И это нормально :) Гораздо важнее, что они могут открыть дорогу к новым инструментам и решениям, которые смогут показать значимый результат. Важно не бояться в них идти и аргументировать необходимость таких изменений долгосрочными эффектами.
Не всегда изменение в качестве услуги видно на качественных метриках (например, на оценке клиента). Зато оно может повлечь за собой увеличение или сокращение объема в операционных процессах, которые приводят к изменению затрат на заказ. Например, у нас сократилось количество довозов, когда за сложные заказы стали браться более опытные сборщики.
И самый противоречивый совет (зато от самого сердечка) — иногда не нужно сиюминутно прислушиваться к вашему клиенту. Он может сначала не воспринять улучшения, но вот потом ка-а-ак распробовать.
Сначала диспатч внедрялся со скрипом, как и любое значимое изменение в процессах. Супервайзеры на точках и сами сборщики утверждали, что руками они лучше справляются с распределением заказов и что диспатч нужно убрать. Но через пару месяцев работы все действующие лица осознали, что система сильно упростила им жизнь и уже просили не отключать его, когда нам приходилось делать это точечно для раскатки новых фичей или проведения экспериментов.
Надеюсь, эта история вдохновит вас на крупную автоматизацию в своей компании или поможет критически посмотреть на некоторые процессы. Если у вас остались вопросы о том, как мы реализовали эту автоматизацию, задавайте вопросы в комментариях. Буду рада ответить!
Product&data команда СберМаркета ведет соцсети с новостями и анонсами. Если хочешь узнать, что под капотом высоконагруженного e-commerce, следи за нами в Telegram и на YouTube. А также слушай подкаст «Для tech и этих» от наших it-менеджеров.