ВкусВилл х Шампиньоны
shamps { team }На выходных мы выиграли в Хакатоне «Помоги даркстору» от ВкусВилл х ИТМО
Задача была такая:
Оптимизировать процесс инвентаризации в дарксторе. Когда мы первый раз прочитали кейс, то тоже ничего не поняли :)
Объясняем:
Инвентаризация — это процесс пересчета товаров на складе.
Работает все примерно так:
→ Поступает сигнал о необходимости пересчета
→ Товаровед проверяет полки, чтобы убедиться, что данные в системе интернет-магазина соответствуют фактическому количеству товаров в дарксторе
→ Если товара нет на полке, заказ покупателя приходится отменить.
Никто не хочет расстраивать покупателей, но и тратить время сотрудников на бесконечные пересчеты товара бизнес тоже не готов.
Так и появилась задача на хакатон — сделать так, чтобы покупателям как можно реже отменяли заказы, а товароведы тратили минимум времени на инвентаризацию.
Рассказываем, как мы пришли к решению!
Действие первое:
От «Как это устроено сейчас?» до «А что, если...»
Сейчас у ВкусВилла есть несколько типов инвентаризаций. Одни инициируются автоматически по триггеру, другие запускаются сотрудниками вручную.
Глобально, существующее решение имеет две проблемы:
- Триггеры инвентаризаций не учитывают специфику каждого SKU (единица складского учета)
- Задачи по инвентаризации не ранжируются по степени важности
Мы предположили: Если для каждого SKU определить степень необходимости его пересчета, то процесс инвентаризации станет более эффективным и менее затратным.
Действие второе
Во всякой ж̶и̶з̶н̶и̶ инвентаризации, как и во всяком деле, главное — это определить главное.
Итого, мы решили ввести систему рейтинга приоритетности инвентаризации. Он рассчитывается индивидуально для каждой учетной единицы на основе ряда параметров и их значимости.
Вот эти параметры:
• Единица измерения
• Время на инвентаризацию
• Срок хранения
• Оборачиваемость
• Частота корректировок
• Время на поиск товара на складе
• Δt с последней инвентаризации ✓
• Среднее количество штук в заказе ✓
• Количество на складе ✓
В нашем представлении правильная расстановка приоритетов — ключ к успешной работе. Ранжирование товаров по рейтингу помогает сконцентрировать внимание товароведов на самый уязвимых местах, а также оптимизировать процесс инвентаризации.
Действие третье
Объяснение на «Агуше»
Выше мы уже объявили проблему того, что текущие триггеры инвентаризаций не учитывают особенности каждого SKU. Но нужно ли вообще обращать внимание на эти нюансы?
Наш ответ — определенно да! Оказалось, что мыслить общими категориями — очень вредно для эффективности инвентаризации. С таким подходом факторы, которые чаще всего приводят к расхождениям между фактическими остатками на складе и данными в системе, остаются без внимания, из-за чего приходится постоянно вносить корректировки в систему учета.
Например, детский сок Агуша. Сейчас триггер на инвентаризацию по последним штукам срабатывает, когда на полке остаётся от 1 до 3 единиц товара . Но сок Агуша, чаще всего, покупают по 4 упаковки за раз. Так и получается, что этот тип инвентаризации не решает проблему несобранных заказов, которые не дошли до своих покупателей из-за недостатка Агуши на складе.

Действие четвертое
Идея есть, осталось ее реализовать...
Подобрать коэффициент значимости этих параметров для каждого товара — задача со звездочкой, поэтому мы решили...освоить ML за 12 часов...
Удивительно, но у нас и правда получилось! Мы даже успели сделать прототип с крутой визуализацией (смотрите видео в посте).
Эпилог
То, что мы успели реализовать в прототипе — всего лишь набросок нашего решения. В реальности все устроено гораздо сложнее, ведь машинное обучение — невероятно сложная штука, для которой нужно больше времени и данных .
Тем не менее мы уверены, что наш подход к инвентаризации действительно имеет большой потенциал и способен повысить экономическую эффективность ритейла за счет поиска оптимального баланса между временем, затраченным на выполнение задач, и количеством несобранных заказов:

