Хорика · внутренний инструмент · 4 сентября 2026

Путеводитель по разделам

Что делает каждый пункт левого меню, откуда в нём берутся данные и зачем он вообще нужен. Написано по фактическому состоянию боевого стенда, а не по замыслу.

1 743заведения найдено
17с разобранным меню
5 150позиций меню
1 080товаров в каталоге
367ингредиентов-типов
1 370контрагентов 1С

Цифры со стенда на 4 сентября 2026. «С разобранным меню» — 17 из 1743: остальные пока только найдены, но не обработаны.

Зачем эта программа

Ваш клиент — поставщик продуктов для общепита. Он продаёт ресторанам мясо, сыры, соусы, овощи. Программа ищет ему новых покупателей.

Раньше это делали руками: менеджер открывал сайт ресторана, читал меню, прикидывал, что этому заведению можно продать, и писал письмо. Примерно час на одно заведение.

Программа делает то же самое сама и отвечает на два вопроса:

  • Что ресторан уже готовит из того, что мы поставляем. Довод для продажи: «вы это закупаете — берите у нас».
  • Что он мог бы добавить в меню из нашего каталога. Довод второй: «на наших продуктах вы можете готовить ещё вот это».

Отсюда вся конструкция. Чтобы ответить на эти вопросы, мало прочитать меню — нужно разложить каждое блюдо на продукты и сверить их с каталогом поставщика. Почти все разделы меню слева обслуживают именно эту цепочку.

Как связаны разделы

Разделы — не набор независимых экранов. Это один конвейер, разложенный по страницам.

ШАГ 1 Парсинг сайта Даёте ссылку. Робот обходит сайт, скачивает страницы, фото и файлы меню.
ШАГ 2 Распознавание ИИ сортирует фотографии и вытаскивает из них позиции меню с ценами.
ШАГ 3 Разбор блюд Каждое блюдо раскладывается на продукты: «плов» → рис, баранина, морковь, лук.
ШАГ 4 Сверка с каталогом Продукты из блюд сверяются с номенклатурой поставщика. Получается процент совпадения.
ШАГ 5 Предложение Удалено 4 сентября и строится заново. Подробнее — в конце документа.

Разделы Организации и Номенклатура — это два конца сверки: слева заведения, справа товары поставщика. Ингредиенты — переходник между ними. Кухни, Матчинг меню и Контрагенты 1С — вспомогательные инструменты вокруг этой оси.

Три роли

У каждого раздела есть минимальная роль. Пункты меню, недоступные вашей роли, просто не показываются.

РольЧто может
Наблюдатель Смотреть всё: заведения, меню, каталог, совпадения. Ничего не запускает и не меняет.
Редактор То же плюс запуск обработки: поставить сайт на разбор, поправить метку у фотографии.
Админ То же плюс правка настроек: модель ИИ, тексты инструкций, лимиты.

Сейчас на стенде заведён один пользователь — администратор.

Дашборд

/ Наблюдатель Работает

Первый экран после входа. Сводка: сколько всего накоплено и работает ли конвейер прямо сейчас.

Что показывает

  • Счётчики сверху — сколько заведений всего, сколько ещё не обработано, сколько доведено до готового меню.
  • Состояние очереди — сколько задач выполняется, сколько ждёт, сколько упало с ошибкой и будет повторено.
  • Последние заведения — что добавилось недавно и на каком этапе застряло.

Зачем нужен

Чтобы одним взглядом понять две вещи: сколько данных уже накоплено и не сломался ли конвейер. Если задачи копятся в ожидании или растёт число ошибок — видно здесь, а не через час работы.

Откуда данные

Считается на лету по таблице заведений и по журналу задач. Ничего не хранится отдельно.

Парсинг сайта

/sites Редактор Работает

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

Как пользоваться

  • Вставьте ссылку в поле сверху. Можно сразу список — по одной в строке.
  • Нажмите «Спарсить». Дальше всё идёт само.
  • Таблица заполняется по мере готовности. Столбец «Скор» — процент совпадения меню с вашим каталогом.
  • Кликните строку — справа откроется панель по этому заведению.
  • Кнопка «Меню и фото» ведёт к результату разбора: фотографии и распознанные позиции.

