ИИ может разобрать тендерное ТЗ, выделить позиции и характеристики, найти товары во внутренних каталогах, проверить аналоги и собрать черновик коммерческого предложения. В пилоте REGION SNAB поиск шёл каскадом: сначала собственная база, затем разрешённые внешние источники. Каждая строка сохраняла источник и статус exact, similar или none. Менеджер проверял цену, соответствие и итоговый документ перед отправкой.
Входом бывает не только таблица
Техническое задание приходит в DOC, DOCX, XLS, XLSX, PDF, TXT или изображении. В одном файле заголовок находится в первой строке, в другом таблица начинается после нескольких служебных блоков. В PDF текст может быть изображением.
Поэтому загрузка разделена на извлечение и нормализацию:
файл
→ native parser или OCR/vision
→ позиции
→ количество и единица
→ обязательные характеристики
→ нормализованный запросОригинал сохраняется неизменным. Для каждого значения остаётся ссылка на файл, лист и строку или страницу.
Сначала внутренние источники
Результаты передаются проверяющему модулю. Он решает:
exact: обязательные характеристики совпадают;similar: найден аналог с видимыми отличиями;none: подтверждённого варианта нет.
Общее название или близкий embedding не должны автоматически превращаться в точное совпадение.
Внешний поиск как запасная ветка
Если внутреннего варианта нет и менеджер разрешил внешний поиск, система обращается к маркетплейсам и открытым источникам. URL сохраняется, цена проверяется по живой карточке, а результат помечается для review.
Языковая модель не является источником цены. Она помогает понять страницу и сравнить характеристики. Цена берётся из карточки или API.
Защита от ложных цен
Маркетплейс может показывать цену по карте или кошельку. Такая сумма не всегда доступна компании. В правилах REGION SNAB специальная цена отклоняется, если обычная не подтверждена.
Внутренние прайсы тоже требуют проверки. В реальных файлах встречались пустая себестоимость, дубли и значение NaN, которое наивный код принимал за число. Парсер валидирует цену отдельно.
Расчёт и документы
После сопоставления код применяет согласованные правила наценки и собирает строку:
{
"requested_item": "обезличенная позиция",
"match_status": "similar",
"source_ref": "price.xlsx / sheet / row",
"differences": ["видимое отличие"],
"review_required": true
}Из строк формируются Excel и PDF. Документ не отправляется автоматически: менеджер видит сомнительные позиции и источники.
Что ломалось
Общие названия давали ложные точные совпадения. Мы добавили тип товара и обязательные характеристики. Короткое слово с опечаткой иногда воспринималось как обычный вопрос, поэтому маршрутизатор получил отдельное правило товарного запроса.
Внешние страницы отвечали captcha или блокировали серверный браузер. Источник без доступной карточки перестал считаться подтверждённым. Импорт прайса по URL получил защиту от SSRF и проверку редиректов.
Текущий статус кейса
Пилот и рабочее место реализованы, результаты тестовых прогонов сохранены. На 28.09.2026 сервисы неактивны, а публичный домен отвечал 502. Поэтому мы описываем реализованный пилот и его код, но не называем его действующим публичным SaaS.
Что проверить перед отправкой КП
Менеджер смотрит позиции similar и none, обычную цену, срок актуальности источника, количество, единицу и формулу расчёта. Он также проверяет реквизиты и финальный PDF.
Geron Labs может собрать пилот на синтетическом ТЗ и обезличенном прайсе. Вы увидите источники и спорные строки до подключения клиентских документов.