Как справиться с человеческим фактором в ритейле? Товар могут не выставить на полку. Могут выставить повреждённым. Могут забыть поставить ценник или ошибиться в цене. Вариантов очень много, когда по итогу покупатель недоумённо пожмёт плечами и пройдёт мимо — или вообще не найдёт то, за чем пришёл в магазин.


От человеческого фактора страдают все — особенно если сеть крупная и масштаб проблемы размером в сотни магазинов. Производители не могут продать товар — потому что он пылится на складе и не добирается до полки. Магазины теряют оборот и недополучают прибыль. Покупатели не находят то, что им нужно. Все в минусе. Только лишь потому что невозможно уследить за всеми сотрудниками магазинов — всех одинаково замотивировать и заставить каждый день ответственно относиться к обязанностям.


Но так ли непобедим этот самый человеческий фактор? Особенно если подключить ИИ к решению проблемы.


Андрей Дудин, Head of Infrastructure OSA Hybrid Platform, считает, что они нашли решение этой проблемы. И с каждым годом всё ближе и ближе к идеальному результату, когда будут довольны все — и производитель, и магазины, и покупатели.



Расскажи о вашей компании и вашем продукте.


Мы OSA Hybrid Platform. OSA — это ритейлерская аббревиатура On Shelf Availability, метрика доступности товара на полке. Мы получаем фид чеков ритейлеров с касс. И на основе ещё нескольких факторов строим модели и предположения о том, что товара нет на полке.


Зачем мы это делаем? Есть проблема и у ритейлера, и у поставщика, что товара нет на полке. Когда товара нет на полке страдают все.


Страдает покупатель, потому что он хочет купить, но ему не дают этого сделать. Страдает магазин, потому что он арендует эти площади, но их не использует, да и товарооборот снижается. И страдает поставщик, потому что его товар тухнет на складе — его просто не вынесли.


И казалось бы эти проблемы очень просто решить — заставить людей в магазинах работать, оперативно мониторить, выносить товар и так далее. Но это одна из жизненных задач, которые просто не работают и всё. Там многое перекручено — это и определённый уровень персонала, это и большие объёмы компании. Просто невозможно стандартными методами детально контролировать всё.


И тогда на помощь приходят всякие умные машинки типа нас, которые могут делать всё автоматизированно, следить, строить гипотезы. И персонально каждого мерча в магазине попинывать — пойди проверь тот товар, пойди проверь этот товар. И это приносит неплохие результаты в плане товарооборота.


Вы решили не работать с людьми, так как системы мотивации часто работают хреноватенько…


Там уровень персонала такой, что с ними не всегда это работает. Особенно всё, что касается нематериальной мотивации. Мы всё максимально автоматизируем. И строим кучу аналитической отчётности, когда можно объективно понять, насколько хорошо отрабатывают люди. Кроме того, мы даём данные не только людям из ритейла, которые работают в магазинах. Мы даём доступ к данным мерчам поставщиков.


То есть товар могут выставить на полку в магазине не только те, кто там работает, но ещё ряд людей. Например, это мерчи поставщика. Та же «Кока-кола». Если не ошибаюсь, у них есть свои мерчи, которые ездят по точкам и проверяют, чтобы товар был, чтобы ценник стоял, чтобы всё было в порядке и с внешним видом, и с доступностью.


Причин, по которым могут не покупать товар, несколько больше, чем отсутствие его на полке. Например, товар есть, а ценника на него нет. Естественно, часть людей это отпугивает, так как они не знают реальную цену. Или у соседнего товара стартанула промо-акция — тогда основной товар могут не покупать. А зачем, если рядом стоит товар-заменитель за меньшую цену?


Да, понимаю. Например, если у Pepsi акция и бутылка напитка стоит 50 рублей, то зачем покупателю брать Coca-cola за 90 рублей. Не всегда покупателю принципиально, что Pepsi чуть слаще, а Кола обладает другим спектром вкуса.


Да. Верно. Ещё это касается дешёвого пива. Которое в принципе одно и то же — только на банках картинка разная.


И как долго вы этим занимаетесь?


На самом деле занимаемся больше пяти лет с переменным успехом. У нас были разные варианты. Разные модели.


И сейчас мы, как я вижу, на финишной прямой, чтобы сделать это решение прямо идеальным. У нас менялась архитектура, менялись подходы. Когда-то мы пытались не влезать внутрь ритейлера, а сейчас мы направлены на то, что не просто забрасывать им алёрты, чтобы они могли смотреть и быстренько всё отрабатывать…


