Методология

Как закупка находит своего поставщика

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

30 235исторических закупок — на них измерены правила
369 727формулировок в словаре решений
64рынка — единица подбора
9 527профилей поставщиков

1Задача и её ограничение

Уведомление нужно в момент объявления: спецификация опубликована, но ни одной заявки ещё нет и цен никто не видел. Всё, что известно в этот момент, — текст спецификации, объявленная заказчиком сумма, заказчик и срок.

Отсюда жёсткое ограничение постановки: любая логика, которой нужны итоги торгов — цены участников, число заявок, победитель, — для рассылки непригодна по построению.

Жёсткое правило. Поставщик подаёт заявку на закупку целиком, никогда на строку. Единица доказательства — закупка, а не позиция спецификации: фирма, выигравшая лот из 400 строк, получила одно доказательство, а не 400.

2Конвейер: пять шагов в одном порядке

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

  1. 1Сборобъявление и спецификация с etender.gov.azработает
  2. 2Чтениекаждая строка — в рынок по словарю, новое — модельюработает
  3. 3Подбордоли рынков, класс лота, уровни поставщиковв разработке
  4. 4Маршрутизацияподписка × закупка, порядок, личный лимитв разработке
  5. 5ОтправкаTelegram, с причиной в журналев разработке
Путь закупки. Бейдж — состояние шага в Binder на сегодня.

Ни один шаг не требует реального времени: от объявления до срока подачи проходит в медиане 19,9 дня, и только 1 лот из 1 044 закрывается быстрее недели. Чтение может занять часы, не обесценив уведомление.

Сбор идёт через внутренний API площадки: объявление, затем спецификация постранично. Обрезанная спецификация неотличима от короткой, поэтому сборщик скорее не отправит её вовсе, чем отправит часть. Жива ли закупка, решает срок подачи — никогда не статус на площадке.

3Таксономия: сектор → рынок → категория

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

сектор · 14Одежда, обувь и швейные изделия
рынок · 64 · sewШвейное производство
  • одежда
  • ткань
  • костюмы
  • головные уборы
рынок · 64 · shoeОбувное производство
  • обувь
  • тапочки

категория · 1 192 — записывается, но решений не принимает

Три уровня на примере одного сектора. Подбор читает только средний.
  • Идентификатор рынка постоянен (elec, pipe,shoe); названия меняли семь раз, поэтому подписки хранятся по идентификатору.
  • У каждого рынка записана причина, почему он отделён от соседнего. Без неё граница выглядит произвольной, и первый спорный случай разбирают неправильно.
  • Категория заморожена: у 744 категорий из 1 156 нет ни одного поставщика, который ими живёт, а у рынков такие поставщики есть почти всегда.

4Чтение спецификации: словарь и четыре исходаработает

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

Тонкость нормализации: заглавная «İ» должна становиться простой «i». Стандартный перевод в нижний регистр оставляет после неё комбинирующую точку, и тогда 6% строк не находят в словаре собственную формулировку.
рынок + категорияПолный ответ

Известны и рынок, и категория.

205 882 формулировок
только рынокРынок известен

Категория не читалась — для подбора достаточно рынка.

163 845 формулировок
other«Не рынок»

Прочитано: предмета покупки нет — заголовок раздела, накладные, процент. Это ответ, а не пробел.

нет в словареПробел

Строку никогда не читали. Только этот исход — незнание; его закрывает читатель.

Исходов четыре, и сводить их к двум нельзя: «не рынок» — это ответ, а «нет в словаре» — пробел.

Строка сметы несёт второй рынок. Первый, «строительно-монтажные работы», отвечает, кто выиграет тендер. Второй — товарный: у кого подрядчик купит материал уже вне торгов. Он читается отдельно (16 670 сметных формулировок) и нужен, чтобы завод кабеля или труб увидел спрос, которого сейчас не видит.

Проверено. Наше чтение воспроизводит разметку авторов движка на всех 136 402 строках 1 044 открытых закупок — рынок, категорию, второй рынок и цену. На живом потоке 15 октября 2026 года словарь сразу прочитал 84% строк в 1 164 открытых закупках; остальное — работа читателя.

