«Магнит» совершенствует сервис доставки: новые алгоритмы определяют лучший магазин для вашего заказа
Меня зовут Александр, я CDO в «Магнит Фудтех» — одной из вертикалей «Магнит» OMNI, где мы развиваем собственный сервис доставки и самовывоза продуктов из магазинов, а также партнерский сервис доставки товаров из «Магнита» агрегаторами. Помимо «Магнит Фудтех», в контур OMNI входят еще два направления: маркетплейс «Магнит Маркет» и программа лояльности «Магнит Плюс».
Когда вы заказываете товары на сайте и в приложении, сервис доставки привозит их из магазинов «Магнит». Раньше для сборки заказов выбирался ближайший к покупателю магазин. Причём ближайший в буквальном смысле — по прямой. Это позволяло экономить на курьерах, но во всех магазинах разное количество сотрудников и ассортимент: где-то заказы собирали дольше, а где-то, из-за отсутствия определенных товаров, позиции в заказе меняли на аналоги. Поэтому мы решили поменять логику выбора магазинов, провели в нескольких городах пилотный проект и делимся первыми результатами.
Новый алгоритм
Сначала мы пробовали использовать обновленный алгоритм выбора офлайн-точек, чтобы просто убирать из доступных магазинов те, в которых слишком часто бывали отмены заказов или замены позиций. А потом перешли к более сложной схеме. Когда покупатель оформляет заказ, мы не направляем его в ближайший магазин, а сначала анализируем ключевые метрики за последние N дней для каждого магазина в определенной мультизоне. Это зона, внутри которой идет подбор доступных магазинов для клиента. Таким образом мы анализируем:
долю отмен сборки заказов;
долю опозданий доставки;
ширину ассортимента;
долю идеально собранных заказов (в которых не удалены и не заменены позиции).
Вычислив средний балл, мы добавляем «штраф» за удалённость от клиента. Получаем рейтинг магазинов, из которого берём первый — с наивысшим баллом.
0,38 — ближайший магазин, 0,76 — более релевантный магазин, согласно метрикам
Изначально расчёт метрик планировалось делать прямо в бэкенде и чуть ли не в реальном времени. Но это потребовало бы нескольких месяцев труда, поэтому большую часть логики мы вынесли в аналитические инструменты, где усреднённые баллы магазинов рассчитываются один раз в день. В бэкенде оставили только логику применения. В результате вместо пяти запланированных месяцев мы запустили пилот всего за месяц.
Со стратегической точки зрения новый алгоритм должен был помочь нам повысить лояльность клиентов. Во-первых, больше заказов будет собираться без замен или отмен, а, во-вторых, меньше задержек при сборке. Как итог: люди чаще будут довольны покупками, и вероятность повторного использования нашего сервиса становится выше, примерно на 1 процентный пункт. Кроме того, идеально собранные заказы помогут поднять средний чек.
Что мы получили в результате теста
Честно говоря, при запуске мы опасались, что длительность доставки увеличится. Но произошла компенсация: средняя дистанция доставки выросла на 500 метров, зато курьеры стали брать за один рейс больше заказов и реже возвращаться в магазины за новой партией (доля рейсов, в которых больше одного заказа, стала на 20% выше). В результате длительность доставки увеличилась всего на 4 минуты, а доля отмен снизилась на треть.
Назначение заказов на магазины с высоким баллом привело к дополнительному неожиданному эффекту: так как хорошие магазины с точки зрения сборки имеют более качественные операции, у них также более точные данные про наличие товаров, что позволило увеличить доступный пользователям ассортимент на 7,5%.
Следующие этапы
Далее мы хотим уйти от усреднения четырёх метрик и выбирать магазин для выполнения заказа в зависимости от финансового эффекта от этого назначения. Для каждого магазина в мультизоне пользователя будет рассчитываться балл и определяться магазин с лучшим результатом. Для этого будем учитывать:
стоимость доставки из конкретного магазина;
средний чек внутри конкретной географической зоны;
маржинальность;
с помощью модели машинного обучения начнём рассчитывать вероятность отмены заказа и прогноз успешности сборки на основе недавней статистики (ассортимент, складские запасы, заполненность штата).
У нового подхода есть побочный эффект: в некоторых зонах мы получили снижение количества выполняемых заказов в час по пешим курьерам, потому что увеличилось расстояние доставки. Чтобы решить эту проблему, ввели в таких зонах повышенные штрафы за дистанцию в скоринге.
Ещё одна теоретическая ситуация, которая может возникнуть: мы можем привезти в определённую точку большие запасы товаров из расчёта, что их выкупят крупные клиенты, но при переключении магазинов модель может перенаправить такие заказы в другие места. Это может произойти, если, по каким-то причинам, у хорошего в магазина снизились показатели. Например, увеличилась нагрузка в оффлайне и стало меньше времени на сборку онлайн заказов. В итоге крупные клиенты могут столкнуться с дефицитом товара, так как складских запасов в других точках просто не хватит.
В новой версии алгоритма планируем учесть все эти ситуации, как и нюансы ценообразования, синхронизировав работу разных сервисов компании, отвечающих за склады, доставку, персонал и другие направления.
Вернемся на Хабр с результатами, следите за обновлениями!