Как выглядит задача изнутри
Формулировка почти всегда одинаковая: «нужно объединить прайсы поставщиков автоматически, чтобы получался один файл с нашими артикулами и лучшей ценой». Звучит как работа на два часа. Работа на два часа она ровно до момента, когда открываешь сами файлы.
- Форматы. Excel в двух версиях, CSV с разделителем «точка с запятой», CSV в кодировке windows-1251, XML-выгрузка из 1С и один поставщик, который присылает прайс картинкой в теле письма.
- Структура. У одного шапка на первой строке, у другого — на четвёртой, потому что сверху логотип и три строки контактов. Где-то объединённые ячейки, где-то товарные группы вставлены отдельными строками прямо в таблицу.
- Названия колонок. «Цена», «Цена, руб.», «Цена с НДС», «Опт от 10 шт». Одно и то же поле, четыре разных заголовка, и они меняются без предупреждения.
- Артикулы.
AB-1024,ab 1024,AB1024,СКЛ-AB-1024— это один товар. Пробелы, дефисы, регистр, префиксы складов и служебные суффиксы. - Цены. У кого-то с НДС, у кого-то без, у кого-то в валюте с пересчётом по курсу на дату отгрузки. Число может быть записано как
1 250,00с неразрывным пробелом внутри. - Остатки. «12», «много», «под заказ», «>10», пустая ячейка. Сверка остатков поставщиков начинается с решения, чем считать каждое из этих значений.
Почему это не решается формулами
Первая попытка обычно — ВПР или ПОИСКПОЗ. Она работает ровно один раз, на тех файлах, на которых вы её настроили.
ВПР требует двух вещей: ключ совпадает символ в символ и колонка стоит на прежнем месте. Реальные прайсы не гарантируют ни того, ни другого. Поставщик переименовал колонку — формула тянет не то поле. Добавил столбец в середину — сдвинулись все индексы. Записал артикул с пробелом — совпадения нет, строка выпала.
Ядро задачи — сопоставление позиций
Всё остальное — рутина, которую пишут один раз. Настоящая работа начинается на матчинге товарных позиций. Он строится слоями, каждый следующий подбирает то, что не взял предыдущий.
Слой 1. Точное совпадение артикула
Работает на 40–60% строк. Дальше начинаются варианты записи.
Слой 2. Нормализация
Артикул приводится к каноническому виду: убираются пробелы и дефисы, снимается регистр, отрезаются известные префиксы складов и служебные хвосты. После нормализации сопоставление артикулов поставщиков обычно доходит до 70–85%. Это самый дешёвый слой с лучшим соотношением затрат и результата.
Слой 3. Таблица соответствий
Справочник «мой артикул ↔ артикул поставщика». Каждая пара, подтверждённая человеком один раз, дальше матчится автоматически и навсегда. Именно этот слой делает процесс окупаемым: на первом прогоне модерации может быть 500 строк, на четвёртом — тридцать. Справочник — ваш актив, он остаётся у вас при любой смене подрядчика.
Слой 4. Нечёткое сравнение наименований
Для позиций, у которых артикула нет вовсе или он не совпал ни в одном виде. Сравниваются наименования с учётом извлечённых характеристик: размер, материал, единица измерения. Слой даёт не решение, а список кандидатов с оценкой похожести.
Слой 5. Ручная модерация
Спорные пары уходят человеку: две колонки, кнопки «это одно и то же» / «разное». Пять секунд на пару. Подтверждённое решение падает в таблицу соответствий и больше не спрашивается.
ИИ в матчинге: где помогает и где опасен
Языковые модели закрыли слой, который раньше требовал много ручного труда. Но у них есть чёткая граница применимости.
Где помогает. Нормализация наименований, извлечение характеристик из свободного описания, понимание синонимов и сокращений. Модель уверенно определяет, что «Болт М8х40 оц.» и «Болт оцинкованный M8*40» — один товар, хотя строки совпадают едва наполовину. На таких задачах ИИ даёт прирост качества, которого не даст ни одна метрика похожести строк.
Где опасен. На артикулах и числах. Модель может переставить цифру и выдать код, который выглядит абсолютно правдоподобно. Проверить его глазами почти невозможно — он не отличается от настоящего ничем, кроме того, что относится к другому товару. Цена такой ошибки — отгрузка не той позиции клиенту.
Отсюда рабочая схема: ИИ предлагает и объясняет, решение фиксирует человек или точное правило. Модель говорит «это, вероятно, одна позиция, совпали диаметр, длина и покрытие» — а артикул подставляется не из ответа модели, а из исходной строки прайса. ИИ здесь ассистент модерации, а не источник истины.
Этапы работы и сроки
| Этап | Что происходит | Срок |
|---|---|---|
| Сбор файлов | Смотрим реальные прайсы всех поставщиков, а не образцы. Фиксируем форматы, кодировки, положение шапки, способ доставки файла | 1–2 дня |
| Нормализация | Приведение к единой таблице: колонки, типы, НДС, валюта, единицы измерения, чистка артикулов и остатков | 2–4 дня |
| Матчинг | Точное совпадение → нормализованное → таблица соответствий → нечёткое сравнение. Формируется список спорных пар | 2–5 дней |
| Разрешение конфликтов цен | Внедрение вашего правила выбора поставщика по каждой позиции | 1 день |
| Выгрузка и отчёты | Итоговый файл в нужном формате, отчёт о несопоставленном, лог изменений цен | 1–2 дня |
Конфликт цен: это ваше решение, не наше
Одна позиция есть у трёх поставщиков по 1 180, 1 240 и 1 195 ₽. Какую взять — вопрос не технический.
- Минимальная цена. Простое правило, но игнорирует то, что у дешёвого поставщика может не быть остатка.
- Приоритет поставщика. Берём у основного, к остальным идём только при нуле на складе.
- По наличию. Минимальная цена среди тех, у кого остаток больше нуля.
- Составное. Минимальная цена среди тех, у кого остаток больше нуля и срок поставки до трёх дней; при равенстве — приоритетный поставщик.
Любое из этих правил реализуется за час. Проблема возникает, когда правило не сформулировано словами до начала работ: выгрузка получается формально корректной и коммерчески бесполезной. Мы всегда просим записать правило одной фразой и подписать — это экономит неделю переделок.
Что вы получаете на выходе
Не скрипт. Скрипт умирает через месяц вместе с ноутбуком того, кто умел его запускать. Результат — повторяемый процесс:
- Точка входа. Папка, почтовый ящик или чат, куда просто кидают файлы в том виде, в каком их прислал поставщик. Без предварительной подготовки — иначе ручная работа никуда не денется.
- Итоговая выгрузка. Один файл в вашем формате — Excel, CSV или прямая загрузка в систему учёта.
- Отчёт о несопоставленном. Отдельный лист со строками, которые не удалось привязать, с причиной по каждой. Это рабочий инструмент, а не список ошибок: по нему пополняется таблица соответствий.
- Лог. Что и когда обработалось, какие цены изменились, у кого пропал остаток. Без лога на вопрос «почему вчера цена была другая» ответа не будет никогда.
- Инструкция на две страницы. Как запустить, что делать, если поставщик прислал файл в новом формате, кому писать.
Когда это вам не нужно
Если поставщиков два-три, позиций до двухсот, а форматы стабильные — считайте честно. Ручная сборка занимает час-полтора в неделю, это примерно 6 часов в месяц. Автоматизация окупится через год, а до тех пор будет ещё одной системой, которую надо поддерживать.
Смысл появляется, когда сходится хотя бы два условия из списка: поставщиков больше пяти, позиций больше тысячи, обновление чаще раза в неделю, ошибки в цене уже приводили к убытку, или процесс держится на одном человеке, у которого бывает отпуск.
Сколько это стоит у нас
| Задача | Цена | Срок |
|---|---|---|
| Разовая обработка: свести прайсы в один файл | от 15 000 ₽ | 3–5 дней |
| Повторяемый процесс, 3–10 поставщиков | 40 000 – 90 000 ₽ | 1–2 недели |
| С нечётким матчингом и интерфейсом модерации | от 90 000 ₽ | 2–3 недели |
| Автоматический сбор прайсов с сайтов и почты | от 25 000 ₽ | 3–7 дней |
| Сопровождение: поставщик поменял формат — чиним | 5 000 – 15 000 ₽/мес | реакция 1–2 дня |
Фиксированная цена в договоре, исходники и таблица соответствий передаются вам. Если после разбора окажется, что при ваших объёмах дешевле продолжать руками — мы скажем это прямо и не возьмём проект.
Вопросы, которые задают чаще всего
Можно ли объединить прайсы поставщиков автоматически на 100%?
Нет. Автоматически закрывается 85–97% строк, остальное уходит в отчёт на ручную модерацию. Причина не в качестве программы, а в исходных данных: у части позиций артикул у поставщика отсутствует вовсе, а наименование не позволяет однозначно определить товар. Подрядчик, который обещает 100% автоматики без ручного контура, либо не работал с реальными прайсами, либо планирует молча склеить неверные пары — и вы узнаете об этом на первой отгрузке.
Почему нельзя обойтись ВПР в Excel?
ВПР требует, чтобы ключ совпадал символ в символ и чтобы колонка стояла на своём месте. Реальные прайсы этого не гарантируют: артикул у одного поставщика записан как AB-1024, у другого как ab 1024, у третьего с префиксом склада. Плюс шапка съезжает на четвёртую строку, появляются объединённые ячейки, колонку переименовывают из «Цена» в «Цена, руб. с НДС». Формула ломается на первом же таком файле и делает это молча — вы получите не ошибку, а неверные цифры.
Что такое таблица соответствий и зачем она нужна?
Это справочник вида «мой артикул ↔ артикул поставщика», который накапливается по мере работы. Каждая пара, подтверждённая один раз вручную, дальше сопоставляется автоматически и навсегда. Именно за счёт этого справочника доля ручной работы падает от месяца к месяцу: на первом прогоне модерации может быть 500 строк, на четвёртом — 30. Справочник принадлежит вам и остаётся у вас даже при смене подрядчика.
Помогает ли ИИ в матчинге товарных позиций?
Помогает на текстовых задачах: привести наименования к единому виду, вытащить характеристики из описания, понять, что «Болт М8х40 оц.» и «Болт оцинкованный M8*40» — один товар. Но модель нельзя допускать до артикулов и чисел: она может уверенно переставить цифру и выдать правдоподобный, но неверный код. Рабочая схема — ИИ предлагает пары и объясняет, почему, а решение фиксирует человек или точное правило. ИИ как ассистент модерации, а не как источник истины.
Как выбрать цену, если товар есть у трёх поставщиков?
Это бизнес-решение, а не техническое. Правило формулируете вы: минимальная цена; приоритет поставщика с лучшими условиями отгрузки; только тот, у кого есть остаток на складе; или комбинация — минимальная цена среди тех, у кого остаток больше нуля и срок поставки до трёх дней. Технически реализуется любое правило за час. Важно, чтобы оно было записано словами до начала работ, иначе выгрузка будет формально правильной и коммерчески бесполезной.
Сколько стоит и сколько занимает по времени?
Разовая обработка пачки файлов — от 15 000 ₽. Настроенный повторяемый процесс на 3–10 поставщиков — 40 000–90 000 ₽. С нечётким сравнением наименований и интерфейсом модерации — от 90 000 ₽. Срок 3–14 дней, и основная задержка обычно не в коде, а в сборе реальных файлов от всех поставщиков. Сопровождение — 5 000–15 000 ₽ в месяц: поставщики меняют формат несколько раз в год, и это чинится по факту.