← Медиа

179 закупок за неделю, наших из них - пять. Как ИИ-конвейер находит их сам

За одну обычную июльскую неделю 2026 года рынок опубликовал 179 закупок с нашими ключевыми словами. Вручную мы в БизнесМатике разбирали около 12 тендеров в месяц, то есть меньше 150 за год. Сравнение неточное (опубликованная закупка и разобранный тендер это разные объёмы работы), но порядок величин отрезвляет. За неделю рынок выдаёт больше, чем мы прочитывали за год.

Список мы получили так. Взяли ключевые слова, которыми описывается всё, что мы делаем (заказная разработка, ИИ-ассистент, чат-бот, аутстафф и им подобные), и выгрузили у агрегатора закупок TenderGuru всё, что нашлось по ним за семь июльских дней. Читать эти 179 позиций глазами мы не стали, потому что проверяли другое - справится ли с ними машина. Мы собрали прототип будущей воронки (несколько жёстких правил плюс дешёвая языковая модель), прогнали список через него, а результат проверили руками. Мы и раньше догадывались, что часть подходящих закупок проходит мимо, но масштаб этого «мимо» увидели впервые.

Своих среди 179 оказалось всего 5, и ещё 9 требуют человеческого взгляда. Поначалу это звучало утешительно - раз своего мало, можно жить по-старому. Утешение рассыпается от простого вопроса, кто будет прочитывать все 179 закупок каждую неделю, чтобы найти в них эти немногие. Остальные 165 отсеялись двумя разными способами. Часть сняли формальные признаки - госзаказ по 44-ФЗ (мы с ним принципиально не работаем) и истёкшие сроки подачи. Остальное оказалось содержательным шумом вроде лицензий на антивирусы, которые в закупках проходят под кодом «разработка программного обеспечения», или мебели для института, у которого «ИИ» стоит прямо в названии. Жемчужина выборки - это «поставка оборудования LLM модели в среде 1С» за 7,5 млн рублей, где LLM оказался артикулом железки, никак не связанной с языковыми моделями.

Воронка тестовой недели: 179 закупок, из них 87 сняли бесплатные правила, 78 отсеяла дешёвая модель, осталось 5 бесспорных и 9 спорных
Что осталось от недельного потока. Числа из отчёта обкатки 9 июля 2026 года.

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

Прототип снял 9/10 потока ещё до дорогого разбора, и мы построили эту воронку в коде. Система, которая из этого выросла, держится на принципе, который звучит скучнее модных обещаний полностью автономного ИИ-агента, - ИИ читает весь поток закупок, а решения принимает человек.

Тендеры находили случайно, разбирали единицы

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

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

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

3-4 поданные заявки в месяц - это всё, на что хватало такой механики. Мы в этот предел и упирались.

Конвейер от объявления до готовой заявки

В июле 2026 года мы запустили систему, которая ведёт тендер по всему маршруту:

  • обнаружение в ленте закупок и быстрая оценка по карточке закупки;
  • выгрузка документации и разбор её в единое техзадание;
  • оценка по критериям с итоговым баллом, а по ней решение «идём или не идём»;
  • сборка коммерческого предложения и заявочного пакета;
  • финальная выверка и подача.

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

Маршрут тендера из семи шагов: пять делает система, два закреплены за человеком - решение идём или не идём и финальная выверка с подачей
Маршрут целиком. Синим - шаги системы, оранжевым - две точки, где решает человек.

Сначала бесплатные правила, потом дешёвая модель, и только потом дорогая

Мониторинг устроен без экзотики. Подписка на TenderGuru стоит 12 900 рублей за полгода (тариф «Стандарт», 2026 год). Каждый час система обходит у агрегатора ленты целевых площадок, забирает свежие извещения, убирает дубли и заводит карточки закупок.

Дальше поток проходит через три сита, и они устроены по возрастанию цены. Первое сито бесплатное. Обычный код без всякого ИИ отбрасывает закупки по 44-ФЗ (госзаказ вне нашего периметра), процедуры с уже истёкшим сроком подачи и закупки с площадок соседних стран, которые агрегатор индексирует наравне с российскими. Он же прогоняет каждое название через правила профиля и отсеивает всё, в чём нашей работы нет. На тестовой неделе таких правил было всего два, закон и просроченные сроки, и они сняли 87 закупок из 179, то есть половину потока, не потратив ни одного обращения к языковой модели. Остальные правила выросли из промахов, которые случились позже.

Второе сито - это дешёвая языковая модель, которой хватает названия, заказчика, цены и куска описания закупки. Она отвечает на один вопрос - наш это профиль или мимо. На той же неделе она разобралась с оставшимися 92 закупками и отсеяла из них 78 (лицензии, стройку, поставки железа, случайные совпадения слов). Осталось 5 закупок, по которым сомнений не было, и 9, которые модель пометила как сомнительные и отправила человеку на просмотр.

