<!-- PUBLIC: research-engineering plan; contains no credentials or private data. -->
# Daisy Content Intelligence Data Program · план v0.2

Дата фиксации: **22 августа 2026**. Статус: **corpus v1 FROZEN / Extraction Gate 1 OPEN**.

## 0. Что исправляет эта программа

Существующий каталог из 160 ресурсов — только **seed-реестр источников на уровне каналов и площадок**. Он не является корпусом публикаций и не позволяет делать доказательные выводы о содержании, педагогике, визуальной упаковке или эффективности каналов.

Новая программа идёт снизу вверх:

`источник → неизменяемый снимок → публикация → медиа → транскрипт/сегменты/OCR → согласованная кодировка → QA → заморозка датасета → анализ`.

Corpus v1 уже заморожен. Теперь запрещены массовый parsing v0.2, рекомендации и рейтинги до утверждения 110-полевого codebook и прохождения calibration Gate 1.

## 1. Граница исследования

### Основное окно

- период публикации: **2026-02-22 — 2026-08-22**;
- точка интереса: массовое появление Cowork/Codex/agentic work в контенте для начинающих;
- языки: русский и английский, язык фиксируется на уровне публикации;
- платформы первой очереди: **YouTube + Telegram**;
- единица анализа: **отдельное видео, пост, выпуск, статья или урок**, не канал в целом.

### Сравнительное окно

Рекомендуемый контроль: **2025-08-22 — 2026-02-21**. Он нужен не для удвоения всей выборки, а для оценки, что изменилось после появления Cowork/Codex-форматов: темы, инструменты, профессии, обещания, длина, подача и серийность.

### Дополнительные источники после YouTube и Telegram

1. TikTok, Instagram Reels, YouTube Shorts — короткая механика открытия возможности.
2. LinkedIn, X, Threads — профессиональная упаковка и цепочки дистрибуции.
3. Substack/newsletters, блоги, официальные use-case библиотеки и changelog — текст и версии продукта.
4. Podcast/RSS — длинное объяснение и интервью.
5. Курсы/академии — учебная последовательность, задания, проверка результата.
6. GitHub-шаблоны и публичные репозитории — воспроизводимые артефакты.

Каждая площадка получает отдельную запись `access_policy`: официальный API, публичная страница, robots/ToS, доступность архивирования, допустимость транскрипции, лимиты и дата проверки. Недоступный или запрещённый слой помечается `BLOCKED`, а не восстанавливается догадкой.

## 2. Что уже есть и что реально отсутствует

| Слой | Сейчас | Как учитываем |
|---|---:|---|
| Seed-источники | 160 / 160 terminal | 90 YouTube, 40 Telegram, 30 web/course/text/audio |
| Frozen membership | 38 318 items | release-pinned snapshots, membership SHA-256 |
| Raw/parsed ledger | 38 318 items | snapshots, blocks, links, media и provenance сохранены |
| Транскрипты | 6 279 complete | 1 967 missing, 30 070 N/A, 2 blocked; ASR — следующий отдельный source_type |
| Transcript segments | 3 469 252 | доступны до exact item и timestamp |
| Legacy claims | 459 816 | 12 deterministic claims/item; только навигационный слой |
| Extraction Contract v0.2 | 110 fields | 10 domains, 12 owner decisions, bulk parsing LOCKED |
| Calibration set | 96 / 96 pinned | 48 YouTube, 32 Telegram, 16 web; 0 annotated |
| Датасет, готовый к анализу v0.2 | 0 | Gate 1 требует codebook approval, annotation и QA thresholds |

## 3. Архитектура данных: raw-first

### RAW · что было опубликовано

Неизменяемые записи: URL, platform ID, дата публикации, title/body/description, метрики-снимки, ссылки, разрешённые медиа/обложки, captions, хэш payload, `fetched_at`, HTTP status, метод доступа. Повторный crawl создаёт новый snapshot, а не перезаписывает старый.