Что в панели справа — самое ценное

  • «Уже можем поставлять» — продукты, которые заведение использует в блюдах и которые есть в вашем каталоге. Это готовые доводы для звонка.
  • «Чего не хватает» — продукты, которые заведение закупает, а у вас их нет. Подсказка, чем расширять ассортимент.
  • Кухни — к какому типу отнесено заведение.
  • Число позиций — сколько блюд удалось распознать.

Как этим работать на практике

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

Сколько ждать

Одно заведение — примерно 10–15 минут. Такова цена того, что распознавание идёт на вашем собственном сервере: он обрабатывает по одной задаче за раз. Зато вызовы ничего не стоят.

Запускать несколько сайтов сразу можно, но они встанут в очередь друг за другом, а не пойдут параллельно.

Устаревший текст

Заголовок страницы всё ещё говорит «Парсинг сайтов → меню → КП». Это остаток от удалённого блока предложений.

Организации

/organizations Наблюдатель Работает

Картотека всех найденных заведений. Сейчас их 1743 — накоплены за всё время работы проекта.

Что показывает

Список с фильтрами по региону, типу заведения и стадии обработки. Сортировка по оценке привлекательности. Клик по строке открывает карточку заведения.

Что означает «скор»

Число от 0 до 1 — насколько заведение подходит вам как клиент. Считается по правилам, а не нейросетью, поэтому его всегда можно объяснить. Основной вклад даёт тип заведения:

Тип заведенияВклад в оценку
Кейтеринг, выездное обслуживание0,40
Банкетный зал, event-агентство0,30
Площадка для мероприятий0,25
Доставка готовой еды0,20
Ресторан0,10
Кафе0,05
Кофейня, столовая0,02

К этому добавляются наличие распознанного меню и его размер. Веса лежат в коде и меняются программистом — зато результат предсказуем и проверяем вручную.

Карточка заведения

Контакты, адрес, тип, оценка. Отдельный блок «Что можем поставлять (по кухне)» — предположение о поставках, построенное только по типу кухни, даже если меню ещё не разобрано.

Подстраница меню

С карточки есть переход в меню заведения. Там две вещи: фотографии с метками (меню / блюдо / интерьер / мусор) — метку можно поправить руками, если ИИ ошибся, — и список распознанных позиций с ценами и весом.

Номенклатура

/nomenclature Наблюдатель Работает

Каталог товаров поставщика — то, что вы продаёте. 1080 позиций, выгруженных из 1С.

Зачем нужен

Это опорная точка всей системы. Блюда заведений сравниваются именно с этим списком. Нет каталога — не с чем сравнивать, и все проценты совпадения теряют смысл.

Откуда данные

Из файловых выгрузок 1С. Наполняется не через интерфейс, а командой импорта, которую запускает программист. Здесь список только просматривают и ищут по нему.

Вместе с товарами загружены цены: 540 типов цен и 24 742 записи «товар × тип цены». Столько типов — потому что у каждого крупного клиента в 1С заведён свой прайс.

Ингредиенты

/ingredients Наблюдатель Работает

367 обобщённых названий продуктов, сведённых из 1080 товаров каталога. Незаметный, но ключевой раздел.

Зачем нужен — на примере

В меню ресторана написано просто «моцарелла». В вашей 1С тот же продукт называется «Сыр Моцарелла Гранд Мария 125г шар в рассоле». Напрямую эти строки не совпадут никогда.

Поэтому все товары сведены к обобщённым названиям: разные сорта, фасовки и написания одного продукта склеены в один терм. Именно по этим термам блюда и сверяются с каталогом. Без этого переходника сверка не работает вовсе.

Что можно делать

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

Матчинг меню

/matching Наблюдатель Работает

Ручная проверка без обхода сайта: вставили текст меню — сразу увидели совпадение с каталогом.

Как пользоваться

Скопируйте меню откуда угодно — с сайта, из PDF, из переписки — и вставьте в поле. Система разложит блюда на продукты и покажет процент совпадения, что вы можете поставлять и чего не хватает.

Чем отличается от «Парсинга сайта»

  • Быстро — не нужно ждать обхода, работа идёт по готовому тексту.
  • Ничего не сохраняется — заведение в базе не создаётся, это разовая прикидка.
  • Годится для проверки — если сомневаетесь в качестве разбора, здесь видно, как система понимает конкретные блюда.

Две цифры в результате

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

Устаревший текст

