Любая классификация начинается как аккуратный список категорий, написанный умным человеком в первый день. К шестому месяцу самая большая категория — «прочее», а «прочее» — это место, где смысл умирает.
Сервис раскладывал рыночные данные по зашитому списку категорий. Список был разумным, когда его писали, и стал неверным за сезон: рынки не стоят на месте, а то, что люди продают, перестаёт совпадать с коробками, которые кто-то для них нарисовал.
Это дало стандартный провал сразу в две стороны. Часть позиций запихивалась в почти подходящие категории, тихо портя всё, что на них считалось. Остальное падало в «прочее», которое росло, пока не стало самой большой и потому самой бесполезной корзиной.
Вести список руками тоже не получалось. Добавить категорию просто; понять, действительно ли она новая — или это то же понятие, которое кто-то уже добавил другим словом, — вот настоящая задача, и она требует контекста, который ни у кого не помещается в голове.
Таксономия — это не решение по схеме, принятое один раз. Это живая структура, и всё, что считает её фиксированной, ошибётся предсказуемым образом.
Аналитический сервис, где таксономия выводится, а не объявляется. Каждое решение о классификации принимается с текущим деревом категорий в контексте, поэтому новая позиция либо встаёт в существующую ветку, либо обязана обосновать новую — и обоснование видно.
Когда две категории оказываются одним понятием в разных словах, они сливаются в каноническую форму. Это слияние сделано намеренно, а не по ошибке: разросшееся дерево так же бесполезно, как слишком грубое, и вся ценность в том, чтобы оставаться читаемым.
Существующая таксономия передаётся с каждым решением. Модель не изобретает категории в вакууме — она кладёт позицию в структуру, которую видит. Именно это отличает таксономию от кучи ярлыков.
Категории, означающие одно и то же разными словами, сводятся к одному каноническому тегу. Осознанная консолидация сохраняет дерево проходимым по мере роста данных.
FastAPI поверх Postgres. Интересное — в логике классификации; слои хранения и отдачи намеренно обычные, чтобы любой мог запросить данные напрямую, минуя сервис.
Сервис в контейнере с явным шагом пересборки после изменений, поэтому работает всегда то, что закоммичено, — без расхождения между кодом, который вы читаете, и кодом, который отвечает.
Поведение классификации здесь — свойство конструкции, а не цифра в бенчмарке.
«Прочее» перестало быть свалкой, а значит, агрегатам, посчитанным поверх категорий, снова можно верить.
Таксономия следует за рынком, а не за представлениями, которые были на момент написания схемы: новые сегменты появляются потому, что они есть, а не потому, что кто-то вспомнил их добавить.
Поддержка перестала быть регулярной обязанностью без владельца.
Любому набору данных, где категории спорны, плывут или приходят быстрее, чем человек успевает их вести: товарные каталоги, отслеживание рынка и конкурентов, разбор обращений в поддержку, классификация расходов, разметка контента.
Не нужно там, где таксономия действительно зафиксирована внешним стандартом. Если категории определяет регулятор, используйте его — фиксированный список здесь требование, а не проблема.
Расскажите, что не работает. Первый разговор бесплатный — разработка, долгосрочное партнёрство или просто вопросы: вы получите честную оценку и понятный следующий шаг.
Начать разговор →