BR 6.5: OSINT-разведчик конкурентов

Демо 29.05.2026 — Сценарий 4 (часть 2)

Этот BR закрывает OSINT-разведку Сценария 4: автоматически собираем данные о всех конкурентах рядом с твоей ТТ через открытые источники (2ГИС, Yandex Maps, Telegram, IG/VK, Avito и др.) и через LLM превращаем сырьё в инсайты. Превью — HTML-демо.

Зависит от:

  • BR 6.4 — использует LLM-провайдера для генерации инсайтов
  • Store Service — координаты ТТ для геопоиска конкурентов
  • ADR-023 (создать) — юридическая позиция и провайдер прокси

Контекст

Сейчас в продукте нет автоматической разведки конкурентов. Маркетолог делает это вручную — заходит в 2ГИС, читает отзывы соседей, смотрит их IG / TG. Это не масштабируется и теряет 80% событий (например, конкурент запустил −30% завтраки — узнаешь через неделю, когда уже теряешь утреннюю выручку).

OSINT-разведчик = автоматический сбор всех публичных данных + LLM-обработка. На демо это второй после AI-постера wow-эффект: «ваш ERP знает о соседях больше, чем они сами».

Что хочет бизнес

Маркетолог открывает «AI-аналитика → Конкуренты», видит:

  1. Радар на 500 м — карта/радар вокруг твоей ТТ с найденными конкурентами
  2. Карточки конкурентов — название, средний чек, отзывы (★), последний пост в соцсетях, активность
  3. Алерты — конкурент с критичным изменением (новое промо, рост подписчиков, плохие отзывы)
  4. Инсайты от LLM — «Coffee Lab запустил −30% завтраки 4 дня назад, +820 подписчиков в TG, потеряешь 12% утра — запусти контр-промо»

Функции «OSINT-разведчика»

  1. Поиск конкурентов — по координатам ТТ через 2ГИС/Yandex Maps в радиусе 500 м
  2. Сбор отзывов — рейтинги, последние отзывы, тренды (улучшается / ухудшается)
  3. Парсинг соцсетей — публичные TG-каналы (через Telethon), IG (через proxy), VK (через API)
  4. Анализ промо — какие акции у конкурентов, как часто, в какое время
  5. LLM-инсайты — превращение сырых данных в action-рекомендации
  6. Ручной запуск скана — кнопка «Просканировать сейчас» для демо

Поток

Cron (раз в сутки) — обходит все ТТ → запускает скан
  ↓
Для каждой ТТ:
  - 2ГИС / Yandex Maps: ищет соседей в 500 м, тянет отзывы и фото витрины
  - Telethon: парсит публичные TG-каналы (если знаем @имя)
  - IG / VK / Avito: парсит публичные посты конкурентов
  - Сохраняет в competitor_data_point с timestamp
  ↓
Раз в день:
  - LLM-провайдер (TBD, см. BR 6.4) получает агрегаты за последние 7 дней
  - Генерирует insight'ы для UI (что важно, что критично)

Пользователи

ПрофильКтоPermissions
Маркетолог / владелец ТТВидит конкурентов своей ТТosint.read
Администратор франшизыВидит всё, настраивает источникиosint.read.all, osint.config

Сущности

competitor

ПолеТипОписание
idUUIDPK
store_idUUIDПривязка к нашей ТТ
nameVARCHAR«Coffee Lab», «Pizza District»
categoryVARCHAR«coffee», «pizza», «burger»
lat, lngDECIMALКоординаты
distance_mINTEGERРасстояние до нашей ТТ
sourcesJSONB{ "2gis_id": "...", "tg_channel": "@coffee_lab", "ig_handle": "...", "vk_id": "..." }
is_alertBOOLEANТекущий состояние (зелёный / красный)
created_at, last_scanned_atTIMESTAMPTZ

competitor_data_point

ПолеТипОписание
idUUIDPK
competitor_idUUID FK
sourceENUM2gis / yandex_maps / telegram / instagram / vk / avito
kindENUMreview / post / promo / rating / photo
payloadJSONBСырьё (текст, рейтинг, URL)
captured_atTIMESTAMPTZ

