Буст редукциона .
Редукцион – это схема закупки транспортных услуг, при которой перевозчики конкурируют, снижая цену предложения. Грузовладелец запускает торги с указанием начальной (максимальной) цены и участники последовательно понижают ставки. Победителем обычно становится перевозчик с самой низкой ставкой. Редукционы бывают открытыми, когда могут участвовать все желающие, и закрытыми – участие только по приглашению. В России это самый популярный вид торгов, потому что можно сэкономить 10-30% для каждой перевозки.
Схема редукциона довольно простая, хотя может незначительно меняться из-за нюансов торговой площадки:
Организатор отправляет заказ в торги, в которых известны как минимум начальная цена, шаг торга (минимальный шаг уменьшения цены), адрес и время ожидания поставки и дата завершения.
Перевозчик размещает ставку и становится временным «победителем» торгов.
Если ко времени завершения торгов никто не перебил ставку, этот перевозчик становится исполнителем по заказу.
Такой тип торгов часто выгоден заказчику и площадкам из-за снижения стоимости и сбора рыночных данных, но для перевозчиков редукцион – инструмент давления на маржу с непрозрачными условиями. Всё это даёт какой-то результат для грузовладельцев в виде экономии, но в долгосрочной перспективе разрушает доверие. И если ничего не менять, у нас просто останутся только те, кто не боится демпинга, и готов любой ценой получить заказ, снижая надёжность и качество доставки.
Если попробовать посмотреть сверху на то, что в целом происходит, то можно увидеть несколько конкретных проблемных сигналов, которые и говорили нам о том, что нужно пересмотреть отношения к исполнителям.

Логист
Мы хотели, чтобы перевозчик стал полноправным пользователем TMS, и предоставить ему прозрачные условия участия в торгах. Чем увереннее чувствует себя перевозчик, тем надёжнее становится рынок. Да и с экономической точки зрения для продукта это хороший профит.
Штош, значит нужно дать то, чего нет [или плохо реализовано] на других платформах – доверие и хотя бы минимальное ощущение того, что мы действительно заинтересованы в развитии его бизнеса.
Закулисье рынка .
Мы понаблюдали за перевозчиками в Session Replay в Sentry (запись действий пользователя в приложении: клики, скроллинг, ввод текста) и нашли несколько интересных паттернов:
Перевозчик сидел в торгах 10-15 минут без активности, а за несколько секунд до завершения торгов делал ставку.
После регистрации на платформе перевозчик шёл сразу в торги, искал конкретный редукцион и делал ставку.
Перевозчик устанавливал ставку в 1.5-2 раза меньше лидирующей.
Торги завершались с лидирующей ставкой, но после подтверждения победитель отказывался от заявки на перевозку.
Конечно, такие манипуляции и обходные пути надо ловить с самого начала, хотя они и не делают перевозчика ненадёжным. Просто условия рынка заставляют отодвигать его на второй план, поэтому ему приходится действовать не по задуманному нами (=рынком) сценарию, чтобы хотя бы так получать заказы.
Выше я написал о простой схеме редукциона, но на самом деле это часть длинной цепочки действий, который всегда будет выходить за рамки продукта, а у каждой организации есть свои уникальные процессы, на которые в обозримом будущем не повлияет ни один сервис, каким бы прорывным он бы себя не позиционировал – убер для грузоперевозок еще не изобрели. И нужно ли? Да, у разных грузовладельцев и перевозчиков свои роли, цели, время реакции и цифровая зрелость, и за ставкой скрываются разные ожидания и риски для всех сторон, но все всё равно консервативно плывут по течению рынка в общих для всех сценариях. Примерный жизненный цикл перевозки для логиста грузовладельца выглядит так:
– перед торгами: упаковать потребность перевозки в заказ, внести в TMS, согласовать дату и адрес перевозки, подготовить документы, всё это проверить и, наконец, по нужным параметрам организовать торги;
– после торгов: проверить документы перевозчика, проследить за распределением ресурсов (водитель + транспорт), согласовать погрузку, пропуск на КПП, промониторить перевозку, оформить закрывающие документы, завершить перевозку и рассчитаться с исполнителем.
И если мы «лечим» только момент торгов, а всё остальное оставляем как есть, перевозчик всё равно живёт в хаосе: ему приходится угадывать под кого как подстроиться.
Для того, чтобы действительно понять, как поддержать перевозчика, мы провели несколько сессий Event Storming (увы, кейс без неё) и сделали для себя сравнительную таблицу, показывающую как различные грузовладельцы выстраивают свои внутренние правила при запуске редукциона, исходя из событий в своёй отрасли. Мы собрали около 20, но давай посмотрим на ключевые параметры запуска для этих трёх.

