Методология
Как закупка находит своего поставщика
Площадка объявляет около 62 закупок в сутки. Поставщик не знает, какая из них его, а заказчик не знает, кого позвать. Binder отвечает на один вопрос: кому отправить уведомление об этой закупке в момент её объявления. Ниже — весь путь от спецификации до уведомления, с правилами, порогами и измерениями, на которых он построен.
1Задача и её ограничение
Уведомление нужно в момент объявления: спецификация опубликована, но ни одной заявки ещё нет и цен никто не видел. Всё, что известно в этот момент, — текст спецификации, объявленная заказчиком сумма, заказчик и срок.
Отсюда жёсткое ограничение постановки: любая логика, которой нужны итоги торгов — цены участников, число заявок, победитель, — для рассылки непригодна по построению.
2Конвейер: пять шагов в одном порядке
Каждая закупка проходит одни и те же шаги, и порядок не нарушается: закупка не уходит в рассылку, пока не прочитана. Иначе уведомление строится на неполных долях, и причина в журнале оказывается ложной.
- 1Сборобъявление и спецификация с etender.gov.azработает
- 2Чтениекаждая строка — в рынок по словарю, новое — модельюработает
- 3Подбордоли рынков, класс лота, уровни поставщиковв разработке
- 4Маршрутизацияподписка × закупка, порядок, личный лимитв разработке
- 5ОтправкаTelegram, с причиной в журналев разработке
Ни один шаг не требует реального времени: от объявления до срока подачи проходит в медиане 19,9 дня, и только 1 лот из 1 044 закрывается быстрее недели. Чтение может занять часы, не обесценив уведомление.
Сбор идёт через внутренний API площадки: объявление, затем спецификация постранично. Обрезанная спецификация неотличима от короткой, поэтому сборщик скорее не отправит её вовсе, чем отправит часть. Жива ли закупка, решает срок подачи — никогда не статус на площадке.
3Таксономия: сектор → рынок → категория
Подбор идёт на уровне рынка. Рынок — не класс товаров, а то, чем живёт отдельный поставщик: единица способности. Поэтому обувь и одежда — разные рынки, хотя в любом товарном классификаторе они рядом: обувное и швейное производство — разные фирмы.
sewШвейное производство- одежда
- ткань
- костюмы
- головные уборы
shoeОбувное производство- обувь
- тапочки
категория · 1 192 — записывается, но решений не принимает
- Идентификатор рынка постоянен (
elec,pipe,shoe); названия меняли семь раз, поэтому подписки хранятся по идентификатору. - У каждого рынка записана причина, почему он отделён от соседнего. Без неё граница выглядит произвольной, и первый спорный случай разбирают неправильно.
- Категория заморожена: у 744 категорий из 1 156 нет ни одного поставщика, который ими живёт, а у рынков такие поставщики есть почти всегда.
4Чтение спецификации: словарь и четыре исходаработает
Каждая строка спецификации ищется в словаре решений — 369 727 формулировок, каждая однажды прочитана по смыслу. Поиск — только точное совпадение после нормализации: обрезать пробелы и перевести в нижний регистр. Никакого нечёткого поиска и основ слов: любое смягчение даёт расхождение с измерениями.
рынок + категорияПолный ответИзвестны и рынок, и категория.
205 882 формулировоктолько рынокРынок известенКатегория не читалась — для подбора достаточно рынка.
163 845 формулировокother«Не рынок»Прочитано: предмета покупки нет — заголовок раздела, накладные, процент. Это ответ, а не пробел.
нет в словареПробелСтроку никогда не читали. Только этот исход — незнание; его закрывает читатель.
Строка сметы несёт второй рынок. Первый, «строительно-монтажные работы», отвечает, кто выиграет тендер. Второй — товарный: у кого подрядчик купит материал уже вне торгов. Он читается отдельно (16 670 сметных формулировок) и нужен, чтобы завод кабеля или труб увидел спрос, которого сейчас не видит.
5Чтение новых формулировокработает
Каждая новая закупка приносит формулировки, которых в словаре нет. Их читает языковая модель — по смыслу, а не по совпадению слов: на тех же данных словарь словоформ дал 46,7% точности против 77,2% у чтения. Правила чтения — ровно те, по которым размечен весь корпус.
- ответ на каждый номер, ровно один
- каждый ответ — существующий рынок
- формулировка не учтена дважды
- Нумерация, а не порядок. При ответе списком той же длины модель на пакете из 200 строк потеряла 22 ответа — и каждый следующий ответ сдвинулся на чужую строку. С номерами пропуск виден, и пакет отвергается.
- Сохраняется каждый ответ, включая «не рынок» и «покупать нечего», с датой чтения. Именно это отличает «прочитано» от «никогда не читалось».
- Контрольные строки в каждом пакете дают постоянную меру: модель совпадает с разметкой авторов примерно в 3 случаях из 4 (у авторов в пилоте — 79 из 100). Это нижняя граница точности: иногда прав читатель, а словарь устарел.
- Закупка без спецификации читается по заголовку — до трёх рынков. Такой заголовок даёт рынок, но не долю, поэтому закупка идёт по особому пути.
Пока прочитано меньше половины строк, закупка держится и не рассылается. После чтения она пересчитывается и идёт дальше; если прочитанного всё равно мало, ответ — «сказать нечего», и уведомления не будет: пустой список хуже молчания.
6Доли рынков внутри лотав разработке
Строки складываются в рынки. Доля рынка считается в деньгах: историческая цена строки, умноженная на количество из этой спецификации. Деньгам доверяют, только если цена известна хотя бы у половины строк, иначе доли считаются по числу позиций. На открытых закупках в деньгах судятся 590 лотов из 1 044.
7Класс лотав разработке
Главный вопрос о лоте — сколько рынков в нём существенны. Существенный — не меньше 10% стоимости. Ответ определяет, разбирать ли лот на части.
small (322)мелкий лот: на части не разбирается, но приглашение остаётся
unread (16)сказать нечего — честный ответ, а не пустой список
homog (351)однородный: часть и есть целое
sewn (355)сшитый: целиком возьмут одни, по частям — другие
Порог 10 000 ₼ управляет разбором на части, а не рассылкой: котировки до 30 000 ₼ по закону закреплены за малым бизнесом, и на них нужно приглашать.
8Кого звать: Tier 1, Tier 2 и товарный слойв разработке
Профиль поставщика — распределение его работы по рынкам, посчитанное по закупкам, в которых он участвовал: какая доля его заявок приходится на каждый рынок.
Tier 1
кто возьмёт весь лот
Поставщик покрывает не меньше 50% стоимости лота и подал не меньше 3 заявок. Рынок засчитывается, только если он — не меньше 1% его собственной работы.
Tier 2
кто продаёт отдельную часть
По каждому существенному рынку — профильные: этот рынок не меньше 50% их работы. Победы не требуются. Если профильных меньше 10 — второй список из тех, кто в рынке участвовал.
Товарный слой
у кого подрядчик купит материал
Из вторых рынков сметных строк. Не меняет класс и не входит в доли. Работает на 149 лотах из 1 044; без него на 71 лоте видны только подрядчики, а это 350 млн ₼ объявленных сумм.
Порядок решает больше, чем граница допуска. Средний допущенный пул на сшитый лот — около 1 480 фирм, поэтому важно не кого впустили, а кто наверху. Сортировка — опыт поставщика в рынках этого лота: число его заявок в каждом рынке, взвешенное долей рынка в лоте.
| Порядок | Точность первой десятки | Реальный участник в десятке |
|---|---|---|
| по опыту в рынках лота | 23,4% | 83% |
| по победам | 8,4% | 46% |
| случайный | 1% | 9% |
Потолок задачи — 78,7%: у многих лотов участников меньше десяти. Закупка, прочитанная только по заголовку, в Tier 1 не идёт: без долей покрытие посчитать нельзя.
9Девять порогов в одном месте
Каждое число вынесено в настройки и меняется оператором без выпуска новой версии; ни одно не зашито в код по месту использования.
| Порог | Значение | Что решает |
|---|---|---|
| Существенность рынка | 10% стоимости лота | класс лота, попадание в Tier 2 |
| Доверие деньгам | 50% строк с ценой | считать доли в деньгах или в позициях |
| Порог закупки | 10 000 ₼ | разбирать ли лот на части (на рассылку не влияет) |
| Присутствие в рынке | 1% работы поставщика | засчитывать ли рынок в покрытие Tier 1 |
| Покрытие для Tier 1 | 50% стоимости лота | допуск в первый уровень |
| Профиль на лоте с одним рынком | 50% работы поставщика | допуск в Tier 1 |
| Профильный для Tier 2 | 50% работы поставщика | кто считается специалистом |
| Тонкий профиль | меньше 3 заявок | ниже этого проценты не показываются |
| Бедный рынок | меньше 10 профильных | показывать ли второй список |
10Рассылка: подписка, а не допускв разработке
Правила подбора допускают, но не упорядочивают. Если отправить всем допущенным, получится около 451 000 уведомлений в неделю — 65 на поставщика. Поэтому получатель выбирает рынки сам, а система отвечает за порядок внутри подписки.
- Два режима порядка. Если подписчик назвал VÖEN и у него есть история заявок, порядок — по его опыту в рынках лота (те же 23,4% в первой десятке). Если истории нет — по свойствам лота: доля его рынков, сумма против заданного порога, запас по сроку.
- Карточка всегда объясняет, почему она пришла: «ваш рынок в этой закупке» с долей — когда лот судится в деньгах, и числом позиций — когда нет.
- География в подбор не входит: в реалиях страны она не ограничивает поставку, и фильтр по региону отрезал бы работающих поставщиков.
11Обратная связь и метрикив разработке
Ни одна площадка — ни TED, ни SAM.gov, ни ProZorro — не публикует точность своей рассылки. Пара «показали — отреагировал» и есть главная ценность системы, поэтому к каждому уведомлению пишется не только факт, но и основание.
Метрик четыре: точность (доля уведомлённых, кто подал заявку), полнота (доля реальных участников, которых мы уведомили), доля новичков у заказчика и доля ответов «не моё» по каждому рынку. Последняя важнее всех: рынок, по которому все отвечают «не моё», проведён по неверной границе. Чтобы отличить «рассылка сработала» от «подал бы и так», в части пакетов порядок случайный — так никто не лишается приглашения.
12Чего система не делает
Вывод «закупку надо было объявить частями» — другой продукт и другой адресат.
Третий уровень записывается и нигде не читается: подбор идёт по рынкам.
Сигнал в данных есть, но поставку в стране он не ограничивает.
Только пропорции внутри лота; абсолют — объявленная сумма.
Код CPV заполнен у 1 лота из 50 984; коды подписок и строк — разные системы.