### PARSED · что технически извлечено

Транскрипт и язык, сегменты с таймкодами, главы, OCR кадров/каруселей, композиционные признаки обложки, блоки форматирования поста, упоминания инструментов и ссылок. Каждый результат хранит `parser_version`, `model_version`, `prompt_version`, confidence и ссылку на raw hash.

### CODED · как материал классифицирован

Аудитория, профессия, задача, входы, метод, шаги, результат, критерий готовности, затраты времени, педагогика, формат, CTA и serial mechanics. Кодировка допускается только по утверждённой схеме и обязана иметь evidence span: таймкод, символы текста, кадр или поле metadata.

### ANALYTIC · что посчитано

Coverage, частоты, кластеры, динамика, co-occurrence, различия платформ и временных окон. Этот слой создаётся только из замороженного `dataset_release_id`; ничего аналитического не записывается обратно в raw.

## 4. Нормализованные сущности

1. `platform` — YouTube, Telegram и другие источники.
2. `source_account` — канал/аккаунт/издание.
3. `source_account_snapshot` — подписчики, описание, playlists, cadence на дату.
4. `content_item` — стабильная идентичность отдельной публикации.
5. `content_snapshot` — версия title/body/description/metrics.
6. `media_asset` — thumbnail, image, carousel, audio/video locator и hash.
7. `transcript` — источник captions/ASR, язык, качество.
8. `transcript_segment` — start/end/text/speaker.
9. `visual_observation` — кадр, OCR, композиционные признаки.
10. `format_block` — абзац, заголовок, список, emoji, code, link, image.
11. `outbound_link` и `cta` — куда ведёт публикация и что просит сделать.
12. `entity_mention` — инструмент, модель, продукт, профессия, организация.
13. `extraction_run` — версия схемы, parser/model/prompt, timestamps.
14. `extracted_claim` — одно значение + статус знания + evidence span.
15. `taxonomy_term` и `item_term` — нормализованные many-to-many разрезы.
16. `annotation` — human/model decision, reviewer, disagreement.
17. `qa_sample` — выборка контроля, golden label, agreement.
18. `crawl_run`, `crawl_error`, `retry_queue` — операционное состояние.
19. `rights_status` — что разрешено хранить и показывать.
20. `dataset_release` — frozen membership, versions, hashes и QA report.

Физическая схема вынесена в `schema-v0.1.sql`. Это **аддитивный проект**, не выполненная миграция.

## 5. Draft: что извлекаем из каждой публикации

Каждое поле получает одно из состояний: `OBSERVED`, `DERIVED`, `MODEL`, `HUMAN_ANNOTATION`, `MISSING`, `NOT_APPLICABLE`, `BLOCKED`.

### A. Идентичность и происхождение

Платформа, channel ID, item ID, canonical URL, версия, дата/час публикации, язык, доступность, дата сбора, raw hash, collector, access method.

### B. Упаковка обещания

Title, opening line, hook type, обещаемое изменение, конкретность результата, число/срок, novelty claim, fear/status/gain angle, thumbnail text, длина thumbnail-текста, face/tool/logo/screenshot/before-after, dominant colors, composition, visual clutter.

### C. Аудитория и ситуация

Явно названная аудитория, выведенная аудитория отдельно, профессия/роль, уровень, life/work/team/children, триггер ситуации, частота дела, риск ошибки, кто пользователь и кто покупатель.

### D. Инструмент и версия

Продукт, модель, feature, интеграция, версия/дата, платность, prerequirements, альтернативы, vendor relationship, наличие affiliate/sponsorship disclosure.

### E. Работа, которой учат

Job-to-be-done, исходное действие, дело/эпик, входные материалы, ограничения, последовательность шагов, decision points, output/deliverable, тип результата DT01–DT16, контур K1–K10, критерий `готово`, проверка на новом примере, ручной контроль.

### F. Затраты и сложность

