&
BUY-79507 · Платформа мониторинга и анализа потребительских трендов · Fresh / FMCG

Видим тренды Fresh / FMCG, пока они только зарождаются

Отслеживаем потребительские тренды в продуктах питания и товарах повседневного спроса: собираем сигналы из соцсетей, считаем по ним Trend Score и за несколько дней показываем, какие позиции стоит завести в ассортимент. Всё это доступно в дашборде, в чате на обычном языке, через API и в квартальном отчёте, свёрстанном в вашем брендбуке.

2 месяца до MVP в эксплуатации36 месяцев поддержки и развития
01 · Демо · кликабельно

Как это выглядит для категорийного менеджера

Дашборд тянет тренды из Telegram вживую и показывает реальные посты за каждым. Открыть прототип на весь экран →

trends.ozonfresh.internal / dashboard
Трендов найдено
Растут в окне
Постов в сборе
Каналов в сборе
Нажмите «Обновить», чтобы собрать тренды.
Сейчас сервер опрашивает 40 публичных food-каналов через t.me/s/. Тренды считаем на окне 60 дней, мёртвые каналы отбрасываем. По ТЗ добавляются ещё пять типов источников: VK, RSS, Google Trends, Instagram, научные публикации. Кликните по любому тренду, откроются посты, на которых он держится, с подсветкой совпадений.
Как прототип считает тренды
нормализация словоформвес по просмотрамучёт свежестичат с цитатами на постах
Production-контур по ТЗ (включаем уже на проекте): считаем рост упоминаний относительно фона (hype-score в духе Santiment), ловим всплески по алгоритму Kleinberg (KDD’02), схлопываем форварды и репосты через MinHash, привязываем тренды к категориям Ozon Fresh по справочнику, кластеризуем эмбеддингами BGE-M3 + HDBSCAN, вытаскиваем названия блюд через food-NER, расшифровываем видео в текст, читаем комментарии через MTProto-sidecar.
02 · Что предлагаем

Один сквозной поток: от поста в соцсети до решения, что закупать

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

Сбор

В MVP: Telegram, VK, RSS, Google Trends. Instagram/Reels и научные публикации — фаза 2. Каждый источник опрашиваем по своему расписанию.

AI-обработка

Расшифровываем речь из видео, переводим, приводим слова к начальной форме, группируем в тренды, считаем Trend Score и определяем, на какой стадии тренд находится.

Выдача

Дашборд, чат на естественном языке, API, квартальный отчёт.

03 · Источники сбора

Сбор данных делаем своими силами, без покупных скраперов

Требование Ozon собирать данные самим совпадает с нашим интересом: платформа остаётся вашей, и вы не привязаны к чужому сервису. Часы и сроки ниже взяты из нашего PERT-расчёта.

Сопровождение: насколько часто источник ломается, когда у него меняется API или анти-бот защита, и сколько стоит поддерживать сбор все 36 месяцев. низкоесреднеевысокое
Telegram
Читаем веб-превью t.me/s/, там низкий риск бана, а полную историю и реакции добираем через MTProto на пуле аккаунтов.
Сборка~2 нед · 60 ч
Расписаниекаждые 2 ч
Сопровождениенизкое
VK
Берём данные через официальный API (wall.get, newsfeed.search). Запросы распределяем по пулу сервис-токенов и группируем, чтобы укладываться в дневные лимиты.
Сборка~1 нед · 28 ч
Расписаниекаждые 4 ч
Сопровождениенизкое
RSS / Atom
Читаем через feedparser и conditional GET (ETag, ответ 304), чтобы не тянуть то, что не изменилось.
Сборка~3 дня · 15 ч
Расписаниекаждые 6 ч
Сопровождениеминимальное
Google Trends
В MVP подключаем через покупной API за заменяемым интерфейсом (как валидатор сигналов). Свой stealth-скрапер на residential-прокси с обходом CAPTCHA — фаза 2.
СборкаMVP · адаптер API · 9 ч
Расписаниераз в сутки
Сопровождениесреднее
Instagram / Reels
Stealth-браузер с подменой TLS-отпечатка и residential-прокси, речь из Reels расшифровываем отдельно. Технически сбор наш; правовой статус источника (Meta) решает Ozon — поэтому фаза 2, вне MVP.
Сборкафаза 2
Расписаниекаждые 8 ч
Сопровождениевысокое
Научные публикации
PubMed E-utilities, Crossref, arXiv и Semantic Scholar через официальные API. Для consumer-food это запаздывающий сигнал, поэтому подключаем фазой 2.
Сборкафаза 2
Расписаниераз в неделю
Сопровождениенизкое
Покупное можно, но только то, что мы готовы заменить. Любой покупной сервис прячем за общим интерфейсом и в любой момент можем переписать своим. Это прямое требование ТЗ.
04 · Контур данных