5Чтение новых формулировокработает

Каждая новая закупка приносит формулировки, которых в словаре нет. Их читает языковая модель — по смыслу, а не по совпадению слов: на тех же данных словарь словоформ дал 46,7% точности против 77,2% у чтения. Правила чтения — ровно те, по которым размечен весь корпус.

Пакет из 100 строккаждая под номером, плюс 10 контрольных с известным ответом
Модельправила чтения + список рынков с причинами границ
Проверки
  • ответ на каждый номер, ровно один
  • каждый ответ — существующий рынок
  • формулировка не учтена дважды
Принятв словарь, с датой чтения и именем модели
Отвергнутделится пополам и читается снова
Пакет чтения. Ответ принимается целиком или не принимается вовсе.
  • Нумерация, а не порядок. При ответе списком той же длины модель на пакете из 200 строк потеряла 22 ответа — и каждый следующий ответ сдвинулся на чужую строку. С номерами пропуск виден, и пакет отвергается.
  • Сохраняется каждый ответ, включая «не рынок» и «покупать нечего», с датой чтения. Именно это отличает «прочитано» от «никогда не читалось».
  • Контрольные строки в каждом пакете дают постоянную меру: модель совпадает с разметкой авторов примерно в 3 случаях из 4 (у авторов в пилоте — 79 из 100). Это нижняя граница точности: иногда прав читатель, а словарь устарел.
  • Закупка без спецификации читается по заголовку — до трёх рынков. Такой заголовок даёт рынок, но не долю, поэтому закупка идёт по особому пути.

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

6Доли рынков внутри лотав разработке

Строки складываются в рынки. Доля рынка считается в деньгах: историческая цена строки, умноженная на количество из этой спецификации. Деньгам доверяют, только если цена известна хотя бы у половины строк, иначе доли считаются по числу позиций. На открытых закупках в деньгах судятся 590 лотов из 1 044.

по позициям
Канцелярия 80%Медтехника 20%
в деньгах
6%Медтехника 94%

Условный пример: 40 строк канцелярии и 10 строк медицинской техники.

Один и тот же лот в двух мерах. В позициях томограф весит столько же, сколько скрепка.
Две цены никогда не подменяют друг друга. Исторические цены годятся только для пропорций внутри лота: восстановленная из них сумма занижает реальную примерно в 13,5 раза, потому что непрочитанная строка не даёт ничего. Абсолют — всегда объявленная заказчиком сумма.

7Класс лотав разработке

Главный вопрос о лоте — сколько рынков в нём существенны. Существенный — не меньше 10% стоимости. Ответ определяет, разбирать ли лот на части.

Объявлено меньше 10 000 ₼?
small (322)

мелкий лот: на части не разбирается, но приглашение остаётся

нет ↓
Ни одна строка не прочитана в рынок?
unread (16)

сказать нечего — честный ответ, а не пустой список

нет ↓
Существенный рынок один?
homog (351)

однородный: часть и есть целое

нет ↓
Существенных два и больше
sewn (355)

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

Дерево решения. В скобках — сколько открытых лотов из 1 044 попало в класс.

Порог 10 000 ₼ управляет разбором на части, а не рассылкой: котировки до 30 000 ₼ по закону закреплены за малым бизнесом, и на них нужно приглашать.

8Кого звать: Tier 1, Tier 2 и товарный слойв разработке

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

сшитый лотРемонт школы
работы 62%мебель 23%ИТ 15%

Tier 1

кто возьмёт весь лот

Поставщик покрывает не меньше 50% стоимости лота и подал не меньше 3 заявок. Рынок засчитывается, только если он — не меньше 1% его собственной работы.

Tier 2

кто продаёт отдельную часть

По каждому существенному рынку — профильные: этот рынок не меньше 50% их работы. Победы не требуются. Если профильных меньше 10 — второй список из тех, кто в рынке участвовал.

Товарный слой

у кого подрядчик купит материал

Из вторых рынков сметных строк. Не меняет класс и не входит в доли. Работает на 149 лотах из 1 044; без него на 71 лоте видны только подрядчики, а это 350 млн ₼ объявленных сумм.

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

