Methodology

How Stoprop detects persuasion techniques, verifies factual claims, checks source provenance, and measures coordinated campaigns — along with the strict guardrails and limitations built into every step.

Core design principles

  1. How, not what. We label rhetorical techniques and posting behaviours, never people, outlets or political viewpoints.
  2. Deterministic verification. Every highlighted quote must appear character for character in your input text; character offsets are computed by deterministic code, never trusted from a model, and unverified quotes are discarded.
  3. Reported speech is not the author's manipulation. Words attributed to a specific named person, role or organisation (direct quotes and attributed indirect speech such as “X said that…” or “according to X…”) are marked as reported speech and excluded from author flags. Vague attributions like “experts say” do not count as reported speech.
  4. Abstain instead of guessing. “Nothing found”, “insufficient data” and “not checked” are valid, expected outcomes on clean text.
  5. Two independent signal families must agree before calling any group of posts “likely coordinated”.
  6. Publish what we have measured. Precision, recall, false-positive rates on clean controls, and sample-size confidence intervals are published openly on Metrics.
  7. No single “propaganda score”. Readers get highlighted passages, plain-English explanations and verifiable receipts, never a black-box rating.
  8. Colours describe structure, not truth. Amber means “no source given in the text”, not “false”; green means “cites a source”, not “true”.
  9. Innocent explanations are always shown alongside flagged techniques and swarm clusters.
  10. Privacy by default. No user accounts or reading history; “Don't store this text” skips caching completely, and Swarm batches stay in memory only briefly.

1. Text analysis & manipulation technique detection

When you paste an article or link on Analyze, Stoprop runs a 6-step pipeline:

2. Claim verification & Check a Source

Verify claims extracts up to 3 check-worthy factual assertions (prioritising attributed claims and statistics), searches live news and open-web indexes, reads independent reporting, verifies verbatim evidence quotes, and reports one of five transparent statuses: corroborated, contradicted, cited source not found, no independent reports found, or could not check — never “true” or “false”.

Check a source inspects domain registration age (RDAP + port-43 WHOIS fallback), earliest Wayback Machine archive, Certificate Transparency logs (crt.sh + CertSpotter), brand/homoglyph/TLD-swap impersonation against known outlets, declared satire and state-media context, live newsroom transparency links (About, Contact, Editorial policy, author bylines), independent fact-checker/watchdog mentions, and verbatim syndication across other websites.

Language coverage: English and other languages are accepted; quantitative accuracy benchmarks are currently measured on English, while other languages use the same conservative defaults (see Metrics).

Sensitivity levels are calibrated on the English development set: strict (the default) targets at most 5% of clean news paragraphs flagged with a technique, balanced at most 15%, and broad shows every label the AI proposes. The measured trade-off for each level, with confidence intervals, is on the Metrics page.

Swarm mode looks at a batch of posts, never a single one. Four independent signal families: text reuse (character 5-gram MinHash, ≥ 60% overlap, posts of at least 8 words, different accounts only), timing (60% of a group's posts in a window far tighter than the batch's normal pace, Poisson p < 0.001, at least 3 accounts), accounts (shared name pattern, creation dates within 7 days, single-purpose accounts) and amplification (the same non-mainstream link, hashtag or mention pushed by at least 5 accounts). “Likely coordinated” needs text reuse plus one other family; text reuse alone is “worth watching”. Shared news headlines, generic phrases, quoted statements and event hashtags lower the verdict and are shown as innocent explanations. Verdicts describe groups and behaviour, never individual people.

Where swarm posts come from. Paste a link, several links, or a claim/post into Swarm mode: thread and channel links are read through public interfaces — Reddit threads and subreddits (public Atom feeds), Telegram public channel web previews (t.me/s/…, including multi-channel batches to catch cross-channel campaigns), Bluesky's public AppView API, Mastodon server public APIs, Hacker News (Algolia API), and YouTube comments (Data API v3 when configured). Each run is limited to 2000 posts, 40 API requests and 25 seconds; collected posts stay in memory for 10 minutes and are never written to disk. Closed platforms that require login or paid developer access (X/Twitter, Facebook, Instagram, Threads, TikTok) are not scraped directly — instead, paste a post's text into Swarm mode to search where it spread, or use the advanced CSV/JSON dataset import.

Narrative & copy spread (integrated into Swarm mode) follows a message, not a messenger: paste an article link, a viral post, or a short claim/topic and Stoprop searches the open web & news, Reddit, Telegram public channels, Bluesky, and Hacker News, verifies matches, checks hosting domain ages and look-alike names, and runs the swarm detector on dated copies. It does no identity research, never looks up profiles, never links accounts across platforms, and stores nothing.

No AI-generated-text detection: such detectors are unreliable and known to be biased against non-native writers.

Known limitations & boundaries