PHILO × RITUAL ADS
Report / The League

Built, counted,
and auditable.

1,364 videos, 13,757 comments, 976 articles, and 39 dated events, all collected ourselves, labeled against a fixed schema, and counted with plain code.

The credibility of every chart on this site rests on the same rule: models describe, code counts, and every number keeps a pointer to the artifact it came from. This page is the audit trail, including the places the data disagreed with us.

Pipeline

Six steps from the wild to the page

01 · COLLECT

Every brand's TikTok, Instagram, and YouTube video; Meta and Google ad libraries; websites and press coverage; Reddit threads with full comment trees; LipstickAlley forum threads; franchise event announcements. All raw artifacts land in one Postgres lake with source, provider, and timestamp.

02 · LABEL

Each video is transcribed and analyzed shot-by-shot into a fixed schema (v3): who the hero is, what is claimed, who speaks, humor mode, cultural references. The analyzer never sees our hypothesis. It labels one video at a time.

03 · INDUCE

From the full pool of ads, a codebook of 12 story axes and 12 craft axes is learned from the category itself. The axes are what actually varies in streaming advertising, not what we hoped would vary. Every video is then scored against the same anchored scales.

04 · COUNT

Vocabulary studies are pure Python: fixed word lists written before results were seen, counted with word-boundary matching against two control communities, with smoothed lifts and log-odds n-grams (Monroe et al.). No model touches a number.

05 · CLASSIFY

Because word counts mix up a show's topic with its fans' voice, comments are also classified by how they speak: a fixed seven-stance codebook (verdicts, kin-claims, allegiance, strategy, reaction, recap, other) applied comment by comment, blind to our thesis, in batches of 20. Shares, smoothed lifts, and confidence intervals are then computed in Python; 10% of every sample is labeled twice to measure agreement (86–95%, κ 0.61–0.88 on the verdict stance).

06 · TRACE

Fingerprints, lifts, events, and quotes persist with provenance: codebook version, lexicon version, prompt version, sample sizes, provider, source URL. Any number on any page can be walked back to the artifact that produced it.

Where the data pushed back

Limitations we kept in view

A report that can't say no to its own thesis isn't evidence. These are the honest edges of ours.

Why we classify voice, not count words

Counting words confuses a show's subject matter with its fans' voice: shows about families lift 'family' words, and idioms like 'guilty pleasure' read as courtroom talk. Classifying how a commenter speaks (verdict, kin-claim, allegiance) means a topic can't pass itself off as a voice. The verdict finding clears that harder bar in all six communities (1.7–3.6×); a family-language finding does not, which is why the campaign guidance points at the jury, not the kin.

Stance labels come from a model; the math doesn't

A fixed, versioned codebook is applied blind, comment by comment. Everything downstream (shares, lifts, confidence intervals) is plain Python. 10% of every sample is independently re-labeled: 86–95% agreement, κ 0.61–0.88 on the verdict stance. Marriage Boot Camp yielded no full comment threads and is excluded from the stance study rather than padded with thin snippets.

Stance lifts are measured against actual sports fans

The pooled control includes real sports-fan communities, which sets a deliberately high bar. It's why 'coaching & strategy' runs below control for reality fandoms (0.39–0.95×) and 'taking sides' only matches it: sports fans do both constantly. The one stance reality fandom owns outright is the verdict.

Mid-collection, one search vendor was replaced

Tavily's API went down for billing mid-run. News collection fell back to Google News RSS, Reddit search moved to a full-thread crawler (a richer source than the snippets it replaced), and events added Wikipedia and Google News providers. Every artifact records which provider produced it, so sources are never silently mixed.

Fall 2026 premiere dates aren't announced yet

The season schedule establishes the rhythm, not the specific October lineup. Networks announce fall dates roughly 6–8 weeks out; the events fetcher keeps running and the schedule in Report 05 updates itself.

Competitor switcher threads are still landing

Philo's customer threads are fully collected; the nine competitor crawls run on the identical pipeline and are collecting now. Comparisons ship only when both sides use the same ruler.

Data frozen 2026-07-29 · story codebook v1 (12 axes) · craft codebook v1 (12 axes) · lexicons v1 (archived) · vocab method v1 (archived) · stance method v2 (codebook stance-1) · all derived tables live in the same lake as the raw artifacts they cite.