osint_insight

ПолеТипОписание
idUUIDPK
store_idUUID
competitor_idUUID FKИногда null (если про общий тренд)
severityENUMinfo / warning / critical
textTEXTНа русском
data_refsJSONBКакие data_point’ы использовались
expires_atTIMESTAMPTZ
generated_atTIMESTAMPTZ

API (новый osint-service)

МетодПутьОписание
GET/api/v1/admin/osint/competitors?store_id=Список конкурентов своей ТТ
GET/api/v1/admin/osint/competitors/{id}/data?period=7dИстория данных по конкуренту
GET/api/v1/admin/osint/insights?store_id=Текущие LLM-инсайты
POST/api/v1/admin/osint/scan?store_id=Принудительный запуск скана (для демо)
POST/api/v1/admin/osint/competitorsДобавить конкурента вручную (если не нашли автоматически)

Источники

Приоритет от пользователя — все в работе:

ИсточникДоступСложность
2ГИСOfficial API (если есть ключ) или scrapingНизкая — есть structured API
Yandex MapsSameНизкая
TelegramTelethon (account-based) или Bot APIСредняя — нужен telegram-бот / account
InstagramЗаблокирован в РФ → нужен proxy + парсерВысокая — fragile, ToS-риски
VKOfficial VK APIНизкая
AvitoScraping (нет official API для бизнеса)Средняя
TripAdvisor / Restoclub / Yandex.EdaScraping или proxyСредняя

Для MVP к 29.05 — старт с 2ГИС, Yandex Maps, Telegram. Остальные — добавляем по мере готовности.

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

Новый сервис erp-osint-service. Язык — обсудим в спеках:

  • Python + FastAPI — стандарт для OSINT-стека (Scrapy, Telethon, BeautifulSoup, Playwright)
  • Java + Spring Boot — консистентно с остальными ERP-сервисами, но менее удобная экосистема скраперов

Скорее Python.

Compliance и риски

Юридические риски

Scraping не всех источников легален. ToS большинства площадок запрещают автоматический сбор. Для банковского продукта это критичный момент.

Закрепить в ADR-023 (создать как папку-блокер):

  • Юридическая позиция (внутренний legal-обзор)
  • Провайдер прокси (если IG / Avito)
  • Rate-limiting и идентификация бота (User-Agent, headers)
  • Хранение только публичных данных (никаких приватных профилей)

Новые permissions

КлючОписание
osint.readПросмотр конкурентов и инсайтов своей ТТ
osint.read.allПросмотр по всей франшизе
osint.configНастройка источников, добавление конкурентов

Что НЕ входит в текущий скоуп

  • Парсинг приватных IG / TG каналов — запрещено законом
  • Распознавание лиц на фото конкурентов — отдельный сервис, Phase 2
  • Sentiment-анализ отзывов (положительный / отрицательный) — Phase 2
  • Push-уведомления о критических алертах — Phase 2
  • Сравнение цен на товары — отдельный модуль pricing-intelligence, Phase 2

Затронутые сервисы и продукты

КомпонентЧто меняется
erp-osint-service (новый)Python + FastAPI, БД osint_db, cron, REST API, scraping-modules
LLM-провайдерИспользуется для генерации osint_insight. Самопис erp-llm-gateway отказан 2026-05-13 — см. BR 6.4
admin-bffПрокси для /osint/* эндпоинтов
erp-admin/webВкладка «Конкуренты» внутри раздела «AI-аналитика»
erp-user-servicePermissions osint.read, osint.read.all, osint.config

Acceptance criteria для демо 29.05

  1. Раздел «AI-аналитика → Конкуренты» открывается
  2. Радар на 500 м показывает 4–6 реальных конкурентов вокруг демо-ТТ
  3. Карточки конкурентов с реальными отзывами / постами / промо за последние 7 дней
  4. Один конкурент — в alert-состоянии (новое промо, рост подписчиков)
  5. 2–3 LLM-инсайта на русском — упоминают конкретные конкуренты и цифры
  6. Кнопка «Просканировать сейчас» работает — через ≤ 15 секунд карточки обновляются

Ссылки