Продавец пишет «плитка» — система находит тендеры на керамогранит
Нужна автоматизация? Обсудим вашу задачу бесплатно
Написать в Telegram«Плитка» — это одно слово для продавца и 47 кодов ОКПД2 для площадки электронных торгов. Керамическая или тротуарная? Напольная или фасадная? Глазурованная 600×600 или клинкерная 240×71?
Представьте себе маркетплейс, где вы вбиваете «кроссовки» — а в выдаче шлёпанцы, лыжные ботинки и резиновые сапоги. Примерно так выглядит поиск тендеров для поставщика, который знает свой товар, но не знает язык закупок.
Мы построили поисковый движок, который этот барьер убирает. Первый интерфейс — Telegram-бот: привычный, не требует регистрации, работает с телефона.
Зачем это площадке
Росэлторг зарабатывает на сделках. Чем больше поставщиков участвует в торгах — тем выше конкуренция, ниже цены для заказчиков, больше закрытых лотов. Площадке выгодно, чтобы продавцы находили подходящие закупки и подавали заявки.
Но между «продавец зашёл на площадку» и «продавец подал заявку» стоит барьер — терминология. Государственные и коммерческие закупки описываются на своём языке: коды ОКПД2, номера по 44-ФЗ и 223-ФЗ, формулировки вроде «поставка изделий из керамогранита глазурованного для внутренней облицовки». Продавец, который всю жизнь называл свой товар «кафель», просто не найдёт нужный лот.
Результат — упущенные тендеры для поставщиков и меньше участников торгов для площадки. Обе стороны теряют деньги из-за того, что говорят на разных языках.
Вопрос в том, можно ли этот разрыв закрыть автоматически. Первая мысль — просто улучшить поиск.
Почему поиск по ключевым словам не работает
Мы начали с простого вопроса: а можно ли обойтись без AI? Добавить синонимы, расширить словарь, настроить фильтры?
Попробовали — и быстро поняли, почему нет. Вот три реальные ситуации.
Ситуация 1. Поставщик производит кафель. Вбивает «кафель» в поиск. Результат: ноль. В закупках такого слова нет — там «керамическая плитка для внутренних работ» или «керамогранит напольный». Текстовый поиск по «кафель» ничего не находит, и поставщик уходит, решив что подходящих закупок нет. А их — 47.
Ситуация 2. Другой поставщик вбивает «плитка». Результаты: керамическая, тротуарная, потолочная, резиновая, клинкерная, ПВХ. Шесть разных товаров, объединённых одним словом. Текстовый поиск находит всё — и ничего полезного.
Ситуация 3. Третий пишет «хочу поставлять мебель в Москве». Текстовый поиск не знает, что «в Москве» — это фильтр по региону, а не часть названия товара.
Во всех трёх случаях нужно не совпадение слов, а понимание: что за товар, какая категория, какие фильтры. Это задача для AI.
Что мы построили
Поисковый движок для электронных торгов. Продавец описывает товар обычным языком — система находит подходящие тендеры на Росэлторг. Telegram-бот, но ценность в движке: его можно встроить в сайт площадки, мобильное приложение или личный кабинет.
Под капотом — NestJS API с AI-агентом, который оснащён инструментами: поиск категорий, поиск лотов, фильтрация, подписки, трекинг переходов. Telegram-бот — тонкий клиент, обращающийся к этому API.
Поиск работает в два этапа. Первый — семантический: запрос продавца сопоставляется с категориями ОКПД2 через векторные представления. Второй — структурный: внутри найденной категории лоты фильтруются по коду ОКПД, региону и цене. Вектор отвечает за понимание смысла, структура — за точность и скорость выборки.
Ежедневно в 01:00 система скачивает свежие закупки Росэлторг и индексирует их по категориям.
Как работает поиск
Продавец пишет: «плитка»
Запрос попадает не в фиксированный конвейер, а в AI-агента — он сам решает, какие инструменты вызвать и в каком порядке. Вот что происходит на примере «плитки»:
Шаг 1. Агент превращает запрос в «смысловой отпечаток» и ищет ближайшие по смыслу категории в справочнике ОКПД2, который заранее обогащён синонимами и разговорными названиями.
Шаг 2. Если категория однозначна — сразу поиск лотов. Если нет — агент уточняет:
Отлично, плитка — востребованная категория!
- Керамическая (кафель, керамогранит) — 47 закупок
- Тротуарная (брусчатка) — 23 закупки
- Показать все
Шаг 3. После выбора категории — поиск конкретных лотов с фильтрами по региону и цене. Каждый результат — карточка с названием, суммой, сроком подачи и ссылкой на площадку.
При этом движок различает контекст. «Кафель» — сразу керамическая плитка, без уточнений. «Брусчатка» — тротуарная. «Плитка» без контекста — уточняет. Это не словарь синонимов — AI понимает, что кафель не бывает тротуарным.
И это работает не только для плитки. «Халаты» — движок спросит: медицинские или рабочие? «Масло» — моторное, гидравлическое или пищевое? «Кабель» — силовой, оптический, сетевой? Каждый запрос проходит тот же путь: embedding → поиск категорий → уточнение при неоднозначности → лоты с фильтрами.
Вот как это выглядит в Telegram. Продавец написал «у меня небольшое мебельное производство» — система нашла 31 закупку с ценами и регионами:
Попробовать бота — демо работает на реальных данных Росэлторг.
Что умеет система кроме поиска
- Фильтры в тексте. «Мебель в Москве до миллиона» — движок разберёт: товар = мебель, регион = Москва, цена до 1 000 000 руб.
- Подписки. Продавец подписывается на категорию — каждое утро в 9:00 получает свежие закупки.
- Трекинг. Каждый переход на площадку логируется. Площадка видит, сколько поставщиков пришло через систему.
- Профиль. Система запоминает товары и регионы продавца — следующие поиски точнее.
Что даёт площадке
Для Росэлторг система решает конкретную бизнес-задачу: привлечение поставщиков к участию в торгах. Каждый переход на лот — это потенциальная заявка. Больше заявок — больше конкуренция — лучше цены для заказчиков.
Логика простая: на площадке тысячи лотов в день. Даже если система увеличивает конверсию «зашёл → подал заявку» на несколько процентов — это десятки дополнительных участников торгов ежедневно. Каждый дополнительный участник снижает цену для заказчика и увеличивает оборот площадки.
Система снимает барьер входа. Не нужно изучать классификаторы ОКПД2, не нужно знать номера федеральных законов, не нужно угадывать формулировки. Написал что продаёшь — получил подходящие тендеры.
| Что изменилось | Без системы | С системой |
|---|---|---|
| Поиск подходящего лота | Ручной перебор по ключевым словам и кодам | Описание товара обычным языком |
| Время от запроса до результата | Минуты на фильтрацию и просмотр | До 10 секунд |
| Обработка неоднозначности | На усмотрение поставщика | AI уточняет категорию |
| Новые закупки | Поставщик проверяет сам | Ежедневная рассылка в 9:00 |
| Аналитика переходов | Нет | Каждый клик отслеживается |
Что не идеально
AI стоит денег. Каждый запрос — это вызов API для понимания текста и генерации векторных представлений. При росте аудитории стоимость растёт линейно. На текущем этапе это приемлемо, при масштабировании нужно считать юнит-экономику. При этом система не привязана к конкретному вендору: AI-агент и embeddings работают через стандартные API, которые можно заменить — вплоть до локальных моделей в закрытом контуре, если данные не должны покидать периметр площадки.
Качество ранжирования зависит от описания лота. Каждый лот содержит код ОКПД — система расшифровывает его и обогащает описание, так что даже скупо оформленные закупки попадают в выдачу. Но чем подробнее исходное описание — тем точнее ранжирование результатов.
Уточнение категории не всегда нужно. Иногда система переспрашивает там, где продавец считает ответ очевидным. Мы настроили пороги уверенности и добавили «здравый смысл» в логику (кафель = керамическая, брусчатка = тротуарная), но граничные случаи остаются.
Это первая версия. Система построена как рабочая демонстрация для площадки. Архитектура готова к нагрузке (очереди задач, оптимизированные индексы, ограничение частоты запросов), но реальная аудитория покажет, какие паттерны использования мы не предусмотрели.
Технический стек
| Компонент | Технология |
|---|---|
| Backend | NestJS 11 + TypeScript (strict) |
| AI-агент | Claude Agent SDK (оркестрация 8 tools) |
| Embeddings | OpenAI text-embedding-3-small |
| Векторный поиск | PostgreSQL + pgvector (HNSW) |
| Очереди | Redis + BullMQ (5 очередей) |
| Интерфейс | Telegram Bot API |
| Фид данных | XML Росэлторг (ежедневный импорт) |
| Деплой | pm2 |
Читайте также
- AI-классификация документов: 95% точность — ещё один AI-кейс, другая задача: классификация вместо поиска
- Как мы строим интеграции: очереди, retry, мониторинг — архитектурные принципы, которые применяем в каждом проекте
Если у вашей площадки или маркетплейса похожая задача — поставщики не находят то, что ищут, потому что не знают «правильные» слова — напишите нам. Покажем, как AI-поиск работает на живых данных и посчитаем, имеет ли смысл для вашего случая.
С вами была команда GoogleSheets.ru, мы строим AI-решения поверх работающей интеграции, а не вместо неё.
Не хотите разбираться сами?
Если читали статью и поняли, что руками уже не справляетесь — напишите. Оценим задачу бесплатно и предложим решение.
Как автоматизация окупается → Чеклист: 7 процессов для автоматизации →
Похожие статьи

Дистрибьютор автозапчастей обновлял каталог 3 дня вручную. Построили конвейер Node.js + Claude API — теперь обновление занимает 1 час, ошибок в 8 раз меньше.

Конвейер GAS + Claude API для классификации 200+ документов в день. Сортировка: с 3 часов до 15 минут, точность 95%.

Как мы собрали для девелопера Дирижабль систему координации юридических текстов в рекламе: генерация дисклеймеров и отслеживание изменений по десяткам ЖК.
Хотите такой же результат?
Расскажите о задаче — предложим решение и покажем релевантные кейсы.
Написать в TelegramПодписывайтесь — делимся скриптами, кейсами и лайфхаками