Выгрузка
У сайта-источника нашёлся открытый JSON API. Весь каталог
снимается двадцатью запросами вместо обхода десяти тысяч страниц, а полнота
сверяется с полем total: 9 966 из 9 966.
Витрина из выгрузки 1С
У источника нет ни фотографий, ни описаний, ни цен, ни категорий — только строка названия на товар. Все характеристики, разделы и фильтры на этой витрине извлечены из этих строк автоматически.
Что происходит с товаром
Ниже — настоящий товар из каталога, загруженный прямо сейчас через тот же API, что обслуживает витрину. Слева то, что есть у источника. Справа то, по чему на витрине работают фильтры.
Как это сделано
У сайта-источника нашёлся открытый JSON API. Весь каталог
снимается двадцатью запросами вместо обхода десяти тысяч страниц, а полнота
сверяется с полем total: 9 966 из 9 966.
Числа, единицы, резьба, зернистость, хвостовик, материал и цвет вынимаются детерминированными правилами. Категория и бренд — по словарю подсказок таксономии. Результат воспроизводим и не зависит от квоты на модель.
Характеристики ложатся в SQLite с полнотекстовым индексом. Набор фильтров в сайдбаре зависит от выбранной категории: у свёрл — диаметр и хвостовик, у ЛКМ — объём и цвет, у крепежа — резьба и длина.
Что получилось
Считаются на лету по той же базе, что обслуживает каталог, — поэтому не могут разойтись с тем, что вы увидите в фильтрах.
На товар приходится — характеристики. Это потолок самих данных, а не метода: 18 % названий в выгрузке не содержат ни одного параметра — «Кисть плоская, шт» извлекать не из чего. Цены на витрине демонстрационные: в источнике у всех 9 966 позиций стоит «1 ₽», поэтому они сгенерированы детерминированно по категории.
Поверх каталога
Покупатель описывает задачу словами — агент ищет по тем же 9 966 позициям и предлагает то, что действительно есть на складе. Параллельно из реплик собирается карточка лида для отдела продаж: задача, параметры, объём, бюджет, сроки, город, тип клиента, контакты.
Инверсия роли: менеджер не заполняет CRM — агент сам структурирует разговор, а владелец видит готовую карточку.
Защита от выдумывания
Каталог не помещается в промпт, поэтому модель не «вспоминает» товары, а получает результаты поиска по базе. Всё, что она называет, сверяется с SQLite по идентификатору: карточки под ответом рисует интерфейс из проверенных позиций, а не текст модели. Придуманный товар физически не может доехать до покупателя.
Каталог с фасетными фильтрами и консультант работают на реальных данных источника.