![image](https://habrastorage.org/webt/j_/4a/un/j_4aun68syyukiottyiks-x9dzw.jpeg)
Мы торгуем компьютерным железом в Дагестане. Вопросы доставки у нас в республике шли мучительно, потому что менталитет предполагает личное общение. Сейчас-то нам начали доверять и игровые машины едут даже в дальние аулы, где интернет только мобильный.
Как только мы наладили логистику, логичным следующим шагом было открывать доставку чего-то другого. Мировой тренд — еда. Быстрая доставка продуктов либо уже есть, либо вот-вот появится везде в мире. Началось всё с Uber, Flaschenpost, Самоката, потом присоединилась Яндекс.Лавка.
В общем, модель была очень понятна. Осталось переложить её на рынок Дагестана.
Ну то есть для начала создать собственную сеть курьеров, приложение для них и для управления ими и так далее. Ручное линейное управление как в доставке железа тут не подходило. Была проблема и в том, что мы строили систему на базе 1С магазина техники 05.ру, который был заточен под технику и не мог работать с весовым товаром.
Были у нас и сомнения по ассортименту — например, что основная категория, фрукты и овощи, не взлетит. Потому что у нас всё же аграрный регион и в менталитете просто не было идеи покупать те же помидоры, не выбрав их самостоятельно на прилавке или на рынке.
Посчитали рынок, решили начать с чипсов, колы и конфет — и драматически промахнулись мимо аудитории. Наша первая реклама была рассчитана на молодёжь, привычных нам гиков. Как потом оказалось, решение о покупке принимает в семье чаще женщина.
В общем, в какой-то момент мы подготовили всё технически и решили запускаться.
Это стало началом целой серии косяков: мы знали, что многое в этом бизнесе пойдёт не так, и даже приготовились извиняться. И оно пошло не так, конечно же.
Как запускались
У нас есть наш основной сайт компьютерного магазина 05.ru. У него очень хороший трафик: ежемесячно сайт посещает значительный процент жителей республики. Это всё органика, две трети — прямые заходы, треть — поиск. То есть нас очень и очень хорошо знают. В силу особенностей ассортимента 65 % аудитории — мужчины. Поскольку мы быстро хотели проверить гипотезу, что продукты с доставкой вообще кому-то нужны, мы ориентировались на имеющуюся аудиторию.
Повесили баннеры. Сейчас вот такой, раньше был побольше, с объяснением, что это за даркстор вообще такой:
![image](https://habrastorage.org/webt/gi/6v/n7/gi6vn75eii4m-bprdigzed1gyda.png)
![image](https://habrastorage.org/webt/rm/am/oa/rmamoaropkreiohz2lswjiohdmm.png)
Потом плизеры, то есть ответы на вопрос, который задавался в тизере:
![image](https://habrastorage.org/webt/p1/vq/vi/p1vqvil3bymm2badi5mrnskhkhg.png)
Как вы уже понимаете, мы целились не в ту аудиторию и не с теми продуктами, но, по сути, других вариантов у нас тогда особо-то и не было.
Кстати, почему даркстор называется Даркстор. Это потому что нам нужен креативный директор!
Если серьёзно, это было название проекта, просто общее слово для магазина без покупателей. Дарксторами их зовут потому, что там обычно нет заметной вывески и свет далеко не такой яркий и праздничный, как в обычных магазинах. В общем, это склады с выдачей для курьера.
Но не просто склады, а склады с особой сортировкой товара по популярности — чтобы самые часто покупаемые позиции лежали на тех местах, где заказ можно собрать буквально за 2 минуты. В общем, когда мы только начали делать сайт и приложение, то думали, что позже придумаем какое-то другое название. Но оно прижилось, и поэтому мы так назвали бизнес целиком.
![image](https://habrastorage.org/webt/ge/fc/bz/gefcbzo-ys6b-omm6mzodxyl_xs.png)
Первая версия даркстора выглядела вот так
Первые доставки
Первые доставки пошли далеко не так, как мы планировали.
В смысле, мы знали, что будем косячить, но не представляли, насколько это может быть обидно.
В самом Каспийске максимальная длина маршрута от даркстора (он близко к центру) до краевых точек — 25 минут. Возможно, 30, если это час пик. Так вот, одна из наших первых доставок после рекламного пика открытия заняла два часа сорок минут. Наверняка вы знаете, как это бывает, когда курьер сначала нашёлся, потом потерялся, а потом пришёл к неправильному дому. Перед покупателем было жутко неудобно. К счастью, у нас уже было чёткое понимание, что мы делаем в такой ситуации. Правда, вообще-то мы думали, что речь пойдёт про доставку за 35 минут вместо обещанных 30 в рекламе. Но получилось что получилось. В первый примерно месяц опозданий было десятки. Мы отправляли заранее заготовленную извинительную открытку и отправляли по тому же адресу подарочный набор с продуктами. Сразу скажу, что, да, это стоило нам денег, но у нас к хорошему сервису не очень привыкли, поэтому это сразу резко меняло отношение к нам на очень позитивное. Люди даже рекомендовали нас после таких ошибок!
![image](https://habrastorage.org/webt/80/kk/ex/80kkexyfbytgjfmmqdud3dihfhe.png)
Если отрезать кусок от логотипа, получится котик. А кошек в Дагестане очень любят везде по республике. Так у нас и появился маскот Даркотик. В первых рассылках мы даже обыгрывали это и отправляли смс с промокотиками, а не промокодиками.
Да, а самая быстрая доставка первого месяца была за 7 минут. Сборщик быстро похватал товар, пикнул, курьер стоял рядом и ждал, получил заказ, пикнул и помчался.
Мы не догадывались, что проблемы могут быть даже с товарами длительного хранения.
Например, крупа. Казалось бы, при сроке годности 2–3 года поставщик её привёз, мы приняли на склад, покупатель заказал, мы отправили. Всё должно быть хорошо.
Один из первых заказчиков перезвонил нам и очень громко рассказал, что крупа слежалась. И продавать такое приличный человек в обычном магазине земляку не стал бы ни при каких условиях. Он хотел деньги назад, вернуть мешок и получить моральное удовлетворение.
Курьер приехал к нему с подарком, мы вернули деньги и забрали мешок посмотреть.
Оказалось, что надо уметь работать даже с такими, казалось бы, неприхотливыми продуктами.
Мы довольно хорошо научились правильно собирать заказы и выдавать их ещё в доставке железа, поэтому проблем не предвиделось. Но всё равно один раз нам позвонил недовольный покупатель и сказал, что ему привезли обычное молоко, а он заказывал безлактозное. Перед ним мы извинились и доставили бесплатно нужное (он вернул пакеты с обычным, хотя это было необязательно, то есть действовал действительно добросовестно), но в заказе было именно оно.
Мы некоторое время пытались поймать баг с интерфейсом заказа, но так и не поняли, что случилось.
Примерно через месяц мы поняли, что процессы более-менее работают и можно расширять ассортимент заморозкой и овощами. И овощи потребовали нового уровня инженерного мышления, потому что торговать ими онлайн очень непросто. Но люди спрашивали мясо, сухофрукты, картошку, лук и огурцы. Отказать им было непросто.
Техрешения
На стадии MVP у нас было 1С «Управление торговлей» от основного магазина 05.ru.
Отдельную конфигурацию пока делать не стали (но нужно будет), ждали результатов эксперимента.
Завели новый склад, добавили весовой товар (и проверили, чтобы не было как в Евросети, когда можно было списать 0,2 телефона, а списывался целый).
Приложение для терминала сбора данных для склада. Мы сделали своё с нуля для даркстора. Изначальная концепция была в том, что складской работник не должен думать, что и откуда брать. Выбор, определение товара — это всё должно исключаться. Приложение на ТСД указывает полки, наименования товара. По нему нужно пикнуть, ТСД подтвердит, что это нужный товар, потом упаковка, размещение на курьерской территории в ячейке и ещё раз контроль. Не сказать чтобы это было прямо совсем просто, но первая версия под штучный «сухой» товар была достаточно проста. Это уже дальше с ростом склада и ассортимента понадобилось много чего допиливать, но, к счастью, у нас своя разработка.
![image](https://habrastorage.org/webt/cl/qe/sq/clqesqzbeyftugqeo-bbtdpcoaa.png)
Подняли сервис для курьеров. В качестве основы взяли телеграм-бот, который использовался для магазина электроники. Форкнули и докрутили именно для нужд даркстора. По идее вся складская и курьерская логистика строилась вроде бы на уже имеющихся шаблонах, но всё равно 70 % кода новые. И сотрудники доставки все были новые, они не были курьерами электронного бизнеса. Логика телеграм-бота простая: очередь заданий. Именно с отладкой процессов и ИТ-части этой очереди связаны ошибки первого месяца перед клиентами. Когда разобрались, как должно работать, доставки стали очень редко превышать 40 минут. То есть в заявленные 30 минут мы попадали где-то с 90-м перцентилем, но 40 минут — это и не час.
Курьеры непрерывно онлайн. Они получают уведомления о заказе, когда сборщик собирает и относит его в ячейку в дарксторе. Курьер забирает, отмечает, что забрал из ячейки пакет, видит адрес и другие данные, отвозит. Ответ сервера по итогу доставки — либо 200 ОК, либо 404 (тогда надо звонить), либо 406, когда что-то не так с товаром. Бывают частичные возвраты, когда клиент что-то из товаров не принял. Логики вторых-третьих заказов цепочки пока нет, курьер возвращается на базу за новым заказом или с остатками прошлого.
![image](https://habrastorage.org/webt/qn/6g/oj/qn6gojay9vk7bjokitkx-ne1bgk.png)
Оплата только через карту онлайн при заказе. Курьер не принимает деньги, все расчёты ведутся с платформой. Наличного расчёта нет, но мы хотим вместо предоплаты давать курьерам терминалы для оплаты картами. В MVP это не вошло, естественно, сейчас уже экспериментируем.
Сайт был сделан на Битриксе — по примеру того, что уже работал на 05.ру. Я знаю, как многие не любят Битрикс, но его на самом деле можно правильно готовить. Понадобится напильник и паяльник.
Мобильное приложение на iOS/Android — суперапп. После MVP туда можно будет положить уже нативный компонент, но пока нужно было вообще понять, стоило ли этим заниматься. Уже понятно, что стоило и разработку будем делать. iOS — Swift, UIKit, Android — Kotlin, вёрстка на фрагментах.
Поддержка обычная — WhatsApp и Телеграм.
![image](https://habrastorage.org/webt/ik/0o/zx/ik0ozxdxi5lvxrswcrrw19oseaa.png)
Всё поменялось, когда появились фрукты
Фрукты, овощи и мясо поменяли нам практически всё.
Почему ещё выбирали Каспийск — для тестирования и разворачивания бизнес-процессов на одном складе эта локация подходила больше всех остальных. Здесь у всех есть придомовой супермаркет. Мы начинали конкурировать с этими самыми «чепками» по ценам (они часто были выше, чем у сетевых магазинов) и по ассортименту: не всё было около дома. Из сетевых магазинов у нас Магнит и Зелёное яблоко. Магнит не заходит во дворы и кварталы, он в центре. У Зелёного яблока формат ближе к гипермаркету, если в Махачкале их четыре, то в Каспийске всего один большой магазин.
То есть мы можем выделиться либо ценой (по сути, как в Магните, к которому ехать полчаса и откуда тащить воду и картошку), либо ассортиментом (чтобы купить что-то, чего нет около дома, надо ехать к Зелёному яблоку), либо сервисом. Если мы будем достаточно удобны, то люди предпочтут даже не ходить в магазин около дома. Это мы знаем по всему миру, где развивалась доставка продуктов.
И вот мы чуть не поломались о фрукты.
![image](https://habrastorage.org/webt/cn/ix/pk/cnixpkr1oygq18sdmvy4ria9oaq.png)
Чуть позже появились холодильники
Фрукты требуют математики. Они портятся за считанные дни. Нужно очень точно предсказывать спрос и держать столько товара, сколько нужно. Причём математика нужна такая, чтобы считать оптимум с учётом матожидания спроса, идущих уже поставок, сроков годности имеющихся товаров и возможных потерь в две стороны. Первый тип потерь — когда мы выкидываем колбасу, потому что срок годности кончился. Второй тип потерь (куда больший) — когда мы не можем продать колбасу, потому что боимся закупить её больше, чтобы не просрочить. Во втором случае покупатель теряет к нам лояльность и не даёт деньги, которые был бы готов дать.
Первые партии фруктов мы списывали процентов на 70, потому что не умели с ними работать.
Они же задерживали нам заказы, потому что их надо было взвесить.
Фрукты и овощи мы решили квантовать по 0,5 килограмма. Оказалось гораздо удобнее паковать их в готовые единицы, чем взвешивать каждый раз. Причём причин довольно много, начиная с того, что каждый хочет поковыряться в ящике и отобрать то, что идеально подходит под вес в заказе. Встала другая проблема: те же условные апельсины по 500 грамм не квантуются.
Они могут быть по 300 грамм, например, в среднем. Вообще, овощи и фрукты разные. Чем больше юнит, тем меньше погрешность, например, взвесить 3 килограмма картошки довольно легко. А вот 500 грамм апельсинов — это проблема. На производствах по упаковке овощей и фруктов есть специальные сортировочные линии, сочетающие всё это по размеру. Мы же решили заложить погрешность вверх до 15 %. То есть вы платите за полкило, но получаете 500–565 грамм. Кстати, это даже не изменило нам цены, потому что себестоимость цены для базара считается так же: продавцы кладут чуть больше, чтобы покупатель ушёл довольный.
Потом появились другие шаги фасовки, например, полкило чеснока никому не надо, многим даже 100 грамм много. Но меньше 100 грамм он квантуется плохо.
Потом оказалось, что у каждого своё понимание хороших помидоров. Я знаю, что в Москве у каждого своё понимание хороших бананов: зелёные, жёлтые твёрдые и жёлтые спелые хороши для разных людей, поэтому их категоризируют некоторые доставки. Вот у нас с бананами вопросов почти не возникало.
Неожиданные сложности вызвали лук и капуста. Оказалось, что бывает такая капуста, которая сверху выглядит хорошо, но при разрезании там что-нибудь не то. Начали разговаривать с поставщиками и поняли, что есть те, кто понимает особенности, а есть те, кто требует чуть ли не отдельного ОТК на приёмке, причём с разрушающим контролем того же лука.
Потом мы пересмотрели сроки годности. Оказалось, что покупателей прямо-таки очень не устраивает последние 20 % срока годности (особенно если осталось 1–2 дня до конца), эти товары прямо стремились возвращать. То есть внутри системы мы понимаем, что надо продавать товар, условно, за 3 дня до конца срока годности, а дальше перемещать его в уценку.
Сейчас это работает так: с одной стороны, в заказ принципиально нельзя положить товар с кончающимся сроком годности (он не «пропикается» в заказ), с другой — система автоматически проверяет сроки раз в несколько часов и отдаёт на ТСД задание на изъятие товара, которому осталось меньше 20 %. Итог: если на товаре есть маркировка срока, он гарантированно не попадает к покупателю, когда срок годности близок к концу. Если срока годности нет (яблоки, например), то по ним раздаются регулярные задания на проверку внешнего вида.
С фруктами понадобилось переделать всю архитектуру размещения на складе. В случае техники все SKU одинаковые и жёсткие диски разных партий можно хранить вместе. В случае с яблоками, если положить те, что приехали сегодня вперёд, а потом через неделю добраться до прошлой поставки, там мы застанем их уже жухлыми. Поэтому привычный стек не подходит, нужна FIFO. Некоторое время мы путали те же ячейки молочки, но разделение SKU по партиям дало возможность проверять правильность ещё раз на пропикивании при комплектации.
В начале фасовка была средством контроля качества, потом мы наладили качество по другим частям процесса. Фасуем мы сейчас прямо перед заказом. В итоге мы набираем товар из рассыпного и упаковываем уже перед передачей курьеру. Это избавляет от нескольких итераций распаковки-запаковки, например, для проверки качества тех же помидоров раз в сутки.
Ещё понадобилось настраивать приёмку. Сейчас в планах сделать такую схему: каждый поставщик получает статус в зависимости от количества негатива по его товару. Если товар хотя бы раз прошёл полный контроль когда-то и с тех пор покупателям нравится, то приёмка не занимает много времени, потому что она доверительная. Просто пересчитать — и порядок. При появлении любых плохих отзывов (начиная с фасовки и заканчивая клиентами) поставщик теряет рейтинг и переводится на тщательную приёмку, когда нужно открывать каждый пакет и проверять.
Это индекс надёжности поставщика, по сути, он оптимизируется под потери в рублях от обоих типов действий. Доверительная приёмка не требует затрат на саму приёмку, но, скажем, даёт 3 % брака. Тщательная не должна давать брака, но сама по себе стоит рабочего времени и создаёт узкое место на складе. Больше всего сложностей с тем товаром, который поставляется неупакованным, потому что то же понятие «красивой картошки» не определено и является крайне субъективным. А если картошка будет некрасивой, клиента мы потеряем.
Все эти неоптимальности мы и ждали, но всё равно каждая из них становилась в какой-то степени сюрпризом.
Смена аудитории
Как видите, наша первая реклама была направлена на мужчин, потому что мы во многом ориентировались на уже известную нам аудиторию онлайн-покупателей техники. Можно пойти в магазин, а можно за эти полчаса посмотреть бой, и магазин сам всё доставит. Кола и чипсы на баннере.
Тогда заказывали те, у кого нет машины (либо она занята сейчас), и те, кто ждали гостей через час.
С появлением овощей, фруктов и мяса аудитория очень быстро стала сдвигаться в семейную сторону. Выяснилось, что многим женщинам важно не таскать ту же картошку и воду. Оказалось просто удобным заказывать доставку продуктов днём — а это время, когда женщина с маленьким ребёнком практически не может выйти из дома, потому что больше никого дома-то и нет.
В этот момент мы поняли, что больше всего барьеров связано с тем, что люди не верят, что можно вернуть заказ и за это ничего не будет. Мы налегли на наружку, начали приводить примеры, что если не понравилась рукола или картошка слишком зелёная (такое тоже бывало) — можно спокойно вернуть. Это сработало. Параллельно мы ввели ещё одно правило: например, если покупатель заказывал 500 грамм грибов, а их было 300 грамм (то есть они не квантовались), либо их было 500 грамм, но срок годности подходил к концу, либо они побились при доставке (просто покрошились, такое с ними бывает) — мы сообщали, что не уверены во внешнем виде товара и отдаём его бесплатно. То есть если товар не доставал по весу или был среднего качества, денег за него мы не брали. Это тоже очень понравилось людям и сняло много барьеров.
Просто не хватало человеческого отношения.
Ещё мы очень понравились пенсионеркам, потому что им часто неудобно ездить или ходить в центр города. Есть одна женщина, которая с трудом ходит, для неё мы стали прямо постоянным местом заказов. У неё дети в Махачкале, они приезжают, покупают ей сразу много всего, чтобы она не ходила каждый день, — но ей часто хочется дозаказывать те же свежие фрукты. Тут наши курьеры стали прямо отличным вариантом.
Сейчас мы уже более-менее разобрались с процессами, отладили софт. Нужно рефакторить его в правильную архитектуру (сейчас местами готовы зародиться нагромождения). Очень нужна персонализация, чтобы человек с детьми видел один ассортимент наверху, а пенсионер — другой.
В итоге — мы не зря всё это затеяли и нам есть, куда двигаться дальше. Этим и займёмся.