Political bias
range: -1.0 to +1.0Embedding similarity
Article text is embedded with a sentence-transformers model and compared by cosine similarity to three reference texts describing left, center, and right political discourse. The relative similarity to each reference produces a score: -1.0 (far left) to +1.0 (far right).
- ·Labels: left (≤ -0.4), leans_left (≤ -0.15), center (|score| < 0.15), leans_right (≥ 0.15), right (≥ 0.4).
- ·Articles fall back to "center" if the embedding model is unavailable.
- ·This measures how closely an article resembles polarized political discourse — not the truthfulness of its claims.
Framing
range: Tags, noneEmbedding similarity
The article embedding is compared against eight reference frames — economic, moral, national_security, health, legal, social, technology, environmental. Any frame with similarity above 0.3 is attached to the article.
- ·An article can carry multiple frames; a tax debate is often both "economic" and "legal".
- ·Frames describe how a story is framed, not the position the article takes on it.
Sentiment (emotion score)
range: -1.0 to +1.0English lexicon counts
A lexicon-based score: the number of positive words minus negative words, divided by the total matched words. Positive words include breakthrough, recovery, victory; negative words include crisis, collapse, threat.
- ·This is a word-frequency ratio, not a neural sentiment model. It is sensitive to wording and does not understand negation ("not great" is not handled).
- ·The lexicons are English-only; see the Language scope section below.
Factuality
range: 0.0 to 1.0Source score + language penalties
Starts from the source-level factuality rating (0-100, divided by 100, defaulting to 0.6), then applies penalties for hedging language (×1.5 per unit) and loaded language (×2.0 per unit), clamped to a floor of 0.1.
- ·Hedging (might, allegedly, reportedly) and loaded phrasing (unprecedented, catastrophic) lower the estimate.
- ·This is a heuristic estimate of the confidence language in the text — not an independent fact-check.
Source credibility
range: 0.0 to 1.0Source metadata
Reflects the source-level factuality rating divided by 100. Sources without a rating default to 0.5.
Loaded language
range: 0.0 to 1.0English lexicon counts
The ratio of words from a loaded/emotional vocabulary (disastrous, outrageous, heroic, crucial, and similar) to total words, capped at 1.0.
Hedging
range: 0.0 to 1.0English lexicon counts
The ratio of hedging terms to total words, capped at 1.0. Handles single words (might, seems, allegedly) and multi-word phrases (tends to, in some ways).
Semantic signals
range: 0 to 100Keyword matching
Articles are matched against 13 signal keyword groups — market-mover, crisis, regulation, earnings, geopolitics, technology, innovation, conflict, election, health, climate, merger, scandal.
- ·Score 40 when a keyword appears in the body, 60 when a keyword appears in the title, 80 when three or more keywords match, capped at 100.
- ·Signal matching is keyword-based; embeddings are used for bias and framing only.
Propaganda detection
range: 0.0 to 1.0 intensityKeyword patterns
Scans for nine propaganda techniques — name calling, glittering generalities, transfer, testimonial, plain folks, card stacking, bandwagon, fear, and loaded language. Intensity is total matches divided by 20, capped at 1.0.
Clickbait detection
range: 0.0 to 1.0Pattern + style rules
Scores title and body against a clickbait pattern list ("you won't believe", "this is why", "doctors hate"...). Patterns in the title add 0.15 each, in the body 0.08 each.
- ·Excessive capital letters (> 40% of the title) add 0.1, punctuation emphasis and ellipsis teasers add 0.05 each.
- ·An article is flagged is_clickbait when the score exceeds 0.3.
Spin detection
range: 0.0 to 1.0 spin indexKeyword patterns
Scans for six spin techniques — minimization, exaggeration, cherry picking, whataboutism, false balance, and weasel words. Spin index is total matches divided by 15, capped at 1.0.
- ·Slant labels: none (≤ 0.1), low (> 0.1), moderate (> 0.3), high (> 0.6).
Manipulation index
range: 0.0 to 1.0Composite
A weighted composite of propaganda, clickbait, and spin: propaganda intensity × 0.4, clickbait score × 0.3, spin index × 0.3.