Лютик

Фармацевтическая закупка · AI-агент подбора по заявке

Менеджер больше не ищет товар в прайсахФото или текст заявки — и по каждой строке все поставщики с ценой, сроком и остатком

  • БылоЗаявки на десятки и сотни позиций приходят фото, сканом или текстом с сокращениями. Каждую строку нужно найти в сводном прайсе дистрибьюторов на сотню тысяч предложений, сверить форму и дозировку и выбрать, у кого дешевле.
  • СделалиFARMA WEB: одно окно, куда кладут заявку любым способом. Нейросеть разбирает строки, программа находит их в прайсе Фармбазиса, отсекает неподходящее по цифрам и раскладывает каждую позицию по всем поставщикам. Цену, остаток и срок подставляет код, а не нейросеть.
  • ИтогМенеджер получает таблицу, где по каждой позиции видно самое дешёвое предложение, срок годности и хватит ли остатка. Сомнительные позиции помечены «проверка», оборудование отложено отдельно.

Деньги

Лучшая цена в один щелчок
по каждой позиции — все поставщики из прайса, самое дешёвое наверху

Время

Список закупки — меньше чем за минуту
вместо поиска каждой строки в прайсе вручную

Нервы

Без выдуманных товаров
нейросеть выбирает только из строк прайса, цену и остаток подставляет программа

Люди

Менеджер не ищет товар в прайсах
заявка разбирается сама — фото, скан, PDF или текст; менеджер только проверяет

Удобство

Всё в одной таблице
поставщик, цена, срок годности, остаток и хватит ли на заявку

Куда уходило время менеджера по закупкам

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

Срочно
Не срочно
Важно

Горитсрочно и важно

Ростважно, но не срочно

Не важно

Отвлекаетсрочно, но не важно

Шумне срочно и не важно

7 задач, которые решили внутри

Нажмите на задачу — откроется, как было, что сделали и что это дало.

Из чего складываются деньги и время

Без рублей: показываем, на чём экономится, — оценки помечены.

Что экономит и приносит деньги

  • Закупка по самой выгодной ценеПо каждой позиции видны все поставщики и лучшая цена; сортировка по цене — в один щелчок, с учётом того, хватит ли остатка.Оценка: экономия = (цена, по которой взяли бы без сравнения − лучшая цена) × объём. Разброс цен между поставщиками в реальном прайсе мы не считали (данные заказчика не открывали).
  • Меньше поставок не того товараДозировка, концентрация, объём, размер и форма сверяются программой по цифрам; нейросеть не может предложить строку, которой нет в прайсе.Оценка: каждая пойманная ошибка — минус возврат, пересорт и повторная доставка; сколько ошибок было до системы, неизвестно.
  • Дешёвые запросы к нейросетиВ нейросеть уходят несколько строк-кандидатов на позицию, а не весь прайс; модель — из недорогих (gemini-3-1-flash-lite); оборудование и общие товары в неё не идут; брошенный поиск прерывается.Оценка: текста в запросе в сотни раз меньше, чем при подходе «весь прайс в нейросеть», который команда проверяла скриптом. Счёт за нейросеть мы не видели.
  • Не нужна отдельная программа-коробкаСистема — надстройка над Фармбазисом, через который заказчик и так получает прайс поставщиков: прайс берётся по его же API.Оценка: абонплата за новую учётную систему — ноль; остаются сервер и оплата нейросети.
  • Больше заявок теми же людьмиПерепечатка и поиск по прайсу уходят к программе, у менеджера остаются проверка и выбор.Оценка: если заявка обрабатывалась часами, а теперь — минутами с проверкой, тот же менеджер успевает в разы больше заявок; число заявок и менеджеров неизвестно.

Что экономит время

  • Перенести заявку в работуФото, скан, PDF или DOCX разбираются сами, до 10 файлов за раз.Оценка: 10–20 минут перепечатки на заявку в 15–20 строк → 0.
  • Найти позиции в прайсеПоиск с опечатками и сокращениями по всем позициям сразу.Оценка: 1–3 минуты на строку вручную → вся заявка за 20–60 секунд по обещанию экрана; в журнале 20.10.2026 — около 50 секунд на поиск.
  • Сравнить поставщиковВсе предложения по позиции в одной таблице, сортировка по цене.Оценка: 1–2 минуты на позицию → секунды.
  • Проверить срок и остатокКрасная подсветка срока меньше года, колонка «Доступно», галочка «скрыть, где не хватает».Оценка: минута на позицию → взгляд на таблицу.
  • Отсеять оборудованиеНеаптечные позиции откладываются карточкой с причиной до поиска.Оценка: несколько минут на каждую такую строку → 0.

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

Подробная история кейса: с чего начинали, что сделали, что экономится
Так эту страницу читает нейросеть. Оформление, ролики и кнопки она не видит: берёт текст, заголовки и служебную разметку ниже. Человеку этот текст показывается свёрнутым в «Подробную историю».