Отличия отраслей
Здесь мы можем увидеть разный диапазон стартовой цены у каждой отрасли. Для перевозчика это значит, что где-то есть неплохой запас по марже, а где-то – рискует, поэтому может дожидаться конкурентных снижений и пытаться выйти на лидирующую позицию в самом конце торгов. Если посмотреть на время торгов, то в некоторых отраслях грузовладельцы могут ждать и больше суток, а для перевозчика это может быть маркером «тестовых» редукционов, когда грузовладельцы «щупают рынок», выясняя примерную цену для нового направления (=маршрута).
Теперь мы можем делать какие-то выводы по поведению перевозчиков в торгах. В Session Replay и Event Storming мы собрали конкретные сигналы о том, что происходит сейчас на рынке и буквально у нас в продукте, а таблица помогла нам связать эти наблюдения с реальными параметрами торгов и особенностями отраслей.
Грузовладелец и перевозчик боятся (друг друга) .
Но этого всё равно мало, что связать все эти кусочки в цельную картину опыта. Нам с тобой еще нужно увидеть точки боли и мотиваторы перевозчика на каждом этапе жизненного цикла. Сам я не фанат подобных карт, но вот в нашем случае CJM при наложении хорошо показала взаимные опасения. Давай соберём все наши доменные события, и уложим их в простой список этапов глазами логиста и перевозчика.

Карта логиста

Карта перевозчика
На первый взгляд карты логиста и перевозчика кажутся независимыми, но на самом деле их пути пересекаются на всех этапах, которые показали общие паттерны страха и недоверия. Причём некоторые из них совпадают с паттернами того странного поведения, которые мы нашли в Sentry.
Начало пути: логист публикует заказ, водитель ищет подходящий
Логист – хочет быстро создать торги, желательно скопом, по шаблону, и чтобы система всё проверила автоматически. Боится, что забудет что-то в заказе: неправильно укажет адрес, допустит ошибку в дате или лимите ставки.
Перевозчик – хочет как можно быстрее найти лоты, подходящие по маршруту, времени и типу груза. Боится, что ставки уже ушли вниз, а он не успел, или что заказ окажется «пустышкой».
Торги: логист наблюдает, водитель делает ставки
Логист – следит за ставками, хочет видеть движение. Боится, что никто не будет участвовать, или что победитель потом откажется. Также раздражают «снайперские» ставки в последние секунды.
Перевозчик – боится показать ставку слишком рано, поэтому выжидает, ставит в последний момент. Боится: что система зависнет, ставка не пройдёт, или торги закроются досрочно.
Победа в торгах: подтверждение сделки
Логист – выбирает победителя, хочет быть уверен в его надёжности. Боится, что перевозчик откажется или нарушит условия.
Перевозчик – побеждает, но ещё не знает, перейдёт ли заказ в заявку на исполнение, всё ли правильно поняли, оплатят ли вовремя?
Исполнение: перевозка, погрузка, контроль
Логист – хочет быть уверен, что всё идёт по плану. Боится, что водитель не приедет, опоздает или затеряется.
Перевозчик – беспокоится о пропуске на объект, условиях загрузки, парковке, адресе. Боится, что его не пустят или он не найдёт нужное место, а время пойдёт в минус.
Завершение: документы и оплата
Логист – должен получить документы, закрыть заявку, запустить оплату. Боится, что не все документы в порядке или не дойдут.
Перевозчик – ждёт деньги. Боится, что будут придираться к бумагам, тянуть срок оплаты или вовсе откажут.
Если кратко, то большинство проблем, которые показали карты, свелись к трём блокам: создание заказа, организация торгов и их прозрачность и исполнение перевозки. Да, логист и перевозчик находятся в отношениях, где они почти не общаются напрямую, но при этом каждый зависит от другого и каждый боится быть обманутым или остаться без ресурса.
Логист боится ошибиться на старте, чтобы не запустить неправильные торги. Переживает, что ставок не будет или победитель подведёт заявкой. Перевозчик напрягается, что не успеет подать ставку, что её не примут или что заказ окажется пустышкой, а потом ещё и проблемы с самой перевозкой и оплатой словит.
6 (фичей) .
Быстро вспомним, что сделали: разложили всю цепочку от «логист создал заказ» до «перевозчик получил оплату», собрали в единую таблицу основные отрасли и сравнили, как у них запускаются торги, а затем наложили CJM логиста и перевозчика, чтобы увидеть, где их страхи совпадают.
Опустим часть с обсуждениями, штормингом и принятием решений (у нас же не бесконечный рассказ), и давай посмотрим на 6 конкретных решений, которые мы запустили и помогли перевозчику чувствовать себя равным партнёром, а логисту – быть уверенным, что исполнитель найдётся.

