С Flor2u мы работаем больше пяти лет — задолго до всей нынешней истории с искусственным интеллектом. А когда сами как следует прокачались в ИИ, естественно захотелось принести накопленную экспертизу и в этот, уже давний и родной, проект. Идей мы притащили немало: одна другой красивее. А по-настоящему полезную в итоге сформулировал сам бизнес — и, как это часто бывает, звучала она совсем не футуристично.
Задача, от которой пахло не будущим, а деньгами
Проблема была простая и оттого неприятная. Flor2u — круглосуточный сервис доставки цветов по России: собранный букет должен приехать свежим и за пару часов. А значит, за витриной стоит закупка живого, стремительно вянущего товара — цветка, то есть скоропорта в чистом виде. Закупали его, как и большинство на рынке, на глаз: по экспертной оценке и Excel, без всякого прогноза, с запасом — чтобы уж точно хватило на все заказы.
Хватало. И даже с лихвой — с той самой, которая не успевала уйти до конца свежести и отправлялась в списание. Арифметика выходила невесёлая:
- около 1 000 000 ₽ списаний в месяц;
- 5% оборота, уходящих, по сути, в мусорный контейнер;
- замороженная оборотка, лежащая в остатках, которые не продаются.
Красиво тут было только одно — размер проблемы. Как раз такой, чтобы за него взяться.
Цель: заменить интуицию на прогноз спроса
Договорились предельно приземлённо: вместо чутья и таблиц — прогнозирование спроса по каждому SKU на горизонте от одной до двенадцати недель, а на его основе — готовая рекомендация по закупке. Не график, не дашборд, за которым нужно сидеть и думать, а конкретная цифра: сколько и когда заказывать. Каждое утро, по каждой позиции.
Наша роль здесь была не столько «обучить модельку», сколько продуктовая и бизнес-аналитическая — от диагностики проблемы до измеримого результата.
Что сделали
Путь от заявки до production уложился в пять шагов.
- Разобрали процесс закупки — от заявки до поставки — и нашли, где именно рождается overstock.
- Сформулировали требования к модели: прогноз по SKU на 1–12 недель плюс расчёт страхового запаса.
- Подготовили данные: история продаж, остатки, поставки, сроки свежести по категориям, lead time поставщиков, праздники, промо и даже зарплатные дни — спрос на цветы, как известно, живёт по своему календарю.
- Обучили модель. Перебрали варианты и остановились на CatBoost — градиентном бустинге, де-факто стандарте российского ритейла на табличных данных. Без экзотики: лаги, скользящие средние, сезонность, день недели, признаки промо.
- Запустили в production — рекомендации прямо в интерфейсе закупщика, с ночным обновлением.
Как это работает: данные → модель → рекомендация
Логика прозрачна настолько, что её не стыдно показать закупщику.
На вход идут история продаж по SKU, остатки и поставки из WMS, сроки свежести, lead time поставщиков и календарь событий. Внутри CatBoost превращает это в прогноз спроса. На выходе — простая и честная формула:
Заказать = Прогноз + Страховой запас − Текущий остаток − Товар в пути
На живом примере: 1000 + 100 − 300 − 200 = заказать 600 штук. Никакой магии — но именно эти 600 штук раньше приходилось прикидывать в голове, а теперь они лежат готовой цифрой.
Что видит закупщик каждое утро
Здесь, пожалуй, и кроется главное. Закупщик открывает не график с доверительными интервалами, а таблицу, где по каждому SKU стоит рекомендация и статус: «Заказать», «Достаточно», «Срочно», «Избыток». Гортензия розовая горит «Срочно» — значит, с неё и начинаем. Эустома в избытке — значит, руки прочь.
Мы сознательно отдали человеку не науку о данных, а её результат. Модель думает — закупщик решает. Разделение труда, при котором обоим спокойнее.
Результат: списания вниз, деньги — в оборот
Сравнили, что было и что стало:
- −35% списаний — упали больше чем на треть.
- Списания в деньгах: с 1 000 000 ₽ до 650 000 ₽ в месяц.
- 350 000 ₽ экономии ежемесячно — это примерно 4,2 млн ₽ в год при тех же продажах.
- Окупаемость проекта — 3 месяца.
Иными словами, склад перестал закупать лишнее, а деньги, прежде лежавшие в вянущих остатках, вернулись в оборот.
Работает без ручного Excel
Чтобы решение не превратилось в очередную табличку, которую кто-то по утрам обновляет вручную, мы поставили его на автопилот:
- Автозагрузка ночью. Airflow каждую ночь выгружает продажи и остатки из ERP, чистит данные и пересчитывает витрины.
- Переобучение и валидация. Модель обновляется на свежих данных и проверяется на качество до того, как попадёт закупщику.
- Мониторинг и откат. Падение точности — сигнал; версии хранятся в MLflow, откат к прошлой занимает минуты.
Конвейер линейный и прозрачный: ERP / 1С / WMS → ETL на Airflow → хранилище → ML-конвейер → рекомендация закупщику.
Что в итоге
Заменили догадки на данные. Склад перестал выбрасывать цветы на треть прежнего, оборотка вернулась в дело, а закупщик — к работе, в которой он решает, а не гадает.
А главный вывод, ради которого стоило потратить пять лет на разбег, такой: самый полезный ИИ-проект — не тот, что эффектнее звучит на презентации, а тот, за которым у бизнеса давно болит. Иногда лучшее, что может сделать подрядчик, — замолчать и послушать, где именно.
