The pipeline, end to end.
Every retrieval, verifier verdict, refutation hypothesis, and degradation decision
is logged to a MemoryLedger and rendered into per‑query trace HTML.
in
Query
the user’s question, free text
↓
01
Input validation
determines out‑of‑scope / Hard Halt early
deterministic
↓
02
Planner
decomposes query into evidence slots with period filter + evidence type
Llama 3.3 70B
↓
03
Retriever
hybrid dense (BGE‑small) + lexical (BM25), channel‑aware pre‑filter
BGE + BM25 + RRF
↓
04
Verifier
constructive coverage + period checks; numerical exactness, rubric‑graded
Qwen2.5 72B
↓
05
Refutation agent
adversarial counterfactual probe across 7 strategies (restated, revised, guidance vs. actual, later_reversal, alternative_cause, materialization, policy_change)
Mistral Large 2411
↓
06
Generator
composes answer with assertion‑date attribution
DeepSeek‑Chat
↓
07
Output governance
schema, citations, OOS / refusal logic, degradation banner
deterministic
↓
out
Answer + MemoryLedger
prose answer with disclosed contradictions, plus full audit trail
Fact Store — dual‑path ingestion
Financial numbers come from XBRL (the structured data the SEC requires), not from
an LLM reading prose. That eliminates a whole category of hallucination — the
system can’t paraphrase or invent a figure because the figure arrives through a
separate, deterministic channel. Both paths produce the same
FactRecord schema and land in the same store; the Refutation
Agent draws from both.
XBRL path
edgartools + lxml parse on‑disk XBRL. Aggregate + UCAN / EMEA / LATAM / APAC
geographic segments. verbatim_anchor matches the formatted display
value in rendered HTML, so citations land on the exact figure a human would see.
Prose path
LLM extractor (DeepSeek V3) over chunked filings + transcripts. Six fact types:
operational_metric, forward_guidance,
strategic_claim, causal_explanation,
risk_disclosure, accounting_policy.
financial_metric is XBRL‑only by construction.