Продавец пишет «плитка» — система находит тендеры на керамогранит
Кейс

Продавец пишет «плитка» — система находит тендеры на керамогранит

«Плитка» — это одно слово для продавца и 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. Если категория однозначна — сразу поиск лотов. Если нет — агент уточняет:

Отлично, плитка — востребованная категория!

  1. Керамическая (кафель, керамогранит) — 47 закупок
  2. Тротуарная (брусчатка) — 23 закупки
  3. Показать все

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

При этом движок различает контекст. «Кафель» — сразу керамическая плитка, без уточнений. «Брусчатка» — тротуарная. «Плитка» без контекста — уточняет. Это не словарь синонимов — AI понимает, что кафель не бывает тротуарным.

И это работает не только для плитки. «Халаты» — движок спросит: медицинские или рабочие? «Масло» — моторное, гидравлическое или пищевое? «Кабель» — силовой, оптический, сетевой? Каждый запрос проходит тот же путь: embedding → поиск категорий → уточнение при неоднозначности → лоты с фильтрами.

Вот как это выглядит в Telegram. Продавец написал «у меня небольшое мебельное производство» — система нашла 31 закупку с ценами и регионами:

Скриншот бота TenderRadar: поиск тендеров на мебель

Попробовать бота — демо работает на реальных данных Росэлторг.

Что умеет система кроме поиска

  • Фильтры в тексте. «Мебель в Москве до миллиона» — движок разберёт: товар = мебель, регион = Москва, цена до 1 000 000 руб.
  • Подписки. Продавец подписывается на категорию — каждое утро в 9:00 получает свежие закупки.
  • Трекинг. Каждый переход на площадку логируется. Площадка видит, сколько поставщиков пришло через систему.
  • Профиль. Система запоминает товары и регионы продавца — следующие поиски точнее.

Что даёт площадке

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

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

Система снимает барьер входа. Не нужно изучать классификаторы ОКПД2, не нужно знать номера федеральных законов, не нужно угадывать формулировки. Написал что продаёшь — получил подходящие тендеры.

Что изменилосьБез системыС системой
Поиск подходящего лотаРучной перебор по ключевым словам и кодамОписание товара обычным языком
Время от запроса до результатаМинуты на фильтрацию и просмотрДо 10 секунд
Обработка неоднозначностиНа усмотрение поставщикаAI уточняет категорию
Новые закупкиПоставщик проверяет самЕжедневная рассылка в 9:00
Аналитика переходовНетКаждый клик отслеживается

Что не идеально

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

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

Уточнение категории не всегда нужно. Иногда система переспрашивает там, где продавец считает ответ очевидным. Мы настроили пороги уверенности и добавили «здравый смысл» в логику (кафель = керамическая, брусчатка = тротуарная), но граничные случаи остаются.

Это первая версия. Система построена как рабочая демонстрация для площадки. Архитектура готова к нагрузке (очереди задач, оптимизированные индексы, ограничение частоты запросов), но реальная аудитория покажет, какие паттерны использования мы не предусмотрели.

Технический стек

КомпонентТехнология
BackendNestJS 11 + TypeScript (strict)
AI-агентClaude Agent SDK (оркестрация 8 tools)
EmbeddingsOpenAI text-embedding-3-small
Векторный поискPostgreSQL + pgvector (HNSW)
ОчередиRedis + BullMQ (5 очередей)
ИнтерфейсTelegram Bot API
Фид данныхXML Росэлторг (ежедневный импорт)
Деплойpm2

Читайте также


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

С вами была команда GoogleSheets.ru, мы строим AI-решения поверх работающей интеграции, а не вместо неё.

Не хотите разбираться сами?

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

КМ
Константин
Менеджер проектов · ответит в течение часа

Как автоматизация окупается → Чеклист: 7 процессов для автоматизации →

140+ реализованных проектов
Google Products Expert в команде

Хотите такой же результат?

Расскажите о задаче — предложим решение и покажем релевантные кейсы.

Написать в Telegram

Подписывайтесь — делимся скриптами, кейсами и лайфхаками