Как находим новые источники и как через систему идут данные

Кликните по источнику, покажем, как находим каналы, как догружаем только новое и как отсеиваем повторы. Сплошные блоки уже работают в прототипе, пунктирные — это то, что по ТЗ доделываем в боевой версии.

работает в прототипе целевой контур по ТЗкликните узел

Как устроен сбор и анализ

Архитектура Kappa: один инкрементальный поток, без второго кода как в Lambda. Firehose нет. Источники мы опрашиваем по расписанию (от 2 часов до недели), так что поток по сути плановый микро-батч. Квартальный отчёт считается тем же батч-запросом по той же витрине. Кликните на слой, чтобы увидеть состав работ и оценку.

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

05 · AI-контур

От сырого сигнала до Trend Score за один проход

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

01

Сбор

каркас под 6 источников, в MVP 4

02

STT + перевод

Whisper и Parakeet по видео; Reels — фаза 2

03

Нормализация + эмбеддинги

лемматизация словоформ, BGE-M3 → Qdrant

04

Кластеризация

HDBSCAN → формирование трендов

05

Trend Score

охват + вовлечённость + новизна + рост

06

Стадия

emerging → growing → peak → declining

07

RAG-чат

ответы с доказательной базой

Стратегия моделей по чувствительности данных

Чувствительные данные
Внутренние данные Ozon и всё конфиденциальное обрабатываем только моделями, легальными в РФ и развёрнутыми у нас: GigaChat, локальные модели вроде Qwen, распознавание речи на Whisper и NVIDIA Parakeet.
Несенситивные данные
Для публичных постов и открытого веба берём модель под конкретную задачу. По умолчанию работаем на моделях, легальных в РФ, и держим всё за Pluggable-интерфейсом, чтобы заменить провайдера без переписывания.
STT по видео
Whisper (RU и мультиязык) и NVIDIA Parakeet (быстрый, высокая точность). Провайдер выбирается под контент. Для видео без речи (музыка) подключаем vision-LLM: кадрируем и разбираем по скриншотам.
Сменяемость
Любого провайдера можно заменить, не трогая остальную систему. Это прямое требование ТЗ.
06 · Скрапинг

Скрапинг, который не падает, когда у источника меняется вёрстка, API или анти-бот защита

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

За несколько дней определяем, как собирать нужные данные

Определяем, каким путём собирать данные под конкретную цель, и считаем стоимость на масштабе. Сначала проверяем решающий факт дешёвым экспериментом, потом закупаем ресурсы, без переплаты за прокси, которые не решают задачу.

Публичный вебheadless + stealth-браузер
Официальный APIгде он есть и достаточен
Реверс мобильногоприватные API приложения
Реальные устройстваmanaged device-ферма
Покупной вендоркак заменяемый резерв

Сложная анти-бот защита уровня Akamai

