Methodology

This page documents exactly how every number on Soapbox is computed - the data sources, the math, the channel list, and the known limitations. If a figure appears on the site, its derivation is here. The pipeline runs once daily, so every figure reflects the content ingested as of the most recent run.

What we measure

We track a curated set of high-reach political channels on YouTube and podcasts and analyze what they're saying about a defined set of political issues. We classify each substantive issue mention, then score it on alignment with the left or right position and the intensity of expression.

The Soapbox Index

The headline number on the home page. It compresses every issue mention across every channel from the trailing 7-day window ending today into one signed value. The window slides forward each day as the cron runs, so the Index always reflects the most recent week of content but updates daily as new episodes are ingested.

reach_factor = 7 × sqrt(max(channel_reach, 10) / 10,000,000)
weight = intensity × reach_factor
contribution = sentiment × weight

weighted_lean = Σ contribution / Σ weight
soapbox_index = clip(weighted_lean × 2, -10, +10)

A reading of R+1.2 means the channels we track, weighted by audience reach and intensity of expression, are net 1.2 points right of center on the -10/+10 scale this week.

Two deliberate choices keep this honest. First, every voice is weighted by its audience reach (the sqrt above), so a 5M-subscriber show counts for much more than a 50K one - the Index reflects what audiences actually hear, not a one-channel-one-vote average. We weight by the square root of reach rather than its logarithm: a 100× larger audience carries about 10× the weight, so a mega-channel genuinely moves the needle, but a single huge show still can't run away with it. Second, each channel is capped at 3 episodes per day, so a high-frequency publisher can't flood the Index by sheer posting volume. The result measures stance per unit of audience - where a channel leans and how big its audience is - not who posts most often.

The per-issue breakdown that explains today's Index lives on the home page, where it stays aligned with the headline number.

Channel selection

Channels are curated by the founding team and balanced across Left, Middle, and Right political-publishing posture, not by individual host beliefs. The list reflects share-of-voice on the platform, which skews structurally right-of-center in published reach. Pretending the split is even would be dishonest measurement; the imbalance is the finding, not a bug. Every channel's classification rationale is available on the relevant channels page.

Audience reach: how we measure it

Reach is the weighting input in the Index formula above, so it deserves its own disclosure. The two platforms are measured differently, because the data available for them is fundamentally different.

YouTube channels use subscriber counts from the YouTube Data API, refreshed automatically every day during the ingest pass. These are measured values straight from the platform - current, consistent, and not subject to our judgment.

Podcasts have no equivalent. No public per-show audience measurement exists at panel scale: the professional sources (Edison, Triton) are enterprise-gated and cover only top-chart shows, and when we tested commercial aggregators' audience fields against shows with publicly corroborated numbers, the values were unusable - one put a 7M-listener show at 100 listeners. So podcast reach is editorial: an estimated weekly US audience, set by hand and bracketed to coarse tiers (150k, 300k, 500k, 1M, …) rather than presented with false precision.

Estimates are anchored to the ~28 shows whose audiences are publicly corroborated (Edison rankings, publisher announcements), and the remaining panel is placed on that scale using multiple signals: chart positions, ratings volume, public rankers, YouTube presence for video-native shows, and a commercial popularity score we calibrated against the anchors and use only as a weak prior. Values are reviewed at panel-add time and recalibrated periodically; the most recent full-panel pass was June 2026.

Square-root weighting raises the stakes on reach accuracy, and we want to be plain about that. If we're wrong about a show's audience by 2×, its weight moves by about 1.4× (the square root of 2) - not the ~5% an earlier log scale would have absorbed. So reach quality matters more than it used to, and we lean on the cleanest number available.

That is why, for any show we track on both YouTube and as a podcast, the Index now weights it by its YouTube subscriber count - a measured, daily-refreshed figure - rather than the editorial podcast estimate. Editorial estimates remain only where there is no measured alternative, and there they are bracketed to coarse tiers; the cross-tier ordering, which the anchoring protects, matters far more than precision within a tier.

Cohorts: independent vs legacy

We track two cohorts of channel on the same platform (YouTube and podcasts), scored the same way:

The headline Index blends both cohorts, weighted by audience as above; the two sub-needles on the home page show each cohort on its own, so the split that the blended number averages over stays visible. Legacy follows the same 3-episodes/day cap as everyone else, so a high-volume newsroom can't dominate by posting frequency.

Issue taxonomy

A set of 16 issues: Immigration, Inflation, Israel–Gaza, Ukraine, China policy, Trump/GOP, Democratic leadership, Transgender/LGBTQ policy, Crime, Election integrity, AI policy, Free speech, Education/DEI, Abortion, Climate, and the Iran conflict. For each issue we declare a left-leaning and right-leaning position; the sentiment score on every classification is measured against those positions, not against US-political stereotypes. The taxonomy expands as new themes become dominant in the discourse.

Classification and scoring

For every episode we ingest, we pull a transcript (PodScan for podcasts; YouTube auto-captions for video). We then run two LLM passes:

Known limitations

Advertisers

The Advertisers board counts host-read sponsor messages detected in transcripts over a selectable window (30 days by default; “All” reaches back to May 2026, when dense panel coverage begins - detections exist in older backfilled episodes but are not shown, so a coverage ramp never reads as advertiser behavior): a pattern-matching pass flags candidate sponsor language (sponsor intros, promo codes, spoken URLs), and a language model confirms each candidate against a short excerpt, separating paid third-party reads from a show's own self-promotion and resolving the brand name. Placement share is reach-weighted with the same reach factor as the Soapbox Index, split by each carrying channel's editorial lean. Three honest limits: detections are estimates of on-air reads, not verified commercial contracts; produced ad spots and dynamically inserted ads carry no sponsor-read language and are out of scope by design; and auto-transcription can mangle brand names, so every advertiser page links each detection back to its source excerpt. Ad segments never feed the Soapbox Index or any favorability score.

Update cadence

The full pipeline (ingest → transcribe → classify → score) runs as a single scheduled job at 6 AM Eastern, daily. New episodes from the past day are ingested, transcribed, classified, and scored. The Soapbox Index, issue contributions, channel drill-downs, and per-issue trends recompute against the trailing 7-day window from the data available at run time. Headline numbers on the site therefore refresh once per day; the rolling-window methodology keeps each daily reading stable rather than swinging with each new episode.

Why this exists

Political influence has moved from cable and print to podcasts and YouTube. Polling and legacy media-monitoring don't capture this. Soapbox is built so consumers, creators, and political operatives all have a way to see past their own algorithmic bubble.