Третье сито дорогое - это глубокий разбор документации сильной моделью, и оно включается только для тех закупок, что прошли первые два. В те дни поток давал около 26 находок в день, а до дорогого разбора доходило около 2. Восемь процентов потока вместо ста - вот вся экономика этой конструкции, и ради неё стоило городить три ступени вместо одной. С тех пор мы стали забирать с площадок больше извещений, и поток вырос примерно вдвое.

Три сита по возрастанию цены: правила в коде бесплатно сняли 87 из 179, дешёвая модель за копейки отсеяла 78 из 92, сильная модель разбирает 8% потока
Три сита и цена каждого. Чем дороже проверка, тем меньше закупок до неё доходит.
Экран со списком тендеров: заказчик, направление работ, балл скоринга, статус и дедлайн подачи
Так поток выглядит внутри системы. Здесь и дальше - рабочий интерфейс на стенде с демонстрационными данными: реальных заказчиков в публичном кейсе мы не показываем.

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

Экран «Отсеянные»: у каждой отброшенной закупки написано человеческим языком, почему она мимо, и стоит кнопка вернуть к рассмотрению
Экран «Отсеянные». Колонка «почему мимо» - то самое объяснение словами, а кнопка справа возвращает закупку в работу.

Доверял ли я тому, что система видит весь рынок? Нет, и правильно делал. Ещё на прототипе я сверил недельную выгрузку с рассылкой другого агрегатора и нашёл три закупки, которых в нашей выгрузке не было вовсе. А в конце июля мне пришёл конкурс на внедрение ИИ-агентов. Ближе этой темы для нас ничего не бывает, и система его вообще не видела - в базе конкурса не было, ни одно слово нашего тогдашнего словаря в название не попало. Дальше стало ещё интереснее. Добавить в словарь слово «ИИ-агент» не помогло бы, потому что поиск агрегатора по этому слову наш конкурс не находит, хотя оно стоит прямо в названии. Обнаружение работало, только когда мы угадали формулировку и чужой поисковый индекс с нами согласился.

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

Ни один балл не приходит голым

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

Из выгруженной документации система собирает единое техзадание, и по нему тендер проходит скоринг (оценку по критериям) в два яруса. Первый ярус - это флаги, и каждый флаг про свой способ вляпаться. Один поднимается, когда заказчику нужна готовая коробка с лицензией и разработчик ему не требуется. Другой - когда в квалификационных требованиях стоит статус, которого у нас нет. Третий - когда контракт крупнее 30 млн рублей, потому что проекты такого размера мы пока не вывозим. Поднятый флаг выносит проблему человеку вместе с баллом, а тендер остаётся в работе. Сначала эти флаги задумывались жёсткими отсекателями. Потом мы прогнали скоринг по архиву из 50 своих разобранных тендеров, где решения и причины отказов были известны заранее, и увидели, что на этой разметке автоматика угадывает не лучше монетки. Отсекать что-либо с такой точностью нельзя, и флаги стали мягкими. Второй ярус взвешивает критерии (референсы под предмет закупки, соответствие нашему каталогу услуг, экономику и условия оплаты, реалистичность сроков, шансы против конкурентов в этой закупке). Состав критериев, веса и пороги живут в данных, поэтому меняются без правки кода и без выкладки новой версии. Отдельного экрана для этого мы пока не сделали, так что правки вносятся прямой командой системе.

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

Блок скоринга на карточке тендера: флаги пройденных проверок, семь критериев с весами и баллами, раскрытое обоснование по критерию «Экономика и оплата» со ссылкой на пункт договора
Разложение балла на карточке. Клик по критерию раскрывает обоснование - здесь видно, откуда взялись 11 баллов за экономику и на какой пункт проекта договора смотрела модель.

Решение по каждому кандидату принимает владелец процесса. Система присылает в Telegram сводку (заказчик, предмет, балл, дедлайн) со ссылкой на карточку, человек читает разложение балла по критериям и нажимает «идём» или «не идём». Автоматический проход по порогу балла мы сознательно не включили - сначала скоринг должен набрать статистику человеческих решений, по которой мы откалибруем веса и порог.

Всё, что система делает, пишется в трассу (сквозной журнал каждого шага). Какие файлы скачаны, какой запрос ушёл в модель, что модель ответила, сколько токенов стоил вызов, кто и когда нажал какую кнопку - у каждого тендера этот журнал полный. Языковые модели подключены через один шлюз, и какая модель работает на каком шаге, задаётся конфигурацией (сегодня это Claude, а переезд к другому поставщику стоит одного адаптера). По той же трассе считается месячный расход на модели, хотя на экран мы его пока не вывели.