Time-to-first-result, полное время выполнения, длина просмотра/чтения, prerequisites, число инструментов, число переключений, setup burden, recurring cost, когнитивная сложность.

### G. Методика обучения

Explain/demo/build-along/case/challenge/reference/news, mental model, worked example, scaffold, repetition, retrieval/check, error demonstration, recap, homework/template, progression, beginner assumptions, transfer to own data.

### H. Режиссура и монтаж

Talking head/screen/split/voiceover, cold open, result-first, pacing, shot changes, chapters, on-screen text, cursor/zoom/highlight, B-roll, music/SFX, pauses, proof moments, failures/corrections, density by minute.

### I. Структура текста/поста

Длина первого экрана, абзацы, headings, bullets, emoji, code, prompts, screenshots, carousel sequence, links, quote blocks, CTA position, disclosure, comments prompt.

### J. Серийность и воронка

Playlist/series, предыдущий и следующий item, recurring rubric, cadence, newsletter/community/template/course/product CTA, lead magnet, monetization path, cross-platform repackaging.

### K. Доказательства и границы

Source citations, visible input/output, before/after, result verification, counterexample, limitations, privacy/safety, corrections, unverifiable claims.

### L. Реакция аудитории — отдельный слой

Views, likes, comments, shares/reposts, subscriber count и ratios фиксируются как snapshots с denominator и временем. Эти метрики не смешиваются с качеством обучения и не интерпретируются как понимание или применение.

### M. Связь с Daisy

Cowork/Codex/ChatGPT/Daisy relevance, профессия, task transfer, context/memory need, multi-step need, collaboration/handoff, acceptance protocol, возможность воспроизведения без кода.

## 6. Правила гранулярности

- Нельзя переносить свойство одного видео на весь канал.
- Один item может содержать несколько задач, методов и инструментов; используются связи many-to-many.
- Один `extracted_claim` содержит одно утверждение и минимум один evidence span.
- Поля, которых нет в источнике, остаются `MISSING`; модель не «дополняет» автора.
- Выводимая аудитория хранится отдельно от аудитории, названной автором.
- Визуальные признаки хранятся как наблюдения; субъективный «красиво/плохо» не является первичкой.
- Изменившееся название, описание или метрики создают snapshot.
- Дубликаты, перевод, cross-post и нарезка связаны relation type, но не сливаются молча.

## 7. Волны исполнения и ворота

| Волна | Работа | Выход | Gate |
|---|---|---|---|
| W0 · 2–3 дня | аудит seed-160, platform access matrix, frozen IDs/окна | source registry v1, права и риски | G0: scope frozen |
| W1 · 3–5 дней | отдельная БД/хранилище, schema, crawl ledger, idempotency | пустой, проверенный data plane | G0 |
| W2 · 5–7 дней | inventories всех публикаций в окне | expected item denominator по каналу/месяцу | G0 |
| W3 · 5–7 дней | pilot raw crawl: metadata/body/thumb/captions | 50-item stratified raw pilot | G1 начинается |
| W4 · 3–5 дней | transcript/segments/OCR/frame sampling | parsed pilot + QA sample | G1 |
| W5 · 3–5 дней | extraction v0.1, двойная разметка 10–20% | disagreement report и schema diff | **G1: согласование с заказчиком** |
| W6 · 1–3 недели | массовый crawl 6 месяцев по утверждённым правилам | raw + parsed corpus | G1 пройден |
| W7 · 4–6 дней | retry, dedupe, entity resolution, QA, missingness | release candidate | **G2: freeze** |
| W8 · после G2 | описательная статистика, кластеры, динамика, визуальные паттерны | evidence-backed analysis | G2 пройден |

Срок W6 зависит от числа публикаций, доступных captions, rate limits и разрешённого хранения медиа. Он пересчитывается после W2, когда известен настоящий denominator.

## 8. Пилот 50 публикаций

Рекомендуемый состав: 20 YouTube, 20 Telegram, 10 других форматов. Стратификация:

