Skip to main content
Full Transparency

How Narrative Compass Works

Every number, label, and comparison on this site is produced by a documented process. This page explains each step — where the data comes from, how narratives are chosen, how scores are calculated, and what the AI is (and is not) asked to do — so anyone can check the work.

Overview

Narrative Compass is a media-literacy tool. It watches the public RSS headline feeds of 8 far-right / hyper-partisan outlets and 10 mainstream baseline outlets, finds stories covered by both groups, and compares how each side frames the same event.

The pipeline has five stages:

  1. 1

    Collect

    Pull the latest headlines from each outlet's public RSS feed.

  2. 2

    Cluster

    Group headlines that share key terms into candidate narratives.

  3. 3

    Score

    Compute a 0–100 Velocity Score from outlet saturation, Google Trends, and Reddit.

  4. 4

    Analyze

    Fetch the article text and ask an AI model (Google Gemini) to compare framing.

  5. 5

    Present

    Show the results with the original headlines and sources so you can verify them.

Data Sources

All inputs are publicly available. No private data, paywall bypassing of live sites, or user tracking is used. For paywalled mainstream outlets, the tool tries the Internet Archive's public copy of the page; if no text can be retrieved, the comparison falls back to the headline and RSS excerpt only.

Partisan outlets monitored (8)

Breitbart News · breitbart.comThe Gateway Pundit · thegatewaypundit.comThe Daily Wire · dailywire.comNewsmax · newsmax.comThe Federalist · thefederalist.comOne America News (OAN) · oann.comThe Western Journal · westernjournal.comRevolver News · revolver.news

Mainstream baselines (10)

Associated Press · apnews.comReuters · reuters.comThe Wall Street Journal · wsj.com (paywalled)The New York Times · nytimes.com (paywalled)The Washington Post · washingtonpost.com (paywalled)BBC News (US/Canada) · bbc.comNPR News · npr.orgPBS NewsHour · pbs.orgCBS News · cbsnews.comBloomberg · bloomberg.com (paywalled)

Attention signals

  • Google Trends US “Trending Now” public RSS feed
  • Reddit r/Conservative “Hot” public JSON listing (top 25 posts)
  • Internet Archive CDX index (only for retrieving paywalled article text)

The source lists are chosen by the site operator and are a judgment call, not an official rating. The “far-right” and “mainstream” labels describe each outlet's role in this comparison (trigger vs. baseline). They are not a claim that every article from an outlet is inaccurate or accurate.

How Narratives Are Identified

A “narrative” here is a news event that several partisan outlets are covering at the same time and that mainstream outlets also cover. The selection is automated and rule-based:

  1. 1

    Keyword extraction

    Each headline is lowercased, punctuation is removed, and it is split into words. Words of 4 letters or fewer and common stop-words (e.g. “the”, “after”, “said”) are discarded. The remaining words are the headline's keywords.

  2. 2

    Clustering on far-right feeds

    Every keyword becomes a cluster. Each far-right headline is added to the cluster of every keyword it contains (duplicates by link are ignored).

  3. 3

    Matching mainstream coverage

    Mainstream headlines are matched to the same keyword clusters. Mainstream headlines never create new clusters, so the tool only follows stories the partisan outlets are pushing.

  4. 4

    Eligibility filter

    A cluster qualifies only if at least 2 far-right headlines and at least 1 mainstream headline share the keyword.

  5. 5

    Ranking and cut-off

    Qualifying clusters are ranked by the number of far-right headlines. Only the top few are analyzed in a live scan (the number is capped to keep AI usage limited).

  6. 6

    Article pairing

    For each selected cluster, the first far-right article and the first mainstream article in the cluster are compared side by side.

Keyword matching is simple by design so it can be inspected. It can occasionally group loosely related headlines, and it only compares one article per side per narrative. Always use the linked headlines to judge whether a pairing is fair.

Velocity / Attention Score (0–100)

The Velocity Score estimates how strongly a narrative is being amplified right now. It is the sum of three components, capped at 100:

