Зачем эта программа
Ваш клиент — поставщик продуктов для общепита. Он продаёт ресторанам мясо, сыры, соусы, овощи. Программа ищет ему новых покупателей.
Раньше это делали руками: менеджер открывал сайт ресторана, читал меню, прикидывал, что этому заведению можно продать, и писал письмо. Примерно час на одно заведение.
Программа делает то же самое сама и отвечает на два вопроса:
- Что ресторан уже готовит из того, что мы поставляем. Довод для продажи: «вы это закупаете — берите у нас».
- Что он мог бы добавить в меню из нашего каталога. Довод второй: «на наших продуктах вы можете готовить ещё вот это».
Отсюда вся конструкция. Чтобы ответить на эти вопросы, мало прочитать меню — нужно разложить каждое блюдо на продукты и сверить их с каталогом поставщика. Почти все разделы меню слева обслуживают именно эту цепочку.
Как связаны разделы
Разделы — не набор независимых экранов. Это один конвейер, разложенный по страницам.
Разделы Организации и Номенклатура — это два конца сверки: слева заведения, справа товары поставщика. Ингредиенты — переходник между ними. Кухни, Матчинг меню и Контрагенты 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 сентября.
Куда делось КП
Удалено 4 сентябряРаздел «Коммерческие предложения» был в меню и исчез. Вот почему.
Кнопка «Создать КП» собирала сценарий мероприятия — «фуршет на 50 гостей» — из блюд самого заведения. То есть предлагала ресторану его же еду по его же ценам. Для поставщика продуктов это бессмыслица: ресторан умеет готовить сам, а вы продаёте не блюда, а продукты для них.
Похоже, генерация осталась с раннего этапа проекта, когда клиентом считали кейтеринговую компанию. Потом замысел уточнили и сделали сверку с каталогом, а само предложение переписать не успели: нужные цифры считались и лежали рядом, но в документ не попадали.
Блок удалён целиком вместе с данными. Перед удалением снята полная копия базы и выгруженных файлов, она хранится отдельно от боевого сервера.
Что осталось и работает вместо него
Всё содержательное на месте: процент совпадения, «уже можем поставлять», «чего не хватает», разбор блюд на продукты. Это и есть фундамент правильного предложения — оно должно строиться на вашем каталоге, а не на меню заведения.
Пока документ не собирается автоматически, эти данные видны в панели раздела «Парсинг сайта».