Сейчас мы идём ближе к тому, чтобы менять бизнес-процессы в ритейле. То есть когда мы заходим, то мы не просто говорим: «Вот вам web-мордочка». А мы можем сказать, например, что здесь у вас слишком много виртуальных стоков. Когда товар по базе есть, а по факту его нет. Как такое может быть? Или товар украли. Или он стух — и его не хотят списывать по какой-то причине. Понятное дело, когда ты что-то списываешь, для тебя это идёт в убытки. И падают KPI, рейтинги. И потому не все и не всегда это делают.


То есть вы ловите на ухищрениях и магазины?


Конечно. Потому что остаток товара в магазине на складе — это достаточно важный показатель. Если товара нет на складе, то мы и алёртить не будем. Продавать нечего — и то, что его нет на полке, это логично. А вот если товар числится на складе, на полке его нет, его не покупают — вот это проблема, которую мы стараемся решить. Чтобы товар этот вынесли, чтобы его проверили и так далее.


Мы алёртим не только о том, что товара нет. Мы можем алёртить, что с товаром что-то не так. Мы видим, что товар должен продаваться, но он не продаётся.


Когда люди идут проверять товар, открывают web-мордочку, и в подтверждение они не только закрывают алёрт, но и пишут, что было с товаром не так:


  • Не было ценника.
  • Неверный ценник.
  • Не было товара.
  • Товар испорчен.
  • Проблемы с упаковкой.
  • С товаром всё ок.

Плюс дополнительно проверяющий прикладывает фотографию с товаром.


Фотография — это тоже один из методов борьбы, чтобы мерчи делали реальные кейсы. Потому что поначалу было очень много случаев, когда сотрудник приходит на работу в районе 7-9 утра, и у тебя сразу вал закрытых алёртов, мол, мы всё проверили. За 15 минут в каждом магазине! И потом ситуация в самом магазине никак не меняется. Мы следим после отработки кейса, когда пошла первая продажа.


Бывает — оп — ничего не изменилось. Оказывает, мерч утром пришёл, прокликал в web-интерфейсе, что всё хорошо. И всё. На этом его работа закончилась.


Потому ввели фотографии. С ними были тоже всякие приколы, когда люди фотографировали, что попало. Поначалу фотографировали себя, бывало фотографировали пол или потолок.


Когда у тебя 2-3 тысячи магазинов, вручную всё это не проверишь. Какое-то время это было у нас в таком виде. И совсем недавно выкатили новый механизм, который валидирует, что на фотографии действительно есть товар. На фотографии мы автоматически ищем название товара, на который был алёрт. Это может быть ценник, может быть упаковка, этикетка. И это дало хороший результат, чтобы провести скоринг магазинов и дать рейтинг мерчам — кто плохо работает, кто хорошо.


Сколько у вас в компании людей?


У нас до 100 человек. Самих мерчей человек десять. Основная масса отработки наших алёртов происходит силами либо ритейлера, либо поставщика. То есть мы здесь координация и мозг. Соединить всех, друг с другом подружить — и говорить, кому что делать.


Если какой-то мерч забивает на работу, вы кому сообщаете? Его работодателю?


Конечно. У нас идёт эскалация по разным уровням. И важно понимать, что сети сами заинтересованы в этом. Когда мы заходим в сеть, решение, что работаем с OSА, что ритейлер работает с нами и принимает наши алёрты — это решение спускается сверху на руководителей регионов, магазинов. Мы не просто сервис сбоку, мы стараемся максимально интегрироваться в сеть.


С другой стороны, по-другому и не получится. Если руководство не заинтересовано, то сами мерчи добровольно это делать не будут.


Как бизнес реагирует на такие нововведения?


Поначалу было тяжело. Пока ритейлеры не понимают с чем мы приходим, они не очень на всё это реагируют. Особенно когда ты приходишь, тебя никто не знает, а ты говоришь: «Я на уровне всей сети вам всё зарешаю».


Но со временем, когда мы поработали с одной сетью, с другой… Мы работали с «Азбукой вкуса», с «Метро». А сейчас у нас две основные крупные сети — это «Магнит» и «Дикси». Связи накапливаются. Кто-то на конференциях говорит, мол, вот мы работает с «Осой». Мы повысили показатели на столько-то. Сарафанное радио в этом бизнесе работает лучше, чем где либо.


Такие сети очень крупные — и потому они неспособны быстро у себя что-то менять, пока полностью не уверены в этом решении.


У нас на интеграцию уходит порядка 2-3 месяцев. Нам должны начать лить достаточно мощный поток данных.