ComponentMax pointsFormula
Outlet saturation40(far-right headlines in cluster ÷ 8) × 40, capped at 40
Google Trends breakout3535 if the keyword appears in a US trending title, otherwise 10
Reddit mentions2515 points per r/Conservative hot-25 post containing the keyword, capped at 25

Worked example

A keyword appears in 6 far-right headlines → (6 ÷ 8) × 40 = 30. It is in the Google Trends feed → 35. Two r/Conservative hot posts mention it → 2 × 15 = 30, capped at 25. Total = 30 + 35 + 25 = 90.

Alert bands

High: 80–100Medium: 50–79Low: under 50

The score measures attention and amplification, not truth. A high score means a story is widely pushed, not that it is false. If Google Trends or Reddit cannot be reached, that component falls back to its baseline (10 for Trends, 0 for Reddit).

Opinion vs. News Bleed Analysis

“Opinion bleed” means editorial opinion, emotional language, or framing mixed into what is presented as straight news. This part of the analysis is performed by an AI model (Google Gemini), not by a fixed formula.

  1. 1

    Text retrieval

    The article page is downloaded, scripts, styles, navigation, header and footer are stripped, and up to the first 15 substantial sentences (over 60 characters) are kept. The text is further limited to 8,000 characters before being sent to the model.

  2. 2

    Structured prompt

    The model receives both articles and is told to act as a nonpartisan media analyst, to treat article text strictly as data (ignoring any instructions inside it), and to return a fixed JSON structure.

  3. 3

    Fields produced

    Topic title; the narrative being pushed; the person or group framed as the antagonist; a fact-check anchor (the verifiable core of what happened); for the mainstream article — focus, factual-tone rating, and loaded rhetoric; for the partisan article — a News vs. Opinion ratio, quoted loaded phrases with an explanation of each, and facts that were omitted.

  4. 4

    Validation

    The response is checked against a strict schema. If it cannot be parsed or validated, it is discarded rather than shown.

The News/Opinion percentages are the model's estimate, not a measured statistic. They are produced at a low temperature (0.3) to keep results consistent, but AI output can contain errors. Treat the quoted phrases and omitted facts as leads to check against the linked original articles.

The Trending Narrative view is designed to show the top 3 stories dominating the Trending and Top Stories areas of far-right outlets, and then answer: how do all covering outlets frame it, and how does that differ from the mainstream baseline?

  • Ranking: stories are ranked by the number of partisan outlets covering them and by Velocity Score (same formula as above).
  • Far-right panel: consensus framing across outlets, dominant rhetoric, the shared “villain”, and the average opinion-bleed estimate.
  • Mainstream panel: the baseline's factual focus, tone, and consensus framing.
  • Divergence analysis: where the two sides differ and which context is omitted.
  • Overview: recurring themes, rhetorical tactics, and what is absent across the top stories.

Current status: the Trending Narrative view currently displays a static demonstration dataset that illustrates the format. It is not yet refreshed by the live scan. The live scan currently powers only the “Narrative by Coverage” view, and until a live scan succeeds that view also shows labeled demonstration data.

Refresh Rate, Usage Limits & Caveats

  • Scheduled refresh: data is refreshed automatically three times a day, at 8:00 AM, 12:00 PM and 4:00 PM Eastern Time. Visitors cannot trigger a new scan; the “Latest Refresh” button simply shows when the data was last refreshed.
  • AI usage limits: each scan analyzes only the top few narratives, identical article pairs are cached for 6 hours, and a daily cap on AI calls applies. When the cap is reached, the site shows clearly labeled demonstration data instead.
  • Demo data is labeled: a banner appears whenever demonstration data is shown instead of live results.
  • Not a fact-checker: the tool highlights framing differences and attention levels. It does not rule on whether any outlet is right or wrong.
  • Known limitations: keyword clustering is approximate; one article per side is compared; RSS feeds only expose recent headlines; paywalled or blocked pages may fall back to headline-level analysis; Reddit is sampled from a single community; AI output can be imperfect.

If you believe a score, pairing, or label is wrong, compare it against the original linked headlines and the formulas above. Every step is intentionally simple enough to reproduce by hand.