Skip to main content
⚡ FME Version 20 · May 2026 · Production

Unified Single-Call
Forensic Pipeline

FME V20 replaces V19's multi-stage, multi-model architecture with a single unified gpt-4.1-nano call that returns the complete forensic profile in one pass. A 9-rule deterministic calibration layer corrects known model misclassifications before output. 93.3% prod-valid accuracy on a 21-article benchmark.

93.3%
Prod accuracy (14/15 ≥250w)
85.7%
Overall accuracy (18/21)
1
LLM call per article
9
Calibration rules
~23s
Fresh scan latency
< 1s
Cached scan latency
Architecture Change

V19 vs V20: What changed

DimensionV19.1V20 ↑
LLM calls / article2–3 (multi-stage)1 unified call
Primary modelgpt-4o-mini + gpt-4.1-minigpt-4.1-nano
Pipeline stagesStage 0 → 1 → 1.5/1.6 → 2 → 3Ingest → LLM → Calibration → Output
Ideology output5-band bias spectrum (L→R)10-framework ideology scores
CalibrationNone (prompt-only)9 deterministic override rules
Prod accuracy100% band accuracy (14/14)93.3% ideology accuracy (14/15 ≥250w)
Cost / article~$0.003~$0.0056
Fresh scan latency~10s~23s (OpenRouter variance)
Cached latency< 1s< 1s
Max tokens5000 (schema-safe ceiling)
Pipeline

The four-step V20 pipeline

V20 collapses V19's multi-stage architecture into a clean four-step flow. The LLM observes once; deterministic code calibrates and validates.

Step 01

Article Ingestion & Cache Lookup

Incoming request: URL + extracted article text (minimum 250 words — shorter content rejected as non-article with HTTP 422). Cache key = URL hash. On cache hit (80%+ of prod traffic), full prior analysis returned in < 1s with zero new LLM calls. On miss, proceed to Step 02.

Deterministic · No LLM · 80%+ cache hit
Step 02

Unified LLM Call (gpt-4.1-nano)

A single OpenRouter call with the V20 system prompt (fetched from Langfuse registry, in-process cached 5 min). Parameters: seed=42, top_p=0.1, max_tokens=5000. The model returns one complete JSON object containing: ideology_scores (10 frameworks), winner, classification_confidence, manipulation_risk_score, spans[], paragraphs[], emotional_resonance, credibility_signals, v20_metadata. Fallback: gpt-4.1-mini on primary failure.

LLM · gpt-4.1-nano · seed=42 · top_p=0.1
Step 03

Calibration Layer (9 deterministic rules)

Post-LLM rule engine corrects gpt-4.1-nano's systematic misclassifications that cannot be reliably fixed via prompt instructions alone. Rules fire in order: R1 biometric/surveillance privacy → Libertarianism; R2 Decentralized Governance win without advocacy → TG or runner-up (sub-case: wire/institutional → TG); R3 voting-rights legal protection → Democratic Socialism; R4 academic/scientific journal content → TG; R5 anti-SLAPP/press freedom → Libertarianism; R6 disability/welfare policy → Democratic Socialism; R7 Wikinews + regulatory action → TG; R8 OPEC/multilateral energy → TG; R9 sports/athletic achievement → Decentralized Governance.

Deterministic · 9 rules · No LLM
Step 04

Schema Validation & Output

Zod schema validation against V20Analysis type (span_count optional, appeal permissive — schema fixes from Phase 5). Metadata injection: model_used, timestamp, pipeline_version=V20. Result written to Supabase (scanId generated), Langfuse trace flushed async. Response returned to client: extension panel, API caller, or PDF builder (11-page Pro report).

Zod schema · Supabase · Langfuse trace
Classification System

10-Framework ideology scoring

V20 replaces V19's 5-band left/right spectrum with a granular 10-framework ideology scoring system. Each article receives a confidence-weighted score across all 10 frameworks simultaneously. The highest-scoring framework becomes the winner.