- высокий/средний/нишевый охват;
- RU/EN;
- универсальный новичок/профессия/команда/дети;
- tool-news/workflow/tutorial/mental-model/case;
- short/medium/long;
- creator/company/academy;
- с captions и без captions;
- до и после изменения Cowork/Codex-повестки.

10–20% размечаются независимо двумя annotators. Для категорий считаются agreement/F1, для числовых полей — допустимое отклонение, для evidence spans — overlap. Поле не допускается к массовому извлечению, если нет понятной инструкции и воспроизводимости.

## 9. Dashboard первой стадии: только накопление данных

До Gate 2 дашборд показывает не «лучшие темы», а состояние корпуса:

1. источники: discovered → eligible → inventoried → crawled;
2. items: expected vs fetched по platform/channel/month;
3. coverage: metadata, body, thumbnail, media, captions, transcript, OCR, frames;
4. transcription: items, минуты, язык, source, confidence, error rate;
5. extraction: заполненность каждого поля и доля `MISSING/BLOCKED`;
6. quality: retries, HTTP errors, duplicates, unresolved entities;
7. lineage: raw hash → parser run → extraction run → annotation;
8. freshness: последний успешный crawl и lag;
9. rights: хранение/показ metadata, transcript, thumbnail, media;
10. QA: sample size, agreement, unresolved disagreements;
11. freeze: версия схемы, membership hash, blockers.

Каждый счётчик открывается до списка конкретных items и raw snapshot. В интерфейсе до Gate 2 стоит явный lock: **«аналитические выводы не разрешены»**.

## 10. Инфраструктурное решение

### Рекомендуется

Отдельный сервис `daisy-content-intelligence` на Railway:

- PostgreSQL — metadata, snapshots, relations, runs, QA и releases;
- object storage — raw payload, разрешённые thumbnails/media, transcripts, OCR/frame artifacts;
- workers/queue — crawl, transcription, OCR, extraction, retries;
- read-only API — dashboard и drill-down;
- текущий Labs/Caddy — публичная/закрытая поверхность dashboard, не место исполнения тяжёлых jobs.

Это отделяет исследовательский корпус от `/data/needfield.sqlite`, снижает риск повредить Needfield discovery DB и позволяет масштабировать item-level историю.

### Допустимый MVP

Отдельный `/data/daisy-content-intelligence.sqlite` + файловое object tree для pilot до примерно 2 000 items. Это быстрее, но хуже для параллельных workers, истории snapshots и будущего объёма. В основную `needfield.sqlite` данные не смешиваются.

## 11. Gate 1: что согласовать до массового разбора

1. Основное окно 6 месяцев и контрольное окно предыдущих 6 месяцев.
2. YouTube + Telegram как первая очередь; порядок дополнительных платформ.
3. Граница прав: metadata/captions/thumbnails или архивирование разрешённых media.
4. Поля A–M, словари значений и обязательность evidence span.
5. Масштаб: все items top-N каналов или cap на канал с фиксированным sampling rule.
6. Инфраструктура: отдельный PostgreSQL + object storage (рекомендуется) или SQLite pilot.
7. Кто второй annotator и какие disagreement thresholds блокируют full crawl.

До ответа на эти пункты можно выполнить W0–W4 и показать pilot. Массовая классификация и выводы не запускаются.

## 12. Definition of Done датасета v1

- зафиксирован denominator eligible items по каждому источнику и месяцу;
- ≥95% eligible metadata/body, либо каждый пропуск имеет error/right status;
- ≥90% thumbnails/visual surface там, где доступно;
- ≥85% транскриптов для видео с речью, либо задокументированный blocker;
- 100% extracted claims имеют evidence pointer и version lineage;
- duplicate/cross-post relations разрешены или явно `UNRESOLVED`;
- QA thresholds Gate 1 выполнены;
- frozen release содержит schema, codebook, membership, hashes, coverage и missingness report;
- любой график строится только по `dataset_release_id` и раскрывает denominator.

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