Все, кто осилил последний абзац, — молодцы!
Остальные тоже не расстраивайтесь!
Если ничего не понятно, но очень интересно, то советуем посмотреть видео с прототипом :3
Задача была такая:
Оптимизировать процесс инвентаризации в дарксторе. Когда мы первый раз прочитали кейс, то тоже ничего не поняли :)
Объясняем:
Инвентаризация — это процесс пересчета товаров на складе.
Работает все примерно так:
→ Поступает сигнал о необходимости пересчета
→ Товаровед проверяет полки, чтобы убедиться, что данные в системе интернет-магазина соответствуют фактическому количеству товаров в дарксторе
→ Если товара нет на полке, заказ покупателя приходится отменить.
Никто не хочет расстраивать покупателей, но и тратить время сотрудников на бесконечные пересчеты товара бизнес тоже не готов.
Так и появилась цель на хакатон — сделать так, чтобы покупателям как можно реже отменяли заказы, а товароведы тратили минимум времени на инвентаризацию.
А решали мы эту задачу так
Действие первое
От «Как это устроено сейчас?» до «А что, если...»
Сейчас у ВкусВилла есть несколько типов инвентаризаций. Одни инициируются автоматически по триггеру, другие запускаются сотрудниками вручную.
Глобально, существующее решение имеет две проблемы:
- Триггеры инвентаризаций не учитывают специфику каждого SKU (единица складского учета)
- Задачи по инвентаризации не ранжируются по степени важности
Мы предположили: Если для каждого SKU определить степень необходимости его пересчета, то процесс инвентаризации станет более эффективным и менее затратным.
Действие второе
Во всякой ж̶и̶з̶н̶и̶ инвентаризации, как и во всяком деле, главное — это определить главное.
Итого, мы решили ввести систему рейтинга приоритетности инвентаризации. Он рассчитывается индивидуально для каждой учетной единицы на основе ряда параметров и их значимости.
Вот эти параметры:
• Единица измерения
• Время на инвентаризацию
• Срок хранения
• Оборачиваемость
• Частота корректировок
• Время на поиск товара на складе
• Δt с последней инвентаризации ✓
• Среднее количество штук в заказе ✓
• Количество на складе ✓
В нашем представлении правильная расстановка приоритетов — ключ к успешной работе. Ранжирование товаров по рейтингу помогает сконцентрировать внимание товароведов на самый уязвимых местах, а также оптимизировать процесс инвентаризации.
Действие третье
Объяснение на «Агуше»
Выше мы уже объявили проблему того, что текущие триггеры инвентаризаций не учитывают особенности каждого SKU. Но нужно ли вообще обращать внимание на эти нюансы?
Наш ответ — определенно да! Оказалось, что мыслить общими категориями — очень вредно для эффективности инвентаризации. С таким подходом факторы, которые чаще всего приводят к расхождениям между фактическими остатками на складе и данными в системе, остаются без внимания, из-за чего приходится постоянно вносить корректировки в систему учета.
Например, детский сок Агуша. Сейчас триггер на инвентаризацию по последним штукам срабатывает, когда на полке остаётся от 1 до 3 единиц товара. Но сок Агуша, чаще всего, покупают по 4 упаковки за раз. Так и получается, что этот тип инвентаризации не решает проблему несобранных заказов, которые не дошли до своих покупателей из-за недостатка Агуши на складе.

Действие четвертое
Идея есть, осталось ее реализовать...
Подобрать коэффициент значимости этих параметров для каждого товара — задача со звездочкой, поэтому мы решили...освоить ML за 12 часов...
Удивительно, но у нас и правда получилось! Мы даже успели сделать прототип с крутой визуализацией (Смотрите видео в посте).
Эпилог
То, что мы успели реализовать в прототипе — всего лишь набросок нашего решения. В реальности все устроено гораздо сложнее, ведь машинное обучение — невероятно сложная штука, для которой нужно больше времени и данных .
Тем не менее мы уверены, что наш подход к инвентаризации действительно имеет большой потенциал и способен повысить экономическую эффективность ритейла за счет поиска оптимального баланса между временем, затраченным на выполнение задач, и количеством несобранных заказов:

Все, кто осилил последний абзац, — молодцы!
Остальные тоже не расстраивайтесь!
Если ничего не понятно, но очень интересно, то советуем посмотреть видео с прототипом :3
А еще...
[Client GitHub]
[Server GitHub]
[Research & ML]