Кратко. AI-студия Лютик сделала FARMA WEB — AI-агента для фармацевтической закупки. Заявку на десятки и сотни позиций кладут в одно окно фото, сканом, PDF или текстом; нейросеть разбирает строки, программа находит их в сводном прайсе дистрибьюторов, отсекает неподходящее по форме и дозировке и показывает по каждой позиции всех поставщиков с ценой, сроком годности и остатком.

Паспорт. Отрасль: оптовая закупка лекарств и медицинских изделий. Веб-приложение, поиск по прайсу на сотню тысяч предложений, нейросеть только для разбора строк заявки.

С чего начинали

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

Что было

Каждую строку заявки искали в прайсе вручную, сверяли форму и дозировку и сравнивали поставщиков — на заявку уходили часы.

Что сделали: 7 задач

1. Лучшая цена по каждой строке заявки — среди всех поставщиков

Как было. Сводный прайс дистрибьюторов — это сто тысяч строк (в сохранённом прайсе от 20.05.2026 — 103 374 предложения). Найти один препарат у всех поставщиков и сравнить цены — ручная работа на каждую позицию, и на длинной заявке до сравнения просто не доходят руки. Сделали. Каждый подобранный товар программа разворачивает во все строки полного прайса Фармбазиса (WA35): поставщик, закупочная цена, срок годности, остаток, минимальный заказ. В шапке позиции — «лучшая цена», таблица сортируется по любой колонке, общая сортировка «Цена ↑» ставит самое дешёвое первым во всех позициях сразу. Что дало. По каждой строке заявки сразу видно, у кого дешевле. Если включить «скрыть, где остаток меньше запрошенного», лучшая цена пересчитывается только среди тех, кто может поставить нужное количество (на копии: 35,64 → 44,89, потому что у самого дешёвого на складе 25 флаконов вместо 100).

2. Нейросеть не может выдумать препарат: цифры считает программа

Как было. Ошибка в дозировке, концентрации или фасовке — это не тот товар в поставке, возврат и потерянное доверие. Обычный чат с нейросетью может уверенно «найти» позицию, которой нет в прайсе. Сделали. До нейросети программа сама отсекает строки, где не совпадают цифры: дозировка, концентрация, объём, размер, число в упаковке, стерильность, форма (ампулы против таблеток). Сама пересчитывает мкг в мг и «мг/г» в проценты для мазей и гелей. Нейросеть выбирает только из оставшихся строк — всё, чего нет в списке, код выбрасывает. Цену, остаток и срок подставляет программа из прайса, нейросеть их не видит. Что дало. В таблицу попадают строки с нужной дозировкой и формой: на копии из заявки «Кеторолак 30 мг/мл амп.» таблетки отсеяны, «Натрия хлорид 250 мл» — без флаконов 500 мл. К каждой позиции — объяснение, что принято и что отклонено.

3. Нейросеть читает несколько строк, а не весь прайс

Как было. Самый простой путь — отдать нейросети заявку и весь прайс целиком. В проекте лежит скрипт, который считал этот вариант (scripts/test-ai-price-match.ts: «полный прайс и полный заказ одним запросом»): на прайсе в десятки тысяч строк это огромный и дорогой запрос на каждую заявку. Сделали. Сначала быстрый поиск Typesense прощает опечатки, ищет по части слова и по штрихкоду и берёт до 500–1000 кандидатов на позицию. Потом жёсткие фильтры по цифрам сужают их до нескольких строк, и только они идут в нейросеть — по одному короткому запросу на позицию, по 4 позиции одновременно. Используется недорогая модель gemini-3-1-flash-lite. Оборудование и общие запросы вроде «бинты» или «шприцы» без уточнений в нейросеть не идут совсем. Что дало. На копии в нейросеть уходило по 2–4 строки-кандидата на позицию вместо всего прайса. Если человек закрыл вкладку, запросы к нейросети прерываются — за брошенный поиск не платят.

4. Фото, скан, PDF, DOCX или текст — без перепечатки

Как было. Заявки приходят как придётся — фото бланка, скан, файл Word, текст письма с сокращениями «амп», «р-р», «таб». Каждую строку менеджер перепечатывал в программу. Сделали. До 10 файлов за раз: фото до 10 МБ, PDF и DOCX до 20 МБ; DOCX сам переводится в PDF. Нейросеть сначала распознаёт текст со всех вложений, потом раскладывает каждую строку на название, форму, дозировку, концентрацию, объём, фасовку и количество. Понимает строку-заголовок «по 10 упаковок» — количество для всех строк ниже. Длинные заявки режутся на куски по 40 строк и разбираются параллельно. Что дало. Заявку не перепечатывают. На копии фото бумажной заявки на 14 позиций превратилось в 14 строк с количеством. Экран обещает 20–60 секунд на поиск; в журнале запуска 20.10.2026 два поиска заняли 50 и 53 секунды (размер заявок неизвестен).

5. Сомнительная позиция — не молча, а с пометкой «проверка»

Как было. В заявке бывают ошибки — «90×90 см» вместо «9×9 см», не та единица. Человек либо не находит позицию, либо сам догадывается, что имелось в виду. Сделали. Если по точным цифрам в прайсе пусто, программа ищет шире и просит нейросеть указать вероятную правку и уверенность. Такие строки получают метку «⚠️ проверка» и текст «Возможная правка заявки…». Ненайденная позиция получает статус «не найдено» и остаётся в списке. Что дало. Спорные места видны сразу, решение — за менеджером. Исправлений «втихую» нет.