Коммерческое предложение пишет конвейер, арифметику проверяет код

После «идём» система собирает коммерческое предложение по шагам (анализ задачи заказчика, техническое решение, план работ, смета на наших ставках, риски и допущения). Черновик проходит трёх автоматических критиков. Первый проверяет смету, второй проверяет стиль, третий сверяет содержание с исходной документацией тендера - всё ли учтено, нет ли отсебятины.

Самая важная деталь этого шага на первый взгляд скучная - арифметику сметы (часы, ставки, произведения, итоги, вилки) пересчитывает обычный код, без нейросетей. Языковая модель умеет убедительно ошибаться в умножении, поэтому умножение проверяет калькулятор. Проверка арифметики кодом - это первый предохранитель конвейера, а второй ловит ошибку покрупнее умножения. Если смета сулит заказчику объёмы и сроки щедрее, чем допускают наши правила оценки проектов (этому вердикту мы дали имя «переобещание»), конвейер останавливается до починки сметы, и никакая красота текста его не запустит.

В июне 2026 года мы публиковали подробный кейс Телескопа, и главный вывод оттуда переехал сюда без изменений. Самое сложное в LLM-проекте - это данные и проверки вокруг модели. Сама модель - это меньшая из наших забот.

Заявка без пустых полей

После одобренного коммерческого предложения остаётся собрать заявку, то есть пакет документов по перечню конкретного заказчика (анкеты участника, справки, декларации, формы в его шаблонах). Система вычитывает этот перечень из документации тендера и строит чек-лист, где у каждой позиции есть ответственный, формат и статус. Человеку больше не приходится держать перечень в голове и вспоминать в последний вечер, что заказчик просил ещё и справку о численности сотрудников.

Текстовые формы система заполняет сама из библиотеки реквизитов компании - вплоть до родного xlsx-файла заказчика, с его вёрсткой и его листами. Что надёжно заполнить нельзя, помечается как ручная позиция, и человек дозаполняет её сам. Паспортные данные руководителей система не хранит и не заполняет принципиально - на их месте в форме остаётся заметная метка, а в чек-листе у такого документа горит пометка «ПДн - вписать вручную».

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

Чек-лист заявочного пакета: восемь позиций с ответственным и статусом, у одной пометка ПДн - вписать вручную, внизу счётчик не закрыто: 1 и кнопка «Заявочный пакет выверен»
Чек-лист пакета. Счётчик «не закрыто» не даёт объявить пакет готовым, пока в обязательной позиции пусто.

Как эта система построена

Весь код системы написал ИИ-агент. Люди ставили задачи, принимали каждый готовый кусок на работающем продукте и разбирали спорные места - в журнале инженерных решений за время стройки накопилось 170 записей. Скелет системы поднялся за первые сутки, сквозной прогон от заведения тендера до собранного пакета прошёл приёмку на третий день разработки (на учебном тендере, который мы завели специально, чтобы проверить весь конвейер, не завися от площадок), дальше около трёх недель система дозревала на живом потоке закупок. Сейчас её покрывают 487 автотестов, и они гоняются при каждом изменении кода.

Способ стройки вырос из того же принципа, на котором стоит сама система. ИИ делает объёмную работу, человек держит контрольные точки.

Что изменилось

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

Что здесь измерено, а что пока держится на конструкции, разделю. Замеряли мы одно - экономику воронки на выборке той самой недели, и цифры приведены выше. Остальное пока держится на устройстве системы и ждёт своих замеров - закупка с коротким окном подачи попадает к нам ближайшей ночью после публикации (агрегатор наполняет ленту суточными пакетами, и мы забираем каждый), а разбор кандидата сводится для человека к чтению готовой карточки вместо дня работы с файлами.

Цели, по которым мы будем судить о первом квартале работы системы, - это 40 полных разборов в месяц против 12 вручную, 8 поданных заявок против 3-4 и ноль отклонений по формальным причинам. Побед в этом кейсе не обещаю. Итоги тендерных процедур объявляют месяцами, так что первые победы и поражения станут известны позже, чем мы подведём эти цифры. Напишу отдельно, когда будут.

Сравнение: 12 разборов в месяц вручную против цели 40, 3-4 поданные заявки против цели 8, ноль отклонений по формальным причинам
Что было вручную и что система должна дать за первый квартал. Зелёное - цели, а не достигнутый результат.
Экран отчёта по воронке: обнаружено, прошло предскоринг, отскорено, одобрено владельцем, подано, выиграно - с конверсией между стадиями
Отчёт по воронке считает конверсии сам. По нему и будем сверять цели с фактом.

Если у вас похожая задача

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

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

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