Filing extraction answers “what does this document say?” Disclosure continuity answers a different, harder question: “did the reporting of this concept stay the same from one filing to the next — and if the series broke, why?” The two are routinely confused, and that confusion is what trips up an AI research agent.
Extraction operates on one filing at a time: it reads a value and reports it. Continuity is a property between filings — a concept that was reported one period can, the next period, move to a new XBRL tag, migrate across tag families, be replaced by a custom tag, drop out of structured data into prose, or genuinely end. To a raw feed all five look identical: the number became NULL. A perfect extractor still cannot tell you which of the five happened, because the answer isn't in the document — it's in the relationship between two documents.
Raw filing: 2024 purchase obligations = $45bn · 2025 = NULL
LLM: “The company stopped reporting purchase obligations.” — often wrong: the obligation
grew and moved to the notes.
For every apparent discontinuity, the engine attempts an evidence-gated resolution and returns one of three analyst-facing outcomes — collapsing a detailed internal classification into a decision:
| Outcome | The engine established… |
|---|---|
| IGNORE | the representation changed and continuity is proven (a verified successor tag). No economic change. |
| UNDERSTAND | the disclosure moved and it can say where (into prose, into a different concept). The item is still there. |
| READ | continuity cannot be established from structured data. A human must read the filing. |
A continuity engine is only useful if you can trust the cases it says to ignore. The design is built around refusing to guess:
| Fail-closed | when evidence is insufficient it returns INDETERMINATE with a specific reason, never a manufactured PASS. IFRS filers return taxonomy UNKNOWN rather than a false answer. |
| Evidence-tiered | every event carries the prior tag/value, the successor tag/value, both accessions, and which lineage and text tests ran. A resolution with no proof is not served as resolved. |
| Point-in-time | an as_of query returns exactly what the engine knew on that date — the property that makes any result reproducible and auditable after the fact. |
| Maintained | a versioned, adjudicated dataset whose accumulated lineage lets more future changes resolve automatically. The value compounds; it is not a one-off script. |
In the first full cycle, a similarity heuristic (root-substring matching of tag names) had resolved 41 segment-reporting discontinuities as harmless re-tags. A consistency invariant — a TAXONOMY_MIGRATION is only admissible with a proven successor — rejected them: they had been declared resolved without evidence. The rule was removed and those events were restored to the analyst review queue before any benchmark was measured.
That is the method in one episode: the system is built to expose its own overconfidence rather than launder it into a confident-looking answer. For a team fighting hallucinated certainty, refusing to guess is not a limitation — it is the feature being bought.
Disclosure Continuity is not a replacement for a fundamentals feed and not a filing reader. It is the thin layer between the filing and the analyst — or between the filing and the LLM — that answers a single question a normalized series cannot: did the reporting path behind this number change, and does it matter? Delivered as a REST API and a remote MCP tool; the consumer receives the answer and its evidence, never the underlying knowledge base.
← Disclosure Continuity overview · Worked example: SFBS vs CURLF →
Disclosure Continuity reports how companies report financial information through time. It is a data and intelligence service, not investment advice, and no result is a recommendation to buy or sell any security.