Самый объёмный тип данных — это чеки с касс. Причём необходимо это лить оперативно. Самое долгое — это раз в час. Потому что мы работаем практически в риалтайме, а мы должны понимать картину в магазине тоже в риалтайме. И не все сети могут выдавать такие потоки информации. Где-то из-за безопасников преграда. Где-то нужна допразработка, а они не имеют в текущий момент для этого ресурсов. Пока мы не решим все проблемы интеграции, мы не можем выдавать в полную силу результат. Например, не дают остатки в магазине. Мы, конечно, по чекам можем что-то определить и анализировать. Но пока мы не видим, что там в остатках, мы не можем применить очень много алгоритмов.


Расскажи об итерациях вашего продукта. Что было раньше, что стало сейчас?


Поначалу, когда я пришёл, это система была сильно меньше, чем сейчас. На двух базах данных крутилась. Это был PostgreSQL и Apache Cassandra. Два немножко разных продукта. Один продукт — это была сама «Оса», аналитика чеков, запуливание алёртов и получение обратно результатов. И второй продукт — collaboration office, где была разная отчётность. Чтобы люди в офисе — управляющие разных магазинов — могли видеть, что происходит, как идут продажи. Разного рода графика и аналитика.


То есть вы создавали аналитику для топ-менеджмента магазинов?


И для поставщиков. Да.


Потом были сильные изменения в плане архитектуры и технических подходов. Я топил за то, что нам нужен риалтайм. Чем можно удивить такие крупные интерпрайзы, как ритейл? Это действительно тем, что отчёт у тебя готов вот прямо сейчас и сразу.


Мы сильно развернули направление нашего развития. Перешли на ClickHouse. Сделали единый продукт — и практически создали его с нуля. У нас получилась та же OSA с теми же графиками, только в одном интерфейсе плюс мобильное приложение. И всё это близко к риалтайму. Сейчас у нас только одно ограничение — скорость выдачи данных самим ритейлом.


А мобильное приложение? Какая у него функциональность?


Нюанс в том, что когда мерчи работают в магазине, далеко не всегда есть качественная связь. Поэтому нужен офлайн режим. Нам необходимо было максимально ограничить функционал, но при этом дать всё нужное, чтобы буферизировать. Чтобы когда мерч вышел из полуподвального помещения на улицу, он мог синхронизировать данные с нами. Потому что без хорошей связи мы теряли очень много отработок.


Мерч может полностью в офлайн режиме отработать магазин. Затем он может выйти на связь и одним пакетом скинуть данные на наши сервера. И дальше мы уже обрабатываем.


Что планируете?


Развитие происходит постоянно. Мы всё время что-то пилим. В основном это два направления. Это совершенствование наших алгоритмов, чтобы они могли подстраиваться под разные запросы клиентов. У одного товара достоверность кейсов должна быть 90%. А у другого хорошо работает даже с 60%. Вот эти всякие тюнинги — это в будущем. Плюс увеличиваем количество факторов, которые мы будем учитывать.


Вот один из примеров.


Есть с магазином рядом какой-нибудь стадион — и мы знаем, чтобы там будет футбольный матч. Мы можем заалёртить: «Ребята, закупайте воду, пиво и всё подобное. Потому что у вас всё это разберут перед матчем».


К этому мы стремимся. Будем учитывать культурные и спортивные события рядом с магазинами. Учитывать погоду. Например, на выходные прогнозируют жару, мы тоже алёртим: «Подвозите воду, мороженное. Всё сметут».


Планируем работать ещё с тонограммами. Чтобы человек не только мог ходить и проверять, что товар есть на полке и с ним всё хорошо, но и то, что товар стоит именно на своём месте. Потому что место тоже играет роль.


Например, такие знаменитые опыты. Поставить пиво рядом с подгузниками — и продажи пива возрастают.


Есть такие инсайты порой, что даже удивляешься: «Да ладно, быть не может. Оно так работает?»


Расскажи, к примеру, что вы увидели в последнее время, какие выводы и данные дают ваши аналитики. Какой-нибудь пример.


Ну, вот недавний кейс. Он немного путано звучит, но при этом очень хорошо показывает взаимосвязи и может повлиять на рост продаж.


«Замороженная капуста брокколи определённого бренда продаётся лучше, если тот же покупатель берёт замороженную цветную капусту этого же бренда, но хуже, если покупатель берёт замороженные овощи других брендов, причём неважно, капусту или овощные смеси или грибы».


Такие вот абсолютно неявные взаимосвязи, которые при правильной отработке могут дать прирост в продажах и изменения в размещении товаров.


Ты говорил, что используете ИИ в обработке всех этих данных.


Да, у нас искусственный интеллект — это как раз аналитика. Прожевать все эти потоки данных.


Что он делает? На чём он учится?


