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

Почему вообще мы решили, что обратная связь — это важно

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

В начале 2024 года мы собирали примерно две тысячи отзывов в день. Казалось бы, неплохо для начала, но если посмотреть на масштабы нашей сети — капля в море. Мы задались простым, но фундаментальным вопросом: «А есть ли вообще связь между тем, что клиенты пишут в отзывах, их лояльностью и нашей выручкой? Или это всё красивые слова про customer experience, за которыми не стоят реальные деньги?»

Провели серию экспериментов, A/B-тестов, покопались в данных и обнаружили интересную закономерность. Оказалось, что всего лишь один процент трансформации клиентов из критиков в промоутеры даёт нам десятки миллионов рублей дополнительной выручки в месяц. Причём механика простая и понятная: промоутеры тратят в среднем на 41% больше денег за месяц и на 40% чаще приходят в наши магазины. То есть довольный клиент — это не абстрактная ценность для презентаций, а вполне конкретные деньги в кассе.

После этого открытия стало понятно, что нужно масштабировать сбор обратной связи и научиться с ней работать. За полтора года мы увеличили количество собираемых отзывов в 75 раз — со скромных 2 тысяч до 150 тысяч в день. Это пятнадцать миллионов отзывов в квартал, если кому-то проще воспринимать большие числа.

Проблема масштаба, или Почему человек не может прочитать «Войну и мир» несколько раз за день

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

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

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

ИИ-диагност: как научить машину понимать, что клиенту не нравится

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

Под капотом у нас работает Llama3.1-Instruct 70B, правда, в квантовании int4 — такая модель занимает примерно 40-50 гигабайтов, что позволяет эффективно использовать вычислительные ресурсы. Инференсим модель на мощностях Yandex Cloud. Чтобы минимизировать ошибки классификации, добавляем в промт много fewshot-примеров, а для стандартизации результатов применяем эмбеддер. В этом, кстати, одно из преимуществ работы с LLM: дообучение не требуется, достаточно изменить промт по мере необходимости, и модель начинает работать по-новому.

Так выглядит разбивка по сантименту отзывов
Так выглядит разбивка по сантименту отзывов

Но классификация — это только половина дела. Модель также определяет сантимент каждого комментария: позитивный, негативный или нейтральный. Это важно, потому что одно дело, когда клиент пишет «парковка неудобная, но терпимо», и совсем другое — «из-за вашей парковки больше ни ногой в магазин». Формально оба комментария про парковку, но уровень критичности проблемы разный.

Качество классификации мы оцениваем по взвешенному F1 score, который у нас составляет около 90%. Для валидации используем подготовленные разметчиками тестовые данные. Долю ошибок первого и второго рода при определении критичных проблем удалось снизить до менее чем 6% — особо тщательно подходим к настройке промптов именно для таких случаев. Что касается ограничений по длине текста, то модель спокойно обрабатывает комментарии до 32 тысяч токенов, или примерно 8 тысяч слов. Для отзывов это более чем достаточно — даже самые развёрнутые жалобы редко превышают пару тысяч слов.

Все эти данные в режиме реального времени попадают в нашу «приборную панель» — дашборд для управления клиентским сервисом. Теперь директор магазина или региональный управляющий может открыть систему и за пару минут понять, что происходит в конкретной точке. Например, увидеть, что в магазине «Ромашка» в Сочи резко выросло количество жалоб на доступность касс, а в Твери клиенты массово недовольны чистотой в торговом зале. Причём это не абстрактные «клиенты недовольны», а конкретные числа: сколько человек пожаловалось, насколько критично они настроены, как это соотносится с прошлыми периодами.

Каждому руководителю доступен дашборд с подробной детализацией отзывов по магазину
Каждому руководителю доступен дашборд с подробной детализацией отзывов по магазину

ИИ-терапевт: замыкаем обратную связь, или Как перестать игнорировать клиентов

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

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

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

Так изменился цикл обратной связи с использованием ИИ-решения Магнита
Так изменился цикл обратной связи с использованием ИИ-решения Магнита

Важный момент: это не шаблонные ответы в духе «мы приняли к сведению вашу жалобу». Клиент получает конкретную информацию: «По вашему обращению 5 августа 2024 года была проведена полная дезинфекция торгового зала и складских помещений магазина. Приносим извинения за доставленные неудобства». Человек видит, что его услышали, поняли проблему и решили её.

Сейчас ответы формируются на основе шаблонов, но мы уже тестируем внутри команды RAG (Retrieval Augmented Generation) для более персонализированных ответов. Правда, в боевом контуре эту технологию пока не используем — хотим убедиться, что она действительно даёт существенный прирост качества коммуникации.

