Второй кейс — интернет-магазин воздушных шаров и праздничных композиций. Здесь ассистент не просто отвечает, а показывает товар карточками и кладёт его в корзину сайта прямо из разговора.
Как было
Каталог на тысячу с лишним позиций. Человек пишет «нужно что-нибудь на выписку из роддома» — и продавец в переписке вручную ищет подходящее, скидывает ссылки, пересчитывает сумму. В час пик переписка отвечает через полчаса, к этому моменту половина людей уже заказала в другом месте.
Что сделали
Сотрудник с включённой возможностью «Магазин». Каталог приехал из фида магазина — одним JSON-адресом, а не обходом тысячи страниц: фид отдаёт названия, цены, фото и артикулы за секунду.
В чате это выглядит так: гость пишет запрос, ассистент отвечает словами и подставляет карточки с фото, ценой и кнопкой «В корзину». Кнопка кладёт товар в корзину САЙТА — того самого магазина, с его сессией и его правилами. Наш сервер денег не касается вовсе, оформление идёт как обычно.
Сложность первая: «покажите красные шары» не показывали ничего
Замер на живых диалогах: восемь из восьми запросов вида «нужны красные шары», «хочу заказать 5 синих» не давали карточек вообще. Модель просто не ставила служебный маркер. Хуже того: не видя карточек, она называла позицию по памяти — и в заказ уезжала «Конфета с сердечками» за 8 000 ₽ вместо шаров по 130 ₽.
Починили страховкой: если человек явно просит показать или хочет купить, карточки подбираются сервером по его же словам, без участия модели. Заказ собирается по ТОМУ, ЧТО ПОКАЗАНО на экране, а не по тому, что модель написала текстом.
Сложность вторая: «красные шары на день рождения» находили «Красную розу»
Поиск по всем словам разом не сходился ни с одним названием и скатывался в «любое из слов» — по слову «день» вылезала роза за 1 780 ₽. Теперь из запроса берутся первые значимые слова (цвет + предмет), а повод в поиск не идёт: в названиях товаров его не бывает.
Сложность третья: один товар двумя карточками
Магазин выгружает часть позиций под двумя артикулами — 162 пары из 1 189. В ленте это выглядело как две одинаковые ромашки подряд. Схлопнули по названию.
Сложность четвёртая: смысл вместо совпадения слов
Запрос «что-нибудь на выписку» не содержит ни одного слова из названий товаров. Добавили семантический подбор: у каждого товара считается вектор названия, и когда слова не совпали, карточки подбираются по смыслу. «Подарок мальчику 5 лет» находит «Цифру 5», хотя общих слов нет. Порог подобран так, чтобы посторонний запрос («пицца четыре сыра») честно не находил ничего — пустая полка лучше чужого товара.
Сложность пятая: цены стареют
Каталог, залитый один раз, устаревает молча. Теперь фид обновляется каждую ночь, а у каждой карточки хранится время последней сверки: если обновление сломалось и данным больше трёх суток, цена просто не показывается — ни в карточке, ни в сводке заказа. Названная цена — это обещание, и лучше отправить человека смотреть цену на сайте, чем назвать вчерашнюю.
Сколько стоило
«Стандарт», 3 990 ₽ в месяц. Импорт каталога — бесплатно, это штатная функция: путь к фиду вписывается в настройках сотрудника. Разработки на стороне магазина потребовалось на один вечер — отдать фид и описать поля корзины (адрес, имена полей).
Что получилось
Ночные и выходные запросы «подберите что-нибудь на …» перестали ждать продавца. Подбор занимает секунды, товар уходит в корзину сайта, человек оформляет сам. Продавец подключается там, где нужен человек: сложная композиция, доставка к конкретному часу, оптовый заказ.
Совет из практики
Фид — самое важное решение этого кейса. Обход тысячи страниц ради обновления цен вы делать не станете ни разу в неделю, а один JSON-адрес обновляется по расписанию сам, и каталог в чате всегда совпадает с каталогом на сайте.