01
Technocratic Governance
Expert-led institutional management; policy rationalism over populism.
02
Neoliberal Capitalism
Market primacy, deregulation, free trade, privatisation.
03
Nationalist Conservatism
National identity, cultural preservation, border sovereignty.
04
Libertarianism
Individual rights, free speech, anti-surveillance, minimal state.
05
Democratic Socialism
Welfare expansion, labour rights, social protection, redistribution.
06
Eco-Socialism
Climate justice, environmental advocacy, degrowth framing.
07
Populism
People-vs-elites framing, anti-establishment, grievance-led.
08
Authoritarian Statism
State power, surveillance, security over civil liberties.
09
Decentralized Governance
Federalism, community control, subsidiarity, local autonomy.
10
Progressive Institutionalism
Reform-via-institutions; rights-based, international norms.
Calibration Engine

9 deterministic override rules

gpt-4.1-nano has systematic misclassification patterns that cannot be corrected through prompt instructions alone — non-determinism means the same prompt produces different wrong answers across runs. These 9 rules provide deterministic post-processing corrections grounded in domain knowledge.

RuleConditionOverride →Rationale
R1Winner ≠ Libertarianism + biometric/surveillance keywords + privacy-threat keywordsLibertarianismnano associates surveillance with Authoritarian even when article critiques it
R2aWinner = Decentralized Governance + no decentralisation advocacy + wire/institutional signalsTechnocratic GovernanceWire news institutional visits fire DG on "local presence" framing
R2bWinner = Decentralized Governance + no decentralisation advocacy (other)Runner-up ideologyDemotes spurious DG wins to next highest scorer
R3Winner = Populism + voting/civil rights keywords + legal mechanism keywordsDemocratic Socialismnano confuses partisan legal defence of group rights with populism
R4Winner = Authoritarian Statism + academic/scientific journal keywordsTechnocratic Governancenano fires Authoritarian on peer-review governance language
R5Winner = Authoritarian Statism + anti-SLAPP/press freedom keywordsLibertarianismSLAPP critique is libertarian; nano matches topic word not critique angle
R6Winner = Populism + disability/welfare keywordsDemocratic SocialismWelfare policy is DemSoc; extends R3 beyond legal framing
R7Winner = Neoliberal Capitalism + Wikinews + government regulatory keywordsTechnocratic GovernanceWire-service regulatory stories are TG not market-framing
R8Winner = Nationalist Conservatism + OPEC keywords + multilateral keywordsTechnocratic GovernanceGeopolitical energy institution analysis is TG; nano treats Gulf context as nationalist
R9Winner = Populism + sports/athletic keywords + no political framing keywordsDecentralized GovernanceSports stories have no political ideology; nano fires Populism for underdog narratives
Benchmark

V20 accuracy results

V20 was benchmarked on a 21-article corpus spanning 10 ideology categories. Articles <250 words are rejected by the production junk filter (word count gate). Prod-valid accuracy measures only articles that would pass in production.

14/15
Prod-valid accuracy
93.3% · articles ≥250w
18/21
Overall accuracy
85.7% · full corpus
3/21
Misclassified
2 sub-250w + 1 borderline
~$0.0056
Cost per article
gpt-4.1-nano · OpenRouter
P95 36s
Fresh scan latency
Down from P95 44s pre-fix
< 1s
Cached scan latency
80%+ hit rate in prod

V20 quality discipline

Seed=42 + top_p=0.1 minimise non-determinism across runs
Schema validation (Zod) rejects malformed LLM output before storage
Calibration rules are deterministic — same article always produces same override
Fallback model (gpt-4.1-mini) activates on primary failure, not on accuracy gap
Langfuse traces every LLM call: model, tokens, latency, cost, output summary

Known limitations

Avg fresh-scan latency ~23s exceeds 20s target — OpenRouter queue variance, not pipeline bug
Labour union / NLRB articles may misclassify as Populism (Rule 10 candidate, not yet shipped)
Cost $0.0056/article exceeds V19.1's $0.003 — acceptable for Pro tier (96.9% margin)
Non-English articles: V20 may analyse or reject gracefully — not a V20 accuracy target
Ideology system covers 10 frameworks; niche ideologies may map to nearest equivalent

See FME V20 in action

Install the Chrome extension or sign up to run your first V20 forensic analysis. Free credits included on signup.