Пример работы системы по принципу нового цикла обратной связи с использованием ИИ в Магните
Пример работы системы по принципу нового цикла обратной связи с использованием ИИ в Магните

Эффект от внедрения этой системы мы тоже измерили через A/B-тесты. Оказалось, что клиенты, получившие обратную связь на свой отзыв, показывают существенный рост среднего чека и чаще возвращаются именно в тот магазин, где решили их проблему. То есть правильно выстроенная работа с негативом не только не отпугивает клиентов, но и повышает их лояльность.

Проблема покрытия: почему QR-коды не сработали, а голосовой ассистент — да

Когда основная система заработала, мы заметили интересную особенность: около 30% магазинов стабильно недополучали отзывы. При этом не было очевидной корреляции с географией, форматом магазина или другими параметрами — просто в некоторых точках люди не давали обратную связь.

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

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

Обновлённая система сбора отзывов в Магнит OMNI
Обновлённая система сбора отзывов в Магнит OMNI

Вернулись к технологичным решениям и запустили сразу два инструмента. Первый — голосовой ИИ-ассистент, который собирает обратную связь в ненавязчивой форме, не требуя от клиента сложных действий. Для этого используем не собственную разработку, а готовое ASR/TTS-решение одного из наших основных вендоров автоматизации — зачем изобретать велосипед, когда есть проверенные технологии. Второй инструмент — ML-дирижёр, который анализирует историю взаимодействия конкретного клиента с брендом: как часто он оставляет отзывы, какой формат предпочитает, в какое время наиболее активен. На основе этих данных система решает, когда и как лучше запросить отзыв: через пуш-уведомление, шторку в приложении или другой канал.

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

Архитектура решения: как всё это работает под капотом

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

Масштабирование инфраструктуры реализовали через батч-процессинг в Redis. Схема простая и надёжная: запрос приходит через REST API, создаётся задача в очереди, воркер забирает и выполняет её. Архитектурно это два сервиса: первый — веб-API для постановки задач в очередь и возврата результата, второй — воркер, который берёт задачи из очереди и выполняет всю тяжелую работу по анализу текста.

Сейчас система обрабатывает примерно один отзыв за 2-3 секунды. Не молниеносно, но для наших объёмов вполне достаточно. Впрочем, мы уже работаем над переходом на BERT-like модели — в первую очередь для снижения затрат на инфраструктуру. Приятный бонус — скорость обработки вырастет примерно в сто раз, с нынешних 2-3 секунд на текст до каких-то 0,03 секунды. Разрабатываем эти модели на основе данных, которые накопили с помощью LLM, получается своеобразная дистилляция знаний большой модели в более компактную и быструю.

Так выглядит итоговая архитектура
Так выглядит итоговая архитектура

Если решение положительное, то система подбирает оптимальный тип опроса и точку контакта. Это может быть короткая оценка от одной до пяти звёзд, развёрнутый опрос с возможностью оставить комментарий или что-то среднее — зависит от контекста и истории взаимодействия с клиентом.

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

С точки зрения безопасности и соответствия 152-ФЗ всё решено консервативно: практически вся инфраструктура развёрнута в on-premise. Работаем только с текстами комментариев пользователей, персональные данные за контур не передаём. Поскольку работаем в России, обрабатываем комментарии только на русском языке — это упрощает и модель, и процессы модерации.

Важный момент, который хочется отдельно подчеркнуть: мы не пытаемся запихнуть LLM везде, где только можно. Большие языковые модели отлично справляются с семантическим анализом текста, классификацией по множеству параметров, определением тональности. Но там, где задачу эффективнее решает классический ML или простая бизнес-логика, мы используем именно их. Например, для предсказания оптимального момента запроса отзыва традиционные ML-модели работают лучше и быстрее, чем LLM.

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

Эффективность системы измеряем несколькими метриками. Помимо бизнес-показателей, смотрим на F1 score для оценки качества классификации, и долю отзывов с развёрнутыми комментариями от общего количества. Также отслеживаем долю отзывов, по которым удалось замкнуть обратную связь с клиентом. Что касается ROI, то мы не оцениваем каждую модель отдельно — рассматриваем всё решение как единое целое. За счёт роста числа промоутеров и их более высоких LTV-показателей система полностью окупается.

Что в итоге: уроки и планы

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

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

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

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

Комментарии (0)


  1. sYB-Tyumen
    26.09.2025 07:22

    Не знаю, как там в OMNI, а в обычном приложении Магнита неотключаемое уведомление "Вы воспользовались кассой самообслуживания, ответьте не несколько вопросов", возникающее каждый раз после покупки, привело только к тому, что теперь приложению запрещено на уровне ОС использование уведомлений.