6. Срок годности и остаток — до того, как пообещать клиенту

Как было. Товар с коротким сроком годности или нехватка на складе поставщика выясняются, когда предложение уже отправлено. Сделали. Строки со сроком годности меньше 12 месяцев подсвечены красным. Колонки «Запрошено» и «Доступно (да/нет)» сравнивают количество из заявки с остатком поставщика; галочка прячет тех, у кого не хватает. По умолчанию строки с коротким сроком стоят сверху. Что дало. Сразу видно, что можно предложить клиенту, а что — нет. Оговорка: «Доступно» сравнивает числа без учёта единиц и кратности (см. risks).

7. Оборудование в аптечной заявке — в сторону, без поиска

Как было. В заявки попадают аппарат ИВЛ, мешок Амбу, ларингоскоп, бумага для ЭКГ — то, чего в аптечном прайсе не бывает. На поиск таких строк уходит время. Сделали. Нейросеть помечает неаптечные позиции, и программа сама узнаёт по словам 13 видов больничных позиций. Такие строки показываются отдельной карточкой с причиной и не ищутся. Кислородные баллоны — исключение, их ищут. Что дало. Неаптечное видно сразу, на него не тратятся поиск и запросы к нейросети.

Что экономит и приносит деньги

  • Закупка по самой выгодной цене. По каждой позиции видны все поставщики и лучшая цена; сортировка по цене — в один щелчок, с учётом того, хватит ли остатка. Оценка: экономия = (цена, по которой взяли бы без сравнения − лучшая цена) × объём. Разброс цен между поставщиками в реальном прайсе мы не считали (данные заказчика не открывали).
  • Меньше поставок не того товара. Дозировка, концентрация, объём, размер и форма сверяются программой по цифрам; нейросеть не может предложить строку, которой нет в прайсе. Оценка: каждая пойманная ошибка — минус возврат, пересорт и повторная доставка; сколько ошибок было до системы, неизвестно.
  • Дешёвые запросы к нейросети. В нейросеть уходят несколько строк-кандидатов на позицию, а не весь прайс; модель — из недорогих (gemini-3-1-flash-lite); оборудование и общие товары в неё не идут; брошенный поиск прерывается. Оценка: текста в запросе в сотни раз меньше, чем при подходе «весь прайс в нейросеть», который команда проверяла скриптом. Счёт за нейросеть мы не видели.
  • Не нужна отдельная программа-коробка. Система — надстройка над Фармбазисом, через который заказчик и так получает прайс поставщиков: прайс берётся по его же API. Оценка: абонплата за новую учётную систему — ноль; остаются сервер и оплата нейросети.
  • Больше заявок теми же людьми. Перепечатка и поиск по прайсу уходят к программе, у менеджера остаются проверка и выбор. Оценка: если заявка обрабатывалась часами, а теперь — минутами с проверкой, тот же менеджер успевает в разы больше заявок; число заявок и менеджеров неизвестно.

Что экономит время

  • Перенести заявку в работу. Фото, скан, PDF или DOCX разбираются сами, до 10 файлов за раз. Оценка: 10–20 минут перепечатки на заявку в 15–20 строк → 0.
  • Найти позиции в прайсе. Поиск с опечатками и сокращениями по всем позициям сразу. Оценка: 1–3 минуты на строку вручную → вся заявка за 20–60 секунд по обещанию экрана; в журнале 20.10.2026 — около 50 секунд на поиск.
  • Сравнить поставщиков. Все предложения по позиции в одной таблице, сортировка по цене. Оценка: 1–2 минуты на позицию → секунды.
  • Проверить срок и остаток. Красная подсветка срока меньше года, колонка «Доступно», галочка «скрыть, где не хватает». Оценка: минута на позицию → взгляд на таблицу.
  • Отсеять оборудование. Неаптечные позиции откладываются карточкой с причиной до поиска. Оценка: несколько минут на каждую такую строку → 0.

Где проходит наша граница

Мы отвечаем за то, что агент находит позиции по прайсу, отсекает неподходящие по цифрам и правильно показывает цену, срок и остаток. Сомнительные позиции помечены «проверка» — решение за менеджером. Ролик снят на копии с вымышленным прайсом и заявкой.

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

Что делает FARMA WEB?

Разбирает заявку на лекарства из фото, скана, PDF или текста и по каждой строке показывает всех поставщиков из прайса с ценой, сроком годности и остатком.

Может ли нейросеть ошибиться в цене?

Нет: нейросеть только выбирает подходящие строки прайса, а цену, остаток и срок подставляет программа.

Что с позициями, которых нет в прайсе?

Они отмечены отдельно, а сомнительные совпадения — пометкой «проверка», чтобы решил менеджер.

Служебная разметка (JSON-LD)

Невидима для человека, читается поисковиками и нейросетями: кто сделал, о чём статья, вопросы и ответы.