Перейти к основному содержимому
AI, B2B, Автоматизация продаж

SKU Matcher — AI-подбор артикулов по входящим заявкам

Продукт для B2B-дистрибуции (заказчик под NDA)

AI-сопоставление позиций из заявок (Excel, PDF, фото, текст) с каталогом в сотни тысяч SKU: эмбеддинги + BM25 + LLM-верификация. Смотреть кейс →

СреднийВ работеКлиентский AI
Python 3.12FastAPIPostgreSQLpgvectorGeminiNext.js 15React 19MinIODocker
О проекте

SKU Matcher сопоставляет позиции из входящих заявок с товарным каталогом на сотни тысяч артикулов. Заявка приходит как угодно: Excel, PDF, фото, свободный текст из письма. Gemini извлекает атрибуты (тип изделия, DN, PN, материал, резьба), гибридный поиск — векторный (pgvector) + BM25 + fuzzy с RRF-слиянием — находит кандидатов, скоринг по атрибутам присваивает уверенность HIGH/MEDIUM/LOW. Менеджер подтверждает, а не ищет руками.

100K+SKU в каталоге
~40Kстрок кода
API endpoints
60–70%позиций в HIGH
Функциональность

Что реализовано.

Любой формат заявки

Excel, PDF, Word, фото (Gemini Vision OCR) и свободный текст — единый пайплайн обработки.

LLM-grounding

Gemini извлекает из строки заявки атрибуты: тип, DN, PN, материал, резьба. Единицы нормализуются.

Гибридный поиск с RRF

Векторный поиск (pgvector, 1536-мерные эмбеддинги) + BM25 + fuzzy, слияние через Reciprocal Rank Fusion.

Уверенность HIGH/MEDIUM/LOW

Атрибутный скоринг со штрафами за несовпадение DN/PN. HIGH ≥ 75% — подтверждение в один клик.

Контур обучения

Корректировки менеджера и отклонённые пары копятся в feedback — система настраивается по категориям.

Синхронизация с ERP

Каталог и атрибуты подтягиваются из ERP клиента (Microsoft Dynamics NAV), 192K+ строк атрибутов.

Процессы

Ключевые сценарии.

Пользовательские сценарии и потоки данных

Обработка заявки

От файла до подтверждённых позиций.

Загрузка (файл/текст)
Парсинг
Gemini: атрибуты
Гибридный поиск
Скоринг
HIGH/MEDIUM/LOW
Подтверждение менеджером

Загрузка каталога

Синхронизация и индексация всего каталога SKU.

Выгрузка из ERP
Парсинг атрибутов
Эмбеддинги (батчи по 100)
Индексация pgvector + FTS
Готов к поиску

Контур обучения

Как система становится точнее.

Менеджер корректирует
Feedback-пара сохранена
Настройка категории
Синонимы и веса
Точнее на следующей заявке
Архитектура

Роли и интерфейсы.

Менеджер по продажам

Загрузка заявок, подтверждение HIGH-совпадений, выбор альтернатив

Категорийный менеджер

Настройка атрибутов, весов, синонимов и приоритетов по категориям

Администратор

Загрузка каталога, пользователи, мониторинг AI-задач, аудит

Технологии

Технологический стек.

Backend
  • Python 3.12
  • FastAPI
  • SQLAlchemy 2.0 (async)
  • 73 endpoints
  • 22 миграции Alembic
AI
  • Gemini (grounding + Vision)
  • gemini-embedding-001 (1536d)
  • RRF-слияние
  • атрибутный скоринг
Данные
  • PostgreSQL 17 + pgvector
  • MinIO (S3)
  • 16+ таблиц
Frontend
  • Next.js 15
  • React 19
  • TypeScript
  • Radix UI
  • Tailwind CSS 4
Инфраструктура
  • Docker Compose
  • Traefik
  • golden-тесты на эталонных заявках
Метрики

Объём кода.

~40K
строк кода
27,6K
Python (backend)
12K
TypeScript/React

Безопасность

  • JWT-аутентификация с refresh-токенами
  • Защита от перебора паролей (учёт попыток входа)
  • Аудит-лог действий пользователей
  • Файлы заявок в приватном S3-хранилище

AI-функции

  • Извлечение структурированных атрибутов из свободного текста (Gemini grounding)
  • Распознавание заявок с фотографий (Gemini Vision)
  • Векторный поиск по эмбеддингам каталога (1536 измерений, pgvector)
  • Гибридное ранжирование: вектор + BM25 + fuzzy через RRF (k=60)
  • Confidence-скоринг с порогами HIGH ≥ 75% / MEDIUM 35–74% / LOW

Проблема

Сотни заказов в день; в заявках позиции описаны как попало: «кран шар. фл. ду50 ру16» — а в каталоге сотни тысяч SKU.

Менеджеры вручную искали каждую позицию по каталогу — на сложную заявку уходили часы.

Заявки приходят в любом виде: Excel, PDF, Word, фото с телефона, текст в письме.

Опечатки, синонимы и разные единицы измерения (дюймы vs DN, МПа vs бар) ломали обычный поиск.

Решение

Парсинг любого входа — XLSX/XLS, DOCX, PDF, фотографии (распознавание через Gemini Vision) и свободный текст.

LLM-grounding (Gemini) — из строки «кран шар. фл. ду50 ру16» извлекаются структурированные атрибуты: тип изделия, DN, PN, материал корпуса, тип присоединения; единицы нормализуются (МПа ↔ бар, дюймы ↔ DN).