Мы при интеграции запрашиваем около полугода данных из прошлого, чтобы обучить машинку, чтобы она могла понять, какой товар как продаётся, что на него эффектит. И уже на основе этого происходит обучение — и машинка начинает работать. В принципе, это не всегда обязательно. Бывают похожие сети. И мы можем начать с того, что обучить на одной торговой сети и применять на другой. Но естественно, чем более настоящие данные, тем точнее мы работаем.


Вообще для нас сильно важна точность. Когда обучаешь машинку, она работает совсем не так, как мозг. Если мозг понимает, что эти данные примерны, и он может некую эвристику сделать, то для машинки это сложновато. Она любит очень точные данные, чтобы строить точные гипотезы.


Сколько вы «машинку» пилили?


Она совершенствуется всё это время. Мы меняли алгоритмы, меняли подходы. Первое время мы работали просто на Python. Потом у нас появился Apache Spark. Тогда ещё появился Spark on Mesos. Потом у нас поменялась немножко архитектура, и мы ушли от просто Spark on Mesos — и перешли на standalone clusters. Сейчас основной стек — это Spark, standalone.


Скажи, какие ты узкие места видишь? У вас и у ваших клиентов.


На 2020 год у нас планы, что мы будем очень сильно масштабироваться. И узкие места могут быть в том, что нам не хватает людей. Потому что на рынке не так просто найти компетентных людей. А мы росли из стартапа — и было любопытно наблюдать, как поначалу не хватает экспертизы просто люто. Но потом постепенно часть людей с низкой экспертизой вымываются. Приходят новые люди со своей экспертизой и подходами — и сейчас я уже понимаю, что сейчас надо искать долго и упорно компетентных людей.


И я сейчас вижу, что рынок не так уж и полон. Если два года назад мне было вполне нормально выйти на HH, пульнуть вакансию и просто успевать собеседовать, то сейчас уже совсем не так.


Когда ты выходишь в сложную Big Data, там всё сильно скуднее.


Вот может интервью на Хабре поможет тебе найти таких людей. Вот скажи, какого человека ты хочешь увидеть в своей команде в этом 2020 году.


Нам очень нужны ребята на ETL. На транспорт данных от ритейла к нам. Такая, достаточно фуллстечная вакансия — это люди, которые знают С#, смогут разобраться в Python, потому что есть наследие, и которые классно умеют работать с базами — в основном это ClickHouse и PostgreSQL. Чтобы понимали, как это работает. Почему мы применяем ClickHouse, почему мы применяем PostgreSQL. Почему мы делим данные между этими двумя базами. И, наверное, на ClickHouse сейчас прям жара, людей нету.


Многие компании узнали про него, хотят, ставят себе, колются им, теряют данные. Но реально очень мало спецов по нему, которые бы досконально знали, как с этим продуктом работать. Потому что когда-то попытались просто спрыгнуть с Cassandra на ClickHouse с теми же подходами — естественно, мы очень сильно обломались.


Почему вам PostgreSQL не подходит, раз вы хотите перейти? ??


Он подходит не для всех данных. Грубо говоря, хранилище больших данных мы строим на ClickHouse, не на PostgreSQL. Потому что мы гоняем много разной аналитики. И ClickHouse намного круче. Прям в десятки раз круче, чем PostgreSQL, в плане аналитики больших данных.


То есть у вас будет работать параллельно и то, и другое.


Да. Потому что часть функционала требует транзакционности и таких типичных подходов. Оно на ClickHouse никак не наедет, да и смысла особого нет. Там своя ниша. А мы стараемся не смешивать.


По сути, если посмотреть на ритейлера, он сам всё это может сделать. Потому что каких-то данных недоступных ритейлу мы не берём. Большая часть данных на которых мы строим аналитику — это всё данные ритейла. И если бы он захотел, он бы мог сам всё это построить…


Но.


Но это отдельная команда, вложения в разработку. Они не хотят тратить деньги на всю эту инфраструктуру. Вообще всем этим заниматься. Потому что для них это выйдет сильно дороже. А мы на одном только ClickHouse экономим место невероятно. Это просто волшебная коробочка, которая творит чудеса.


Расскажи о чудесах. Что там такого технологичного?


Технологически — этот NoSQL колоночная база данных, которая приспособлена для аналитики. Яндекс её писал под Яндекс Метрику.


Я являюсь практически фанатом ClickHouse, настолько классно она подходит под наши задачи. Когда мы пришли в тупик с нашей бывшей архитектурой, был выбор, куда шагнуть. Либо шагнуть в пропасть Hadoop и всего этого стека. Ещё думали масштабировать PostgreSQL под Big Data. Или же нужно было искать что-то новое. Я тогда был категорически против идти в Hadoop.