Новая функциональность
В итоге за год мы получили не просто набор крутых фич, а продуманный инструмент, который закрывает основные страхи и фрустрации и логиста, и перевозчика. Сегодня практически все виды торгов в Тракере спроектированы по схеме редукциона.
Наконец-то картинки! Давай теперь взглянем, как эти решения выглядят в самом продукте, чтобы сразу стало понятно, какой опыт мы предлагаем пользователю.
Ниже – один из вариантов формы создания редукциона. В блоке «Цена за рейс» теперь всё считается автоматически и собирается прямо в поле: можно ткнуть и выбрать рыночную, взять из прошлых торгов, шаблонную или указать свою. Без лишней беготни по людям и таблицам.
Для борьбы со спринтерами появилась возможность продлевать торги на выбранное количество раз, указав лишь временные рамки. Изначально думали над вариантом и с секундами, но отказались – в реальности мало кто использует такие значения, да и ставка может просто не успеть пройти. Кстати, автопродление видно всем, так что тут всё честно для перевозчика.

Ручное создание редукциона
После создания редукцион публикуется в ленте торгов, где перевозчик может посмотреть всю информацию по нему.
Верхняя часть – шапка заказа. Тут номер, тип перевозки, бейджи модальности, типа погрузки груза – это быстро даёт понять общую характеристику редукциона.
Чуть ниже – таймер до завершения, количество участников, размещение ставки и комментарий к ней (иногда перевозчик хочет объяснить, почему его ставка такая).
Рядом тот самый «Робот торгов» – перевозчик задает минимальную цену и шаг снижения, и робот сам двигает ставку, пока не дойдёт до заданного лимита.
Ещё ниже перевозчик видит примерную выгоду с текущей ценой, которая, кстати, ушла ниже рынка. Замечу, что потенциальная маржинальность при этом всё равно положительная, потому что это не просто разница между ставкой и тарифом и учитывает больше факторов: тип погрузки, простой, доп. расходы и прямые договорённости о фиксированных затратах. Именно поэтому мы разделили ставку и рыночную цену, чтобы перевозчик не рассматривал заказ только лишь со стороны значения ставки.

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

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

Лента всех торгов без фильтров
Цифры .
Метрики – вещь хорошая, но коварная. Тебе, как дизайнеру, надо к ним относиться как к симптому, который лишь показывает тебе «вот так получилось» – не делай их своей целью. Если ты начинаешь скакать по метрикам, то быстро превратишь продукт в мешанину компромиссов без смысла.
Тем не менее, давай посмотрим на конкретные результаты. Мы не навешивали десятки событий, а попробовали выделить по 2-3 основых показателя.

Лента всех торгов без фильтров
Роботом пользуются и уже почти треть всех ставок автоматические – перевозчики сами поняли, что это удобно и выгодно, и выигрывают с ним чаще. Получилось и экономику выровнять – участники стали реже делать ставки, на которых они ничего не заработают. Стало меньше «тёмных» сделок, из-за которых раньше мучились с отменами и негативом.
Получается, цель-то мы достигли: сделали процесс торгов прозрачнее и понятнее. Но это не значит, что можно успокоиться. Впереди ещё много всего. Например, разобраться с тем, почему часть торгов всё-таки проваливается, и как удержать баланс, чтобы робот не начал выходить из своего «свит спота», а автопродление не выходило за плановую дату погрузки и учитывало события из реальности.
Конечно, на протяжении всего пути мы спорили, ездили к логистам и водителям, перебрали десятки интерфейсных вариантов и старались не поломать привычные сценарии, но это всё детали. Мы хотели, чтобы перевозчику было проще понять, выгодно ли ехать, не упустить торги, не влететь в минус.
И у нас это получилось. Ведь решения, к которым мы пришли, появились не просто потому, что «так будет лучше», а потому что мы вместе разобрались, как работает человек по ту сторону, что он делает каждый день и почему.
Да, не всё идеально, но точно стало спокойнее и честнее. Теперь хотя бы на торгах стало чуть меньше нервов и чуть больше здравого смысла. И это уже большой шаг – такой продукт уже приносит больше пользы, чем любое обещание с экрана «сэкономим вам 10%» на очередном экспо-форуме.