Гибридный поиск — три метода параллельно: векторный (эмбеддинги, 1536 измерений в pgvector), полнотекстовый BM25 на русском и trigram fuzzy; результаты сливаются через Reciprocal Rank Fusion.

Атрибутный скоринг — кандидаты проверяются по ключевым и вторичным атрибутам со штрафами за несовпадение DN/PN и типа изделия; наличие на складе даёт буст.

Уверенность HIGH / MEDIUM / LOW — HIGH (≥ 75%) менеджер подтверждает одним кликом, MEDIUM проверяет альтернативы, LOW сигнализирует о проблеме.

Контур обучения — корректировки менеджеров и отклонённые пары сохраняются (feedback), категории настраиваются: веса атрибутов, синонимы, стоп-слова.

Результаты

  • Подбор позиций по заявке — минуты вместо часов: менеджер контролирует результат, а не ищет вручную.
  • Целевая доля HIGH-совпадений 60–70% достигается на категориях с полным обогащением атрибутов.
  • Любой формат заявки на входе — единый структурированный результат на выходе.
  • Каталог в сотни тысяч SKU синхронизируется с ERP клиента автоматически.
Сторителлинг

Вот представьте…

История одного запроса

1
Письмо от клиента

В почте заявка: Excel на 40 строк. «Кран шар. фл. ду50 ру16», «затвор диск. поворотн. DN80», «отвод 90 гр. 57х3.5». Менеджер открывает каталог — сотни тысяч артикулов. И начинает искать. Строка за строкой.

2
Два часа спустя

Половина позиций найдена. По остальным — сомнения: ДУ50 это DN50 или 2 дюйма? Сталь 20 подойдёт вместо 09Г2С? Клиент тем временем отправил ту же заявку конкуренту. Кто первый ответит с ценами — тот и заберёт заказ.

3
SKU Matcher за минуты

Заявка загружается как есть — Excel, PDF, хоть фото со склада. Gemini разбирает каждую строку на атрибуты, гибридный поиск прочёсывает каталог тремя методами сразу. На экране: 28 позиций зелёные (HIGH, ≥ 75%), 9 жёлтых с альтернативами, 3 красные — «уточнить у клиента».

4
Менеджер — контролёр, не поисковик

Зелёные подтверждаются одним кликом. По жёлтым — выбор из предложенных альтернатив. Ответ клиенту уходит за минуты, а не часы. А каждая корректировка менеджера делает систему точнее на следующей заявке.

Глоссарий AI-терминов

Ключевые понятия для понимания проекта

GEO-оптимизация

GEO

Оптимизация контента для AI-поисковиков (ChatGPT, Perplexity, Claude).

AI-агенты

AI-AGENTS

Автономные AI-системы, выполняющие задачи самостоятельно без контроля человека.

E-E-A-T

EEAT

Критерии Google: опыт, экспертиза, авторитетность, надёжность. Важны для SEO и GEO.

LLM (Large Language Model)

LLM

Нейросеть для понимания и генерации текста (GPT-5, Claude, Gemini).

RAG (Retrieval-Augmented Generation)

RAG

Технология для работы AI с вашими данными: документами, базами знаний.

Промпт (Prompt)

PROMPT

Текстовая инструкция для AI. Качество промпта = качество результата.

MVP (Minimum Viable Product)

MVP

Минимальная версия продукта для проверки гипотезы на пользователях.

Технологический стек

TECH-STACK

Набор технологий проекта: языки, фреймворки, базы данных, облако.

Интеграция

INTEGRATION

Связывание AI с системами компании: CRM, ERP, 1C, мессенджеры.

Развёртывание (Deployment)

DEPLOYMENT

Запуск решения в production с мониторингом и масштабированием.

FAQ

Частые вопросы.

Excel (XLSX/XLS), Word (DOCX), PDF, фотографии (PNG/JPG — распознаются через Gemini Vision) и свободный текст из письма. Все форматы проходят через единый пайплайн: парсинг → извлечение атрибутов → поиск → скоринг.

Три метода параллельно: векторный поиск по эмбеддингам (1536 измерений в pgvector), полнотекстовый BM25 на русском языке и trigram fuzzy для опечаток. Результаты сливаются через Reciprocal Rank Fusion, затем кандидаты проверяются по атрибутам (DN, PN, материал) со штрафами за несовпадения.

Это уверенность сопоставления по атрибутному скорингу. HIGH (≥ 75%) — менеджер подтверждает одним кликом; MEDIUM (35–74%) — стоит посмотреть альтернативы; LOW — ключевой атрибут не совпал, нужна проверка. Цель — 60–70% позиций в HIGH на категориях с полным обогащением.

Да. Каждая корректировка менеджера сохраняется как feedback-пара, по категориям настраиваются веса атрибутов, синонимы и стоп-слова. Качество контролируется golden-тестами на эталонных заявках.

Нужен похожий проект?

Обсудим вашу задачу

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

Автор материала
Сергей Цветков
Основатель «ДИДЖИТАЛ-ПРО ТЕХ» (Digital-Pro Tech)
20 лет в IT и бизнесе. 150+ проектов по внедрению AI и BI. Практический опыт, а не теория.
Опубликовано: 10 апреля 2026
Обновлено: 15 марта 2026