Я на неделю ушёл в офлайн — искал, перебирал, пробовал. И потом на глаза попался ClickHouse — я ездил на различные митапы, в Новосибирск, например, посещал московские встречи. А потом я проникся, как они работают. И тогда мы начали заезжать всем продуктом на это решение.


Оно конечно не совсем правильно технически. Потому что это абсолютно разные базы — PostgreSQL и ClickHouse. Но выяснилось на практике, что кликхаус на наших запросах быстрее до ста раз. Причём на сильно слабой машинке.


Он манит меня тем, то ребята держат баланс между следованием RFC и производительностью. И нужным функционалом. Я помню, там когда-то была, да и сейчас, наверное, есть функция вырезания домена из урла. По-хорошему это огроменная регулярка, а может даже и не одна, если делать это по RFC. Но ребята сказали, мы готовы, что она будет не по RFC, что она будет парсить не все домены, но большинство. И они сделали крутой функционал. И мне нравятся такие подходы.


Ещё мне нравится, что этот продукт уже протестирован «в бою». Когда ты ставишь какой-то пакет, насколько я знаю, он в репозитории появляется после того, как они раскатали эту версию на прод Метрики. Мы всё-таки по сравнению с Яндекс Метрикой сильно меньше по объёму. И я понимаю, что если там заработало, то к нам это хотя бы можно катить на тест.


И какие узкие места ты видишь у крупных сетей, к которым вы обращались для разворачивания вашей технологии?


Знаешь, мешает в основном бюрократия. И неготовность ритейла к чему-то новому. Я замечаю, особенно за последние пару лет, что во многих крупных компаниях идёт диджитализация. Энтерпрайз нанимает девопсов — все эти хайповые технологии они только-только пробуют. И когда ты приходишь в крупные компании и говоришь: «Дайте данные, я вам всё зарешаю» — ты встречаешь непонимание.


В магазинах на местах всех это будоражит — как это кто-то будет указывать, что у тебя есть проблема, хотя ты хозяин магазина.


Ну вот сейчас ты приходишь в крупную сеть — и что ты можешь им пообещать?


Первые месяцы, когда мы заходим в сеть, мы обнаруживаем очень много виртуальных стоков. Невероятно много. Без какой-то автоматизированной системы слежения, ты это не найдёшь. Приходим — и первое время мы эти виртуальные стоки выгребаем и выгребаем. Тут главное, чтобы сама торговая сеть была готова их списывать.


Мы обнаруживаем их очень много. И для сети фиксировать такие большие убытки — это влияет на показатели, на акции, на премии топ-менеджмента. Карточный домик.


Хорошо. Вы справились с виртуальными стоками. Что дальше получается?


Дальше уже рабочие моменты. Где-то мерчи сильно халтурят. Где-то кто-то подворовывает. Дальше уже работаем с людьми. Руководители магазинов и руководители регионов могут посмотреть статистику в реальном времени и убедиться, что проблемы текущие есть и их надо решать.


И ещё хотелось бы чуть добавить о нас, о нашей инфраструктуре.


У нас интересная компания. С одной стороны мы выросли из стартапа, причём только-только выросли в крупную компанию — и по идее у нас всё должно быть хайпово. Но когда я пришёл, первое, что я сделал, это выкинул к чертям Docker. Все эти хипстерские технологии были лишними. Просто поднял виртуализацию — и мы перевели вообще все сервера на виртуал. Чтобы была возможность снапшотить, мигрировать и так далее. И получить изоляцию. Потому что в том виде, в котором мне всё это досталось, выглядело это прям больно. На то время я не был готов подворачивать штаны. Тогда мы ещё мониторинг поднимали Zabbix. И по сей день всё работает на виртуалках. Мониторинг мы всё же сейчас сменили — сейчас у нас Prometheus. Но Docker у нас так и не появился. И вот только сейчас появляются реальные для него кейсы и хоть какие-то направления, где его можно применить. И мы не испытываем никаких проблем от его отсутствия.


P.S. Есть ряд отраслей и сфер, где человеческий фактор долгое время был основной преградой для оптимизации процессов и роста эффективности. И с появлением всё более и более совершенных ИИ, появляются инструменты, которые этот самый человеческий фактор могут контролировать и минимизировать. С одной стороны, это, естественно, плюс. Но одновременно ИИ постепенно будут и замещать некоторые профессии. А это скорее минус — так как в какой-то момент пойдёт взрывной рост безработицы, не всех можно легко и быстро переучить на другие профессии. Но это тема для совсем другой статьи.