Перейти к содержимому
Все кейсыИнженерные системы

Инженерная компания, Казань

Агент отбора тендеров: читает ленту закупок и приносит только то, что подходит компании

261Закупок под наблюдением
Инженерная компания, Казань

Компания автоматизирует инженерные системы и участвует в закупках. Фильтры в тендерной площадке настроены, но лента по ним даёт сотни позиций, и разбирать их приходится собственнику лично. Мы собрали контур, который делает первый проход за него: обходит источник по расписанию, отсеивает заведомо чужое обычным кодом, скачивает документацию, готовит первичную оценку и присылает карточку в Telegram. Решение остаётся за человеком, и именно его решения становятся обучающим материалом. Отдельное требование: расход на модель предсказуем и остаётся на стороне компании, поэтому агент работает на её машине и её подписке.

Проблема
  • Лента закупок по фильтрам компании даёт сотни позиций, читать их руками некому
  • Понимание, наш тендер или нет, живёт в голове собственника и нигде не записано
  • Документация закупки лежит архивами, без неё оценка превращается в гадание
  • Расход на модель должен быть предсказуемым, а не открытым счётчиком
Решение
  • Конвейер обычным кодом: опрос источника, дедупликация, отсев по регионам, суммам, срокам и ОКПД до обращения к модели
  • Первичная оценка сутью в один абзац и карточка в Telegram владельцу
  • Три кнопки под карточкой: подходит, шум, разобрать глубоко. Отметки копятся и превращаются в правила отбора
  • Углублённый разбор документации по кнопке, с журналом операций и месячной квотой
  • Портрет компании и правила правятся текстом, без похода к разработчику
  • Агент развёрнут на машине компании, обновления доставляются автоматически и переживают перезагрузку
Результат
261 закупка под наблюдением
Собственник смотрит карточку с сутью вместо ленты из сотен строк
Отбор обучается на отметках владельца, а не на догадках подрядчика
Расход считается операциями, квота на углублённый разбор задаётся в настройках
Контур рассчитан на несколько компаний: новая заводится копией папки с настройками, без правок кода

Задача

Компания участвует в закупках. Фильтры в тендерной площадке настроены давно, но лента по ним даёт сотни позиций, и разбирать их приходится собственнику лично: критерии отбора живут у него в голове и нигде не записаны.

Заявка звучала так: пусть первый проход делает агент, а решение остаётся за мной.

Почему конвейер, а не «агент, который всё сам»

Опрос источника, дедупликация, отсев по регионам и суммам, скачивание документов и журнал операций - это обычный код. Гонять расписание через агентский цикл значит платить моделью за работу, которую делает условный оператор, и терять предсказуемость расхода. Поэтому механику делает код, а модель включается там, где нужно понимание текста.

Обход источника раз в полчаса. Дешёвый фильтр работает до модели: явный мусор отсекается бесплатно, до платной оценки доходит только спорное. Каждое решение фильтра объясняется словами и сохраняется, поэтому всегда видно, почему закупка не дошла до человека.

Разговор, который снял половину конструкции

Первая версия отсеивала сама: стоп-слова, порог оценки, минимальная сумма. На созвоне собственник разложил по шагам, как он хочет на самом деле: отбор делает его фильтр в площадке, всё, что в него попало, обязано пройти обработку, дальше поверхностная первичная аналитика, карточка в мессенджере и решение кнопкой.

Пришлось обнулить стоп-слова, снять порог оценки и ограничить первичный разбор тремя документами. Плюс поставить предохранитель на прогон, чтобы не залить чат сотней карточек разом. Это тот случай, когда правильная работа - убрать своё, а не добавить нового.

Как он учится

Под каждой карточкой три кнопки: подходит, шум, разобрать глубоко. Отметки копятся в базе. Регулярное «мимо» на однотипных закупках превращается в стоп-слово или в границу по сумме. Портрет компании и правила лежат текстовыми файлами и читаются на каждом прогоне, поэтому владелец правит их сам, без похода к разработчику.

Углублённый разбор документации - платная операция, поэтому он вызывается кнопкой и попадает в журнал. Расход считается операциями, а не токенами, и на месяц задаётся квота: при её исчерпании глубокие разборы останавливаются, а мониторинг и первичные оценки продолжают работать.

Где он живёт

Агент развёрнут на машине компании и работает на её подписке: расход остаётся у заказчика, данные не уезжают к подрядчику. Автозапуск переживает перезагрузку, сон при питании от сети отключён, иначе и агент, и канал связи отваливались бы каждую ночь.

Обновления доставляются сами. Сторож на нашей стороне ловит машину, когда она появляется в сети, докатывает код одним архивом с проверкой контрольной суммы, потому что половины обновления на машине быть не должно, и забирает обратно накопленную статистику решений.

Осторожность вместо бодрости

Жёсткое правило: нет данных - агент говорит об этом прямо. Если документы закупки не читаются, суть помечается как предположение, а не выдаётся за факт. Регистрация на электронных площадках агенту закрыта их же политикой безопасности, обойти это нельзя, и он не делает вид, что смог.

На запуске обязательна отсечка: всё, что уже накопилось в фильтре, помечается виденным. Без неё человеку прилетела бы история за месяцы вместо новых закупок, 250 карточек в первую минуту.

Что дальше

Контур с самого начала сделан многокомпанийным: у каждой компании своя папка с конфигом, портретом, словарём и базой, данные не пересекаются. Новый клиент заводится копированием папки, правок в коде не требуется.

Тендеры здесь только первая задача. Оболочка ставилась с прицелом на рост: следующими в очереди новостной радар по отрасли и разбор входящих коммерческих предложений.

Разберём вашу задачу за 30 минут

Созвон на полчаса по видео или телефону. Смотрим, как всё устроено сейчас, и говорим, что с этим делать. Бесплатно и ни к чему не обязывает.

КС
Кирилл Смольников
Основатель · стратег

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.

Заявка у нас. Свяжемся в течение дня. Срочно - пишите в Telegram: @Masternobi