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
- How, not what. We label rhetorical techniques and posting behaviours, never people, outlets or political viewpoints.
- 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.
- 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.
- Abstain instead of guessing. “Nothing found”, “insufficient data” and “not checked” are valid, expected outcomes on clean text.
- Two independent signal families must agree before calling any group of posts “likely coordinated”.
- Publish what we have measured. Precision, recall, false-positive rates on clean controls, and sample-size confidence intervals are published openly on Metrics.
- No single “propaganda score”. Readers get highlighted passages, plain-English explanations and verifiable receipts, never a black-box rating.
- Colours describe structure, not truth. Amber means “no source given in the text”, not “false”; green means “cites a source”, not “true”.
- Innocent explanations are always shown alongside flagged techniques and swarm clusters.
- 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:
- Segmentation & hints: text is split into paragraphs and numbered sentences while preserving exact Unicode offsets. Rule-based lexicons flag candidate cues (bandwagon openings, vague authorities, whataboutism, false dilemmas, unattributed statistics, attributions and balance markers) as non-binding pointers.
- 14 persuasion techniques + claim & balance markers: each sentence is checked for specific rhetorical patterns — Loaded language, Name-calling / labelling, Appeal to fear, Exaggeration or minimisation, Doubt casting / undermining, Causal oversimplification, Scapegoating, False dilemma, Whataboutism / deflection, Bandwagon, Questionable / fabricated authority, Emotional appeal, Thought-terminating cliché and Slogan — plus Unsupported claims (amber), Cited claims (green) and Balance markers (blue).
- Exact-text verification & overlap deduplication: deterministic code normalizes smart quotes, dashes and zero-width characters, verifies every proposed quote verbatim against its paragraph, strips duplicate overlapping generic labels when a more specific technique already covers the same phrase, and detects reported speech.
- Sensitivity gating: Strict (default, calibrated to keep clean-news false positives ≤ 5%) retains high-confidence detections; Balanced surfaces probable persuasive framing; Broad shows all verified detections including subtle rhetoric.
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
- Finite benchmark sample sizes: a 0% false-positive count on 21–25 paragraphs or 20 Swarm batches means zero false alarms occurred in our benchmark, not that false alarms are impossible in the wild — 95% confidence intervals are shown on Metrics to make that statistical uncertainty explicit.
- Subtle irony, dog-whistles & missing context: text analysis inspects rhetorical form inside the passage you provide; coded insider references, sarcasm, or selective omission of facts outside the article cannot be caught from wording alone.
- Heavy paraphrasing without burst/account cues: in Swarm mode, default detection uses character 5-gram MinHash (≥ 60% overlap) and requires a second independent signal before calling a wave “likely coordinated”. Heavily rewritten talking points posted hours apart by established accounts are intentionally downgraded to “worth watching” or missed rather than risking false accusations.
- Closed platforms & hard paywalls: login-walled platforms (X/Twitter, Facebook, Instagram, TikTok) are not scraped directly; use Swarm spread search on post text or dataset upload instead.