Описание страницы обещает «соберёт черновик КП». Этого больше не происходит — остаток от удалённого блока.

Кухни

/cuisines Наблюдатель Работает

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

Как устроено

Для каждой кухни заранее выписаны характерные продукты: для японской — рис, нори, соевый соус, васаби; для грузинской — сулугуни, аджика, кинза. Система проверяет, что из этого есть в вашем каталоге, и показывает покрытие.

Клик по кухне открывает разбор: какие продукты закрыты, каких не хватает, и блюда-кандидаты, которые можно предложить заведению этой кухни.

Зачем нужен

Чтобы работать сегментами, а не поштучно. Если грузинские рестораны покрыты на 80%, а японские на 30% — понятно, кому вы сильный поставщик, а куда лезть не стоит. И понятно, каких продуктов не хватает в каталоге, чтобы закрыть целый сегмент.

Важное ограничение

Список кухонь и их характерных продуктов задан в коде, а не в базе. Добавить кухню или поправить набор продуктов через интерфейс нельзя — только через программиста.

Контрагенты 1С

/onec-contractors Наблюдатель Работает

Справочник ваших действующих клиентов и партнёров из 1С — 1370 организаций.

Зачем нужен

Чтобы не продавать тем, кто уже покупает. Система находит заведения в интернете и не знает, кто из них уже ваш клиент. Этот раздел позволяет связать найденное заведение с записью в 1С.

Как работает связывание

Система предлагает совпадения по названию и реквизитам, но подтверждает связь человек. Это сделано намеренно: у контрагентов бывают похожие названия, а ошибка здесь означает, что менеджер пойдёт продавать действующему клиенту.

Настройки

/settings Наблюдатель Править — Админ Работает

Пары «название — значение». Отсюда управляют поведением ИИ без выпуска новой версии программы.

Что здесь можно поменять

НазваниеЧто делает
llm.modelКакая модель ИИ используется для всех задач
llm.extract_thinkВключить «размышления» при разборе меню: точнее, но в 4–5 раз дольше
llm.extract_system_promptТекст инструкции для ИИ. Удалить строку — вернётся заводская
llm.temperatureНасколько ИИ волен отклоняться. По умолчанию 0,1 — почти строго
llm.budget_usdПредохранитель от бесконечной обработки одного заведения

Значения пишутся в формате JSON: текст в кавычках, числа без, true или false для переключателей.

Про предохранитель расходов

llm.budget_usd сейчас стоит 1.0. Раньше это значило «примерно доллар на заведение», теперь — примерно сто заведений. Причина: обращения к вашему серверу бесплатны, и счётчик перешёл с денег на машинное время. Хотите строже — поставьте меньше.

Секретам здесь не место

Страницу видят все роли, включая наблюдателей. Пароли и ключи доступа сюда не записываются — они лежат в файле настроек на сервере. Один такой ключ здесь когда-то лежал; он удалён 4 сентября.

Скрытые разделы

Есть в коде, не показаны

Три раздела существуют и работают, но убраны из меню переключателем «первой версии», чтобы не загромождать интерфейс.

  • Очередь /queue — что сейчас обрабатывается, что ждёт, что упало. Сводка попроще есть на дашборде.
  • Прокси /proxies — промежуточные адреса, через которые робот ходит по сайтам, чтобы его не блокировали. Сейчас заведено 6 рабочих.
  • Регионы /regions — для автоматического поиска заведений по городам. Относится к следующему этапу: сейчас работа идёт по конкретным ссылкам.

Вернуть их в меню — вопрос одной настройки при сборке, программисту это минуты.

Куда делось КП

Удалено 4 сентября

Раздел «Коммерческие предложения» был в меню и исчез. Вот почему.

Кнопка «Создать КП» собирала сценарий мероприятия — «фуршет на 50 гостей» — из блюд самого заведения. То есть предлагала ресторану его же еду по его же ценам. Для поставщика продуктов это бессмыслица: ресторан умеет готовить сам, а вы продаёте не блюда, а продукты для них.

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

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

Что осталось и работает вместо него

Всё содержательное на месте: процент совпадения, «уже можем поставлять», «чего не хватает», разбор блюд на продукты. Это и есть фундамент правильного предложения — оно должно строиться на вашем каталоге, а не на меню заведения.

Пока документ не собирается автоматически, эти данные видны в панели раздела «Парсинг сайта».