Нагруженный сервис, который читает данные из личных кабинетов в ритейле
Мы разобрали мобильное приложение и нашли способ увести чтение данных из-под анти-бот-сенсора. Дорогую защиту проходим один раз на аккаунт, дальше чтение идёт чисто и почти без блоков. Готового публичного решения по этому API мы не нашли.
  • Декомпилировали приложение, сняли cert-pinning, разобрали крипто-сенсор
  • Воспроизвели приватный API на сервере
  • Собрали кастомный C++ fingerprint-spoofing на stealth-браузере и поведенческую телеметрию для веб-пути
  • Пустили residential-прокси с маршрутизацией по реальной успешности

Оформление заказов через защиту Cloudflare

Биржа драгметаллов: заказы на десятки тысяч $
Checkout площадки валился 500-ми прямо при оформлении. Наивный ретрай тут означает дубль заказа и деньги клиента на ветер. Мы построили exactly-once оформление: при сбое система сверяет историю заказов, исключает дубликат, перепроверяет цену и срок резерва до списания.
  • 120 решений Turnstile за 3 минуты в проде
  • Самовосстанавливающийся пул прокси: сам отслеживает, какие IP источник помечает как подозрительные
  • Persistent-сессии с авто-релогином, self-healing 24/7
  • Защита от ценового проскальзывания и истёкшего резерва
≤1 ч
Реагируем за час, чиним за сутки. Поломку сбора ловим автоматически за ≤30 минут (детектор дрейфа вёрстки). Реакция на критичный инцидент ≤1 часа, восстановление доступа ≤4 часов. Скрапер при смене вёрстки или анти-бота источника восстанавливаем за ≤24 часа. Стоимость каждого способа обхода считаем на масштабе.
Доступность платформы 99,5% в месяц. Это требование ТЗ про 99% мы перекрываем с запасом. Если источник начинает сбоить, включаем обходные пути: меняем доступы, поднимаем резервные скраперы, обходим анти-бот. RSS работает как постоянный baseline и продолжает давать тренды, даже если все соцсети упадут разом. SLA самой платформы мы отделяем от доступности внешних источников: их падение не считается нарушением нашего SLA.
07 · Сроки

MVP за 2 месяца, вехи не длиннее 4 недель

Выводим поэтапно: к концу второго месяца команда из 6–8 человек (архитектор, AI/ML, backend, frontend, DevOps, QA, PM) запускает рабочий MVP в эксплуатацию. Дальше — опытная эксплуатация и вывод в промышленную эксплуатацию.

нед12345678
Платформа + сбор
AI-контур
Продукт + API
MVP в проде
Наведите на этап, покажем сроки и что входит в него.

Опытная эксплуатация (4 нед) и вывод в промышленную (2 нед) идут после MVP. Полный план-график с критериями готовности по каждому этапу приложим отдельным документом к подаче.

08 · Как ведём проект

Прозрачность важнее кода: как устроен процесс

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

One Face to Client

Один архитектор-владелец

Заказчик общается с одним человеком. Он дирижирует delivery, инженерами и QA, держит весь контекст и отвечает за результат. Спрашивать можно с одного человека.

Delivery-менеджер

Сроки, риски, коммуникация

Отдельный человек ведёт план, риски и эскалации, чтобы архитектор не отвлекался от продукта.

Оценка до старта

Сначала PERT, потом работа

Каждый этап оцениваем по PERT и согласуем объём и часы до начала. Работ без согласованной оценки не ведём.

Переоценка при изменении

Скоуп поменялся, пересчитали

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

Учёт часов по факту

Прозрачный тайм-трекинг

Время ведём в трекере, раз в неделю присылаем отчёт: что сделано, сколько часов ушло, что в работе дальше.

Еженедельное демо

Рабочий результат каждую неделю

Раз в неделю показываем рабочий инкремент, собираем правки и корректируем приоритеты на следующую неделю.

Ритм недели:план спринтаработа с дневным трекингомдемо результатаотчёт по часам и согласование следующего шага
09 · Стоимость

Стоимость

