Researching a series
To research a series, we write a spec file for it (series/<id>.json), let series-analysis search YouTube with hundreds of title variants, enrich the best 150 videos and their channels, and rank them on fit, performance and learnability. We then pick two study cohorts of 10 winners (new channels and established ones), save their transcripts, and study them three ways: a blind statistical script study, a quote-checked teardown of each video, and a look at the young channels that broke out. For "Why X died" the results were: storytelling is table stakes; no script-craft measure predicted performance among winners; the packaging formula is a household brand, a collapse word and a question that withholds the cause.
- Run:
npm run series:all(plan, search, mine, enrich, rank, report), thenseries -- transcriptsandseries -- cohorts. - Trust: the statistics could only compare winners with winners, so they cannot say what separates hits from misses. The teardown is one reader per video, with quotes machine-checked. Both give leads, not rules.
- Gap that matters: no cohort yet includes weak videos of the same format. That is the next experiment the study asks for.
What "researching a series" means here
A series is a repeatable format with a promise. Before writing any episode, the project asks four questions of the format itself:
- Which videos already exist with this packaging, and how are they doing against their own channels?
- Which of them are worth learning from (they fit, they overperformed, and a new channel could plausibly match them)?
- What do the winners do in the script and in the packaging, and what do they all do (table stakes) versus only some?
- What can we not tell from this, and what experiment would close the gap?
The tool for the first two is src/series-analysis/; for the third, the skills script-cohort-analysis and winning-video-teardown; the fourth is written into every report.
Step 1: the series spec
A series is one JSON file in series/. Two exist: why-x-died.json (the format study) and fall-of-x.json (the topic study; see page 04). The fields of why-x-died.json:
- id, name, premise
- "Why X Died / How X Died": documentary-style explainers on the collapse of famous companies and brands. "Disaster aversion plus a household name gives the click; the body is a business case study of what actually went wrong."
- ecosystem, researchDb
indian-businessanddata/indian-business-ecosystem.db. The research database is read-only input; the series has its own store.- referenceChannels
- HinExp, Shivanshu Agrawal, Dhruv Rathee, Finance with Sharan, Aprajita Mishra, Zell Education.
- titleFormulas
- "Why {company} Died", "How {company} Died", "The Fall of {company}", "What Happened to {company}", "{company} Collapse Explained", "Rise and Fall of {company}", "{company} Downfall Case Study".
- hinglishFormulas
- "{company} kaise doob gayi", "{company} barbaad kyun hui", "{company} ka downfall".
- adjacentPackagingFormulas
- "How {company} destroyed itself", "{company} biggest mistake", "{company} scam explained", "Why {company} failed".
- companies
- 30 Indian and 15 global names to substitute into the formulas (Kingfisher, Jet Airways, Satyam, Byju's, Cafe Coffee Day, Yes Bank, Vodafone Idea, Nokia, Kodak, FTX, and others).
- genericQueries, adjacentTopicQueries
- Queries with no company: "biggest business failures in India", "Indian business scams explained", "company collapse documentary hindi".
- failureTerms
- English and Hindi words that signal a collapse framing (died, collapse, bankrupt, barbaad, doob, and Devanagari forms).
- scoring
- Weights
fit 0.35, performance 0.35, learnability 0.30; minimum fit 0.30 to be ranked; at most 2 per channel in the top; top 10; duration sweet spot 8 to 35 minutes; ideal channel size 10K to 1.5M subscribers; recency half-life 3 years. - cohorts
- See step 5.
- budget
- 70 queries, 25 results per query, enrich the top 150 videos and 60 channels, baseline from the last 40 uploads, transcripts for the top 15.
To research a new series, copy a spec, rewrite the premise and the formulas, and replace the company lists. Everything downstream reads the spec.
Step 2: run the stages
npm run series:all # plan, search, mine, enrich, rank, report (why-x-died)
npm run series -- <command> --series=why-x-died # run one stage
| Command | What it does | Useful options |
|---|---|---|
plan | Builds search queries in six tiers: exact, exact-hinglish, adjacent-packaging, generic, adjacent-topic, reference-channel. | --max-queries=N, --llm (adds LLM-proposed queries) |
search | Runs pending queries; stores each video and which query and position found it. | --limit=N, --results=N, --retry |
mine | Adds on-series videos already in the research database. | --research-db=PATH, --min-views=N |
enrich | Full video metadata (views, likes, exact date, duration, description), channel metadata, and each channel's recent-uploads baseline. | --videos=N, --channels=N, --basic, --retry |
judge | Optional language-model fit check on the shortlist. | --top=N |
rank | Scores everything and picks the learn-from set. | --top=N |
transcripts | Saves transcripts of the learn-from set to transcripts/series-analysis/<id>/ in the VIDEO / PERFORMANCE / CHANNEL / TRANSCRIPT layout. | --top=N |
cohorts | Picks the study cohorts and saves a transcript for each into cohort-new/ and cohort-established/. Transcripts must pass capture checks (coverage, words per minute, subscribe spam, caption loops) or the next candidate is used. | --size=N |
report | Writes reports/series-analysis/<id>-<run>.md and .json. |
Every stage is resumable: it skips work already stored. Add --verbose to see the YouTube helpers' logging. Enriching a video takes about 5 seconds, so 150 videos take about 12 minutes. The store is data/series-analysis.db (override with SERIES_ANALYSIS_DB), keyed by series id so it never touches the niche databases.
Step 3: how the ranking works
learn_score = 0.35 fit + 0.35 performance + 0.30 learnability.
- Fit. Failure vocabulary in the title, structure ("Why X died", "The fall of X", "rise and fall", Hinglish forms), a named company, and how many queries surfaced the video. Averaged with the language-model judgement if
judgewas run. Below 0.30 a video is excluded. - Performance. How far the video beats its own channel's typical upload (median of recent uploads older than 30 days, log-scaled), views per day with age floored at 30 days (percentile within the on-series pool), and like ratio. Missing parts are re-weighted, never counted as zero.
- Learnability. Length in the 8 to 35 minute sweet spot, a channel size you could plausibly match, recency, and a heavy penalty for formats whose views come from elsewhere (podcasts, interviews, fiction clips, shorts, reactions, news).
- Selection. Greedy top N with at most 2 per channel and 2 per company.
The report also lists breakouts (small channels at 3 times their norm or more), reference giants (3M+ subscribers) and a contrast set (same packaging, weak result).
The 2026-10-20 run: 150 videos enriched, 149 eligible, a top 10 led by Nokia (Tech District, 29.3 times its channel norm), Big Bazaar (Truth Vault, 101.7 times, on a channel of 2.2K subscribers) and Zilingo (79.5 times). Satyam by a 1.2K-subscriber channel scored 316.8 times its norm.
Known limits of the ranking
- Fit is read from titles only. A title like "Why the World's Largest Megaproject Collapsed" scores as on-series although it is not a company. The report's rank 8 is exactly that (a WSJ video); the cohort step excludes it by hand.
- The company list in the spec is a starting point. Edit it.
- Views are lifetime totals. Channel baselines come from at most the latest 40 uploads.
- Thumbnails and scripts are not seen by the ranking.
Step 4 and 5: cohorts and transcripts
The spec defines two cohorts of 10, with a shared rule so they differ only in age:
| New | Established | |
|---|---|---|
| Age | 30 to 420 days | 900 days or more |
| Minimum views | 40,000 | 300,000 |
| Shared | fit at least 0.75; 7 to 45 minutes; at most 2 per channel and 2 per subject | |
Seven videos are excluded by hand with a stated reason: a WSJ megaproject, a Saudi megaproject, an IT-industry trend, a Chinese smartphone sector, an Elizabeth Holmes profile (a person), the Mumbai dabbawalas (not a collapse), and a two-brand rivalry. The cohort folders hold 10 transcripts each; the sample is in transcripts/series-analysis/why-x-died/ (gitignored).
Step 6: three ways of studying the winners
6a. A blind, pre-registered script study
Skill script-cohort-analysis (rubric v3: 45 yes/no checks over 11 dimensions). Language-model raters (Haiku, three per video) never knew performance. Claims were registered before the answers were unsealed. It adds pairwise craft comparisons (45 pairs per cohort), a blind topic judge, deterministic counters, and a damage-test calibration. Report: reports/series-analysis/why-x-died-script-study.md.
| Measure | New | Established | Reading |
|---|---|---|---|
| Checklist composite | -0.02 | 0.55 (p 0.05) | Weak in one, nothing in the other |
| Pairwise craft | 0.07 | -0.04 | No signal |
| Presenter voice | -0.16 | 0.80 (p 0.004) | Worked once. A lead, not a rule |
| H-005 cold open on the collapse | -0.47 | -0.45 | Rejected: wrong direction in both |
| Numbers in the first 60 s | -0.32 | -0.51 | Wrong direction in both |
| H-004 named people carry the story | 0.34 | 0.33 | Weak support in both |
| H-006 one stated central cause | 0.30 | 0.53 | Weak support, same sign |
| Video length | 0.12 | 0.72 (p 0.02) | Longer did better among established |
The columns are rank correlations with performance. The headline: storytelling is table stakes. All 20 are already competent stories (emotion passes in 95%, escalation in 92 to 97%, hook in 85 to 95%). Blind script craft did not predict performance. No rule met the bar of "explains in two cohorts with no contradiction". Measures raters could not agree on (curiosity, forward references, loops per 10 minutes) are ignored.
What nearly every winner does (mean rater scores out of 5, new / established): blames a named decision or person 4.6 / 4.2; a named person carries the story 3.7 / 3.5; reversal of a belief 3.8 / 3.4; one stated central cause 3.3 / 3.4. What is rare: putting the viewer inside an everyday scene first, 1.6 / 1.7. Time to the promise is about 40 to 45 seconds; speaking rate about 180 words per minute.
6b. A teardown of the 20 best
Skill winning-video-teardown. One Sonnet analyst per video read the whole transcript and looked at the thumbnail, named every mechanism, and quoted the moment. A validator rejects an analysis whose quotes are not in the transcript (at most 2 of 31 unverified in any analysis; six hand spot-checks all held). Report: why-x-died-teardown-synthesis.md; per-video detail in transcripts/series-analysis/why-x-died/teardown/teardowns.md. The genre baseline it produced (counts of videos in which a mechanism was found and quoted, out of 20):
| Script | of 20 | Packaging | of 20 |
|---|---|---|---|
| Rise-and-fall arc | 17 | A household brand or person in the title | 19 |
| Peak-versus-trough numbers | 17 | A franchise formula ("Rise and Fall of X", "Why X failed") | 17 |
| Specific numbers | 16 | A disaster frame (died, destroyed, downfall) | 17 |
| An open loop | 16 | An open question or half-statement | 12 |
| A takeaway for the viewer | 14 | Logo or product in the thumbnail | 18 |
| A named villain, person or decision | 13 | Three words or fewer of thumbnail text | 17 |
| One stated central cause | 13 | A face with strong emotion | 14 |
| A forward tease | 10 | A before-and-after or peak-versus-fall image | 12 |
| An analogy | 9 | Promise delivered fully / partly | 13 / 7 |
| Viewer self-reference | 8 | Clickbait risk none / borderline / high | 12 / 8 / 0 |
| A recognisable presenter persona | 6 |
Loops: about 4.4 open at once per video, 92% closed, the first at about 34 seconds; the promise is stated by about 43 seconds.
The title pattern: {household brand} + {collapse word} + {a question or half-statement that names the event and withholds the cause}, optionally with a scale number or a "case study" label. The thumbnail often asks the human question the title leaves out (in Hindi even when the title is English): "how did the CEO sink it", "it did not sink, it was sunk".
Where the promise outruns the video: the titles that promise one decisive cause ("what really destroyed", "unavoidable", "killed", "murdered"). They worked, but in the analysts' reading they are where the promise most often exceeds what the video proves. This is the origin of the project's habit of auditing the title against the evidence (the Moser Baer "Killed" decision).
6c. The young channels that broke out
reports/series-analysis/young-successful-channels.md lists channels that joined in 2022 or later and have 50K+ subscribers or an on-topic video above 200K views, drawn from the 57 channels enriched with a join date (of 1,326 found). Examples: Rajnikant Sharma (298K, best video 2.7M), Unravelled by Shankar (725K, Ola, 19 times its norm), Truth Vault (2.2K subscribers, Big Bazaar at 100 times its norm), Kushagra Gupta (1.2K, Satyam at about 300 times). Caveat: these are the best-case videos our searches surfaced, not a random sample, and every other channel has no join date.
6d. Seven within-channel studies
Separately, the skill within-channel-study was run on HinExp, AniHis Hindi, Martik Finance, Bub Explains, EverythingProfessor, Margin and No Fluff Academy (Re Veal was blocked by the 10-video gate). transcripts/_cross-channel-study.md compares them. These bear on topic choice more than on script craft, so they are summarised on page 04.
What the series research cannot tell us
- Winners only. All 20 are top performers, so differences between winners and losers could not appear. Range restriction was the main limit.
- Thumbnails, click power, topic demand and the channel's own audience are invisible to a transcript. The strongest explanations for the stumped videos were external: a huge channel baseline (Byju's), a personality channel (a motivational speaker with 21M subscribers), a non-Indian subject (Kodak, Sears).
- The performance metric is a blend (views against the channel's norm, views per day, likes). It penalises big channels and flatters tiny ones.
- n = 10 per cohort, Haiku raters. About 4 "explains" per 40 tests are expected by chance. Several Hindi auto-caption transcripts are garbled.
- The damage test missed a cut ending on one of two scripts, so payoff and ending measures are weak.
What the study says to act on (descriptive, true of all 20): open within about 45 seconds with a clear promise, tell a named-person story, blame a specific decision, run between 10 and 33 minutes, and do not rely on a cold open or on stuffing figures into the first minute. What to test, not rely on: a strong personal voice (ledger H-010), a hook built on the viewer's own memory of the brand (H-011), a single stated cause (H-006).
The experiment the study asks for
- Build a third cohort of 10 that includes weak performers with the same format (the report's contrast set is the starting point).
- Test packaging and topic ideas on titles at scale first; the store already holds 150 enriched videos with performance.
- Run H-010 and H-011 (and H-004, H-006) blind on that cohort. They sit in the ledger as pre-registered questions.
The hypothesis ledger (H-001 to H-017) is transcripts/_script_ledger.json (gitignored). Rubric v3 does not yet include checks for lessons E to M (see known gaps).
The viewer
npm run series:viewer serves http://localhost:3100 (SERIES_VIEWER_PORT changes it). The home page lists the series; /s/<series> has a Videos tab (search, sort, filter by channel) and a Channels tab; /s/<series>/v/<videoId> shows the thumbnail, stats, description, transcript and teardown. With no teardown, the "Generate teardown" button fetches the transcript, runs a Sonnet analyst through the claude CLI (it must be on PATH), validates the quotes and shows the result in about 3 minutes.
Checklist: researching a new series
- Write
series/<id>.jsonfromwhy-x-died.json: premise, formulas, companies, failure terms, scoring, cohorts, budget. Name the niche database it reads. - Run
plan, read the queries, runsearch,mine,enrich,rank,report. - Read the top 10 for off-series videos (non-companies, formats with outside reach) and add them to
cohorts.excludewith a reason. - Run
transcriptsandcohorts. Check the capture checks passed. - Run the teardown (page 05, S2) and, only if there are weak videos in the set, the cohort analysis.
- Record what the format's table stakes are and what the winners get away with that you should not copy (mid-story plugs, an unargued central claim).
- Write down what the study cannot say, in the report, before using it.
Written 2026-10-27 from the repository files and the project memory notes. If a page and a file disagree, the file is right: fix the page.