Порядок решает больше, чем граница допуска. Средний допущенный пул на сшитый лот — около 1 480 фирм, поэтому важно не кого впустили, а кто наверху. Сортировка — опыт поставщика в рынках этого лота: число его заявок в каждом рынке, взвешенное долей рынка в лоте.

ПорядокТочность первой десяткиРеальный участник в десятке
по опыту в рынках лота23,4%83%
по победам8,4%46%
случайный1%9%
Проверка по времени: профили учились на ранних закупках, проверялись на 402 поздних сшитых лотах.

Потолок задачи — 78,7%: у многих лотов участников меньше десяти. Закупка, прочитанная только по заголовку, в Tier 1 не идёт: без долей покрытие посчитать нельзя.

9Девять порогов в одном месте

Каждое число вынесено в настройки и меняется оператором без выпуска новой версии; ни одно не зашито в код по месту использования.

ПорогЗначениеЧто решает
Существенность рынка10% стоимости лотакласс лота, попадание в Tier 2
Доверие деньгам50% строк с ценойсчитать доли в деньгах или в позициях
Порог закупки10 000 ₼разбирать ли лот на части (на рассылку не влияет)
Присутствие в рынке1% работы поставщиказасчитывать ли рынок в покрытие Tier 1
Покрытие для Tier 150% стоимости лотадопуск в первый уровень
Профиль на лоте с одним рынком50% работы поставщикадопуск в Tier 1
Профильный для Tier 250% работы поставщикакто считается специалистом
Тонкий профильменьше 3 заявокниже этого проценты не показываются
Бедный рынокменьше 10 профильныхпоказывать ли второй список

10Рассылка: подписка, а не допускв разработке

Правила подбора допускают, но не упорядочивают. Если отправить всем допущенным, получится около 451 000 уведомлений в неделю — 65 на поставщика. Поэтому получатель выбирает рынки сам, а система отвечает за порядок внутри подписки.

451 000 в неделювсем, кого допускают правила
7,9 в неделю на рынокподписка на свои рынки (медиана по рынкам)
до 3 в суткиличный лимит; сверх него — дайджест
Объём при истинном потоке 430 закупок в неделю.
  • Два режима порядка. Если подписчик назвал VÖEN и у него есть история заявок, порядок — по его опыту в рынках лота (те же 23,4% в первой десятке). Если истории нет — по свойствам лота: доля его рынков, сумма против заданного порога, запас по сроку.
  • Карточка всегда объясняет, почему она пришла: «ваш рынок в этой закупке» с долей — когда лот судится в деньгах, и числом позиций — когда нет.
  • География в подбор не входит: в реалиях страны она не ограничивает поставку, и фильтр по региону отрезал бы работающих поставщиков.

11Обратная связь и метрикив разработке

Ни одна площадка — ни TED, ни SAM.gov, ни ProZorro — не публикует точность своей рассылки. Пара «показали — отреагировал» и есть главная ценность системы, поэтому к каждому уведомлению пишется не только факт, но и основание.

Рынки и долина момент отправки — доли меняются при дочитывании
ПутьTier 1, Tier 2, второй список, товарный слой, подписка
Место в порядкеединственный способ проверить сортировку
Основание долейденьги, позиции или только заголовок
Доля прочитанногоотличает «ошиблись» от «не знали»
Связь с профилемдва режима порядка — две разные метрики
Что записывается на каждое уведомление — так, чтобы «почему он это получил» отвечалось без пересчёта.

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

12Чего система не делает

Не решает, дробить ли закупку

Вывод «закупку надо было объявить частями» — другой продукт и другой адресат.

Не использует категорию

Третий уровень записывается и нигде не читается: подбор идёт по рынкам.

Не использует географию

Сигнал в данных есть, но поставку в стране он не ограничивает.

Не считает суммы из своих цен

Только пропорции внутри лота; абсолют — объявленная сумма.

Не сопоставляет с UNSPSC и CPV

Код CPV заполнен у 1 лота из 50 984; коды подписок и строк — разные системы.