Все суммы с НДС 5% (УСН, IT-льгота). Часы разработки с учётом AI-assisted сборки. Полный расчёт по часам, детальная PERT-таблица и форма КП Ozon. Предварительно, до уточнения объёма сигналов и SLA.

Разработка
7,56 млн ₽
1697 ч, AI-assisted
SaaS · 36 мес
56,88 млн ₽
87% TCV · эксплуатация и поддержка
Источники · 6 площадок
0,96 млн ₽
4 в MVP (112 ч); Instagram и научпаб — фаза 2, в составе договора
Общая стоимость
65,40 млн ₽
разработка + 36 мес SaaS
Основная часть стоимости — SaaS на 36 месяцев, ≈87% от TCV. Это эксплуатация и поддержка платформы, отдельно от разовой разработки. Сумма складывается из RU-инфраструктуры, работы моделей и команды, которая держит скраперы под 99% SLA. Разработка декомпозирована на 147 задач (1809 ч с источниками) и посчитана с учётом нашей AI-assisted сборки.
Наша оценка

Что мы оцениваем и кем делаем

Прямо из нашего PERT-расчёта: трудоёмкость по блокам, команда на старте и команда поддержки на 36 месяцев.

1. Архитектура и проектирование105 ч
C4-модель контура (context/container/component), границы Kappa-пайплайнаАрхитектура17 ч
ADR-набор: Kappa vs Lambda, micro-batch cadence, MinIO vs S3, Postgres→ClickHouse триггерАрхитектура13 ч
Контракт-дизайн: raw payload schema, событийная модель, версионирование, parse_confidenceАрхитектура13 ч
Скелет монорепо: layout сервисов, общие либы, DI, конфиг-слой, feature-flag источниковАрхитектура11 ч
Дизайн планировщика/очередей: топология воркеров, изоляция падений, backpressureАрхитектура13 ч
NFR-спека: SLA свежести, p95 выдачи, объёмы 10M постов, capacity-планированиеАрхитектура11 ч
Threat model и data-flow для 152-ФЗ: классы данных, периметр, агрегаты vs PIIАрхитектура11 ч
Среды и CI/CD-blueprint: dev/stage/prod, секреты, IaC-каркас под контур OzonDevOps9 ч
Архитектурный review-gate и зашитые quality-attributes в шаблоны сервисовАрхитектура7 ч
2. Платформа сбора и авто-поиск источников152 ч
Планировщик задач с очередями: расписание 2ч–неделя/источник, приоритеты, dedup задачBackend13 ч
Worker-пул и изоляция падений: per-source sandbox, таймауты, ретраи, circuit breakerBackend11 ч
Базовый интерфейс адаптера (fetch/parse/normalize) + реестр и регистрация 6 коннекторовBackend11 ч
Инкрементальный синк-движок: last_seen_id/курсоры/окна, общий state-store дельтBackend11 ч
Rate-limit/quota-менеджер: общий бюджет вызовов, FloodWait/backoff, троттлингBackend11 ч
Агент авто-поиска источников: эвристики расхождения по упоминаниям/форвардам, скоринг food+геоBackend15 ч
Очередь модерации пула: предложенные каналы → ревью → активный пул, антифродBackend7 ч
Наблюдаемость сбора: per-source метрики (yield, latency, parse_confidence drift), хелсчекиBackend5 ч
Telegram: пул прокси + троттлинг + пагинация ?before=Backend8 ч
Сохранение forward-ребра + propagation_count для кривой диффузииBackend11 ч
Значимость всплеска: Poisson/robust-z, >=3 независимых каналовBackend13 ч
Пост-классификатор рекламы/спамаBackend16 ч
Metric-fraud z-score (детект накрутки метрик)Backend7 ч
Coverage-monitor: страты и квоты против 70%-bias выборкиBackend13 ч
3. Коннекторы источников (MVP-набор)112 ч
Telegram: парсер t.me/s/<канал>, пагинация ?before=<id>, просмотры/форвардыBackend17 ч
Telegram: курирование пула через TGStat/Telemetr, фильтр food+гео, антифродBackend11 ч
Telegram: дедуп форвард-цепочек по (channel, id) + near-dup MinHashBackend13 ч
Telegram: инкрементальный синк до last_seen_id, дельты новогоBackend10 ч
Telegram: интеграционные тесты на фикстурах превьюQA9 ч
VK API-клиент: groups/newsfeed/wall/getById, батч execute(25), пул сервис-токеновBackend13 ч
VK: инкремент по timestamp+offset, дедуп (owner_id, post_id), схлоп репостовBackend10 ч
VK: тесты коннектора (моки API, лимиты)QA5 ч
RSS/Atom: feedparser-коннектор, Conditional GET (ETag/304), дедуп guid/linkBackend8 ч
RSS: стартовый каталог фидов (OPML/sitemap отраслевых медиа), парсер OPMLBackend7 ч
Google Trends: адаптер покупного API как заменяемый fallback за тем же интерфейсомBackend9 ч
4. Data Lake (сырой слой)46 ч
Append-only хранение raw payload в MinIO (S3), партиционирование source/dateBackend9 ч
Дедуп на входе по (channel, message_id) через идемпотентный ключ объектаBackend7 ч
Сигнал parse_confidence + детектор дрейфа вёрстки источникаBackend9 ч
Версионирование схемы сырья + механика replay по source/dateBackend9 ч
Lifecycle/retention бакетов, компакция мелких объектовDevOps6 ч
Тесты дедупа и реплея на синтетике + дрейф-кейсыQA6 ч
5. Ядро: Data Lake → тренды463 ч
STT-пайплайн по видео (Whisper/Parakeet): нарезка, GPU батч-инференс, очередьBackend29 ч
Перевод STT-выхода (мульти-яз → ru) + язык-детект, кэш переводовBackend11 ч
Видео без речи: семплинг кадров + vision-LLM по скриншотам, агрегацияBackend25 ч
Классификатор food-тренд/шум: seed-датасет + few-shot/LLM + порогBackend27 ч
Лемматизация/нормализация словоформ (pymorphy3) + кэш леммыBackend13 ч
Gazetteer категорий Ozon Fresh: справочник + матчинг (fuzzy/aho-corasick)Backend9 ч
NPMI-коллокации: статистика, фильтр по частоте, устойчивые n-граммыBackend13 ч
Эмбеддинги BGE-M3: батч-инференс, нормализация, кэш по хешуBackend17 ч
Схлопывание форвардов и near-dup (MinHash/LSH) перед кластеризациейBackend19 ч
Кластеризация HDBSCAN@10M: min_cluster_size/metric, ANN, партиционированиеBackend50 ч
Инкрементальная докластеризация: присоединение новых постов без полного пересчётаBackend27 ч
Trend Score: velocity × охват × число каналов × свежесть, нормировка/сглаживаниеBackend23 ч
Детектор спайков на кластерах + триггер RAG-обогащения под SLABackend16 ч
Оркестрация ядра: DAG стадий, чекпойнты, рестарт с середины, изоляция паденийBackend17 ч
Eval-харнесс ядра: метрики кластеров/классификатора, golden-set, регресс-гейтQA15 ч
Open-vocab извлечение ключевых фраз (YAKE/KeyBERT + POS pymorphy3 + LLM на подвыборке), снятие словарного гейтаBackend23 ч
LLM-обогащение gazetteer на cron: extractive-лейблинг, two-key gate, дедуп, версионирование промптовBackend29 ч
Классификатор жизненного цикла тренда: state-machine, гистерезис, пороги по категориямBackend16 ч
Атрибуция аудиторных сегментов: priors + few-shot LLM + эмбеддингиBackend24 ч
Декомпозиция Trend Score на 4 фактора (baseline-anchored) + объяснимость с цитатамиBackend13 ч
Gazetteer как версионируемая БД: миграция хардкода (170 терминов seed) + aho-corasick matcherBackend13 ч
Сезонность MVP: флаг + YoY-оговорка + состояние dormantBackend12 ч
Гейт промоушена кандидата по устойчивости кластера (>=2 цикла)Backend8 ч
Расширение eval-харнеса: lead-time backtest + Precision@K + staple-regression + ARIQA14 ч
6. DWH и векторное хранилище109 ч
Модель витрины DWH: тренды/сигналы/каналы/очки, ключи и связи (Postgres)Backend11 ч
Инкрементальные апдейты витрины (upsert, idempotent merge)Backend11 ч
Запросные индексы под дашборд и квартальный отчёт, материализованные агрегатыBackend7 ч
Qdrant: коллекция эмбеддингов, схема payload, апсёрт из ядраBackend9 ч
Тюнинг HNSW (ef/M) и квантизация под p95 поиска, бенчBackend8 ч
Профиль ClickHouse-ветки под рост объёма (схема + переключатель backend)Backend5 ч
Тесты витрины: консистентность инкремента, агрегаты, recall векторного поискаQA3 ч
term_history store + novelty (z/EWMA + Kleinberg + semantic-distance с дня 1) + backfill-bootstrapBackend32 ч
Дедуп кандидатов против gazetteer (Qdrant ANN, транслит-дубли)Backend11 ч
Витрина временных рядов по кластерам в DWH (материализованные агрегаты под p95)Backend12 ч
7. Выдача: дашборд, API, чат, отчёт, админка358 ч
Каркас OpenAPI 3.1 + кодоген (FastAPI), auth-middleware, пагинация/ошибкиBackend11 ч
GET /trends — фильтры (категория/гео/период), сортировка по TrendScore, cursor-пагинацияBackend9 ч
GET /trends/{id} + /signals — карточка тренда с постами-источникамиBackend9 ч
GET /sources / GET /signals — служебные эндпоинтыBackend7 ч
POST /chat + GET /reports/{id} — асинхронный контракт (job-id, polling/SSE)Backend9 ч
RAG-retrieval: гибридный поиск (Qdrant + DWH-фильтры), контекст с цитатамиBackend19 ч
RAG-генерация: prompt-сборка, LLM-gateway, грундинг на сигналы, гард «нет данных»Backend17 ч
RAG-латентность ≤20с: стриминг токенов, кэш ретрива, тайм-бюджет стадийBackend13 ч
Дашборд КМ: layout, список трендов, фильтры/поиск, состояние загрузкиWeb16 ч
Карточка тренда: график velocity, охват/каналы, лента постов-источниковWeb7 ч
UI RAG-чата: стрим-ответ, рендер цитат-ссылок, история сессииWeb15 ч
Шаблонизатор отчёта в брендбуке Ozon (HTML→render), секции/графикиBackend17 ч
Экспорт PPTX/PDF/XLSX из одной модели отчётаBackend17 ч
LLM-нарратив квартального отчёта: сводка трендов с цитатами, фактчек-гардBackend13 ч
Админка источников/каналов/расписания: CRUD-формы, список, enable/disableWeb17 ч
Админка авто-поиска: очередь кандидатов, approve/reject, оценка релевантностиWeb17 ч
Дашборд discovery/жизненный цикл + сортировка по новизне + лента «Новое за неделю» + бейджи first_seenWeb17 ч
Разбор Trend Score (4 фактора) + baseline-полоса на графикеWeb13 ч
Карточка кластера: чипы member_terms/aliases + мультитерм-подсветкаWeb13 ч
Таймлайн жизненного цикла (4 стадии)Web8 ч
Аудиторные фасеты + сегменты в карточке трендаWeb11 ч
Радар новизны: раздельные полосы «Подтверждённые» и «На проверке»Web10 ч
Drawer provenance/доказательной базы + рендер порога слабого сигналаWeb13 ч
Curation-loop: rename/merge/split/в словарь/шумWeb8 ч
Diff gazetteer до/после + лог enrichment-прогонов (админка)Web13 ч
Backtest / trend-replay на дату (продуктовая фича)Web17 ч
Слой решений в отчёте: вердикт/окно/аудитория -> выкладка + QoQBackend9 ч
Discovery-алертинг: новый тренд -> email/push категорийному менеджеруBackend7 ч
UI модерации терминов поверх админки источниковWeb6 ч
8. Мониторинг и трассировка73 ч
Сквозная OTel-инструментация: trace-context коллектор→пайплайн→API, единый trace IDDevOps17 ч
OTel Collector: деплой, ресиверы/процессоры/экспортёры, samplingDevOps9 ч
Prometheus + бизнес/SLA-метрики (свежесть, latency, объём сбора)DevOps9 ч
Grafana-дашборды (сбор/ядро/выдача/БД) + Tempo (трейсы) + Loki (логи)DevOps15 ч
Sentry/GlitchTip self-host: интеграция, release-контекст, source mapsDevOps10 ч
Alertmanager: SLA-пороги, алерт «дрейф скрапера» (parse_confidence), роутинг/тишинаDevOps13 ч
9. MTProto-sidecar (комментарии)55 ч
Burner-пул: хранилище сессий, ротация аккаунтов, прокси-привязка на сессиюBackend13 ч
FloodWait-пэйсер: rate-limit на аккаунт, backoff, очередь задач sidecarBackend13 ч
Сбор комментариев и реакций по приоритетным каналам (discussion groups)Backend13 ч
Глубокая история по min_id: бэкфилл по приоритетным каналамBackend9 ч
Нормализация в общий контур: маппинг в Data Lake (channel,id), дедуп с web-previewBackend7 ч
10. Безопасность и соответствие67 ч
Обезличивание PII на ингесте: детект @username/телефонов/email, salted-хэшBackend11 ч
Хэш-стратегия авторов/каналов (HMAC + project pepper), консистентность Lake↔DWHBackend7 ч
Реестр обработки ПДн + классификация данных под 152-ФЗ (агрегаты vs идентификаторы)Архитектура9 ч
Secrets management: токены/прокси-креды в Vault/SOPS, ротация, запрет в логахDevOps9 ч
OWASP-харднинг API: authn/authz, rate-limit, валидация входов, anti-IDORBackend11 ч
Шифрование at-rest (Lake/DWH) и TLS in-transit между сервисами контураDevOps7 ч
Аудит-лог доступа к данным и админ-действиям (кто читал/менял источники)Backend7 ч
SAST/dependency-scan (Bandit, pip-audit, secret-scan) + разбор первого прогонаDevOps6 ч
11. Интеграция, инфраструктура, приёмка96 ч
CI-пайплайн: lint/тест/build, матрица сервисов, кэш зависимостейDevOps9 ч
CD: сборка образов, registry, версионирование, rollout на контурDevOps11 ч
IaC контура Ozon: манифесты сервисов, сети, ingress, секрет-маунтыDevOps13 ч
Развёртывание stateful (Postgres/ClickHouse, MinIO, очередь) в контуреDevOps11 ч
Нагрузочное тестирование: сценарии дашборд/API/RAG-чат, профиль p95 ≤20сDevOps13 ч
Опытная эксплуатация: полный цикл сбор→тренды на проде, наблюдение, фиксыBackend15 ч
Health-checks, graceful shutdown, миграции БД в деплоеBackend8 ч
Приёмочные процедуры: чек-лист сдачи, smoke на контуре, acceptance-демо данныеPM9 ч
Runbook эксплуатации: запуск/откат/инциденты, бэкап-восстановлениеDevOps7 ч
12. Тестирование (QA)78 ч
Тест-план и матрица покрытия по слоям (коллекторы, ядро, DWH, выдача)QA9 ч
Авто-тесты REST API (контракт по OpenAPI 3.1, позитив/негатив, пагинация, фильтры)QA13 ч
Тесты коннекторов: фикстуры raw payload, дедуп, инкремент, parse_confidence-дрейфQA11 ч
Валидация качества трендов: стабильность кластеров и TrendScore на эталонеQA11 ч
E2E дашборда и RAG-чата (цитаты ведут на реальные посты, нет галлюцинаций)QA11 ч
Регрессионный набор + интеграция в CI, отчёты, флаки-стабилизацияQA11 ч
Тесты обезличивания/152-ФЗ: PII не утекает в DWH/API/логиQA7 ч
Тест-данные и сидинг окружений под прогоныQA5 ч
13. Управление проектом95 ч
План-график, WBS, вехи, синхронизация с релизами по слоямPM13 ч
Реестр рисков и митигация (анти-бот, ToS-серые зоны, дрейф источников, 152-ФЗ)PM11 ч
Координация контура Ozon: доступы, согласования, зависимости на стороне заказчикаPM13 ч
Демо-сессии по вехам: сценарии, данные, проведениеPM13 ч
Статус-отчётность и burn по часам (Clockify → отчёт заказчику)PM11 ч
Управление scope и change-requests (фиксация, оценка влияния, согласование)PM11 ч
Бэклог-груминг и приоритизация спринтовPM12 ч
Финальная сдаточная отчётность и hand-over заказчикуPM11 ч
Итого 147 задач · 1809 ч · разработка 7,56 млн ₽ + 4 источника MVP 0,51 млн ₽. Instagram и научпаб подключаем фазой 2 (в составе договора). Кликните блок, чтобы развернуть задачи.

Команда на старте: 8 человек, ~6 FTE (2 месяца, MVP)

Архитектор / tech-lead1.0 FTE

Архитектура, спайк HDBSCAN+RAG, дирижирует AI-агентами, ревьюит каждый PR. One Face to Client.

Backend / AI-ML lead1.0 FTE

Ядро обработки и DWH — самый рисковый слой на сильнейшем инженере.

Fullstack / Backend ×22.0 FTE

Платформа сбора, коннекторы, Data Lake, MTProto, реализация API.

Web0.6 FTE

Дашборд категорийного менеджера, карточка тренда, отчёт, админка.

DevOps0.7 FTE

Observability, security-инфра, CI/CD и контур на инфраструктуре Ozon.

QA0.4 FTE

Тест-планы и регресс критичных путей: чат, отчёт, скоринг.

PM0.35 FTE

План, риски, эскалации, еженедельные демо, отчёт по часам.

Месяц 1 — Telegram, VK, RSS; Google Trends добираем тонким адаптером покупного API в вехе 1–2. Instagram, научпаб и MTProto-sidecar — фаза 2. Сложный спайк HDBSCAN на 10М + RAG-SLA держим в полных часах, он не параллелится между людьми.

Поддержка 36 месяцев: постоянная команда 2,15 FTE

РольFTEЧто делает каждый месяц
Backend, поддержка скраперов0,75Чинит скраперы при смене анти-бота и API площадок, чистит пул каналов. AI-агенты снижают стоимость одного фикса, не частоту поломок.
DevOps / SRE, дежурство 24/70,5099% SLA, восстановление пайплайна, ротация прокси и секретов, патчинг. Структурный пол.
AI / ML0,40Обновление моделей и промптов, пересчёт Trend Score, gazetteer, пороги.
PM + QA0,50Квартальный ритм, приёмка отчётов, регресс пайплайна.
Итого2,15Аллокация постоянна все 36 месяцев.
Поддержку держим на постоянном уровне: нагрузку задают внешние площадки при смене анти-бота и API, а не зрелость нашего кода. AI-агенты снижают стоимость одного фикса, не частоту поломок. Ежемесячная стоимость пересматривается раз в год на величину max(ИПЦ Росстата, индекс ИТ-зарплат), но не более 10% в год. Аллокация команды постоянна: нагрузку задают внешние площадки, не зрелость нашего кода.