All work

ESG & sustainabilityIn productionEngineering

Per-field confidence and the claim-to-evidence path

Layout-aware parsing that keeps tables as tables, extraction that scores its own certainty so uncertain fields route to review, version-controlled framework mapping, and a knowledge graph paired with vector search because the real questions are comparative.

Challenge
Chunk-and-embed fails on institutional filings — flattening a table destroys what the number is a figure of, and retrieving the right phrase from the wrong year looks exactly like success.
Solution
Layout-aware parsing that preserves tables and footnotes, extraction that emits confidence as a routing signal, version-controlled framework mapping, and decomposed research over graph plus vector evidence.
Impact
The claim-to-evidence path is inspectable end to end, from a generated conclusion back to the parsed structure and the source page.
Status
In production. The weeks-to-hours result and any universal lineage claim still need confirmation.
Weeks → hours
ESG analysis cycle

Internal working result from the build. Not yet reconfirmed with the client on current document volumes.

Sent to review
Low-confidence extractions

Every extracted field carries a confidence score, and an uncertain one is flagged rather than entering a dashboard as accepted data. Demonstrable in the product.

To the page
Lineage on every metric

Each number links back to the source page it was read from. Verify coverage on your own corpus before treating lineage as universal.

Stack

Layout-aware OCR + NLPFramework mapping (SDG, GRI, CSRD)Knowledge graph + vector searchGoverned analytics, full lineage

Chunk-and-embed works on documents where the meaning is in the prose. It fails on institutional filings, where the meaning is in a table on page 340, qualified by a footnote, under a framework version stated in an annexure — and where retrieving the right phrase from the wrong year is a failure that looks exactly like success.

This is the engineering half of the case study. The business read — why lineage is the commercial argument — is a separate document.

The problem

Flattening destroys the evidence. A financial or ESG table converted to a text blob loses the row-column relationship that made a number mean something. The figure survives; what it is a figure of does not. Any pipeline that normalises to plain text before extraction has already lost the case.

Four things must all be right, and being wrong about any one produces a plausible answer. Entity, period, unit, framework. A retrieved passage stating a correct number for the wrong subsidiary, the wrong reporting year, in thousands rather than millions, or against a superseded framework version is not partially correct — it is wrong in a way no downstream reader can detect.

Framework mapping is a versioning problem, not a classification problem. GRI, CSRD, SDGs and internal KPI sets change. Two disclosures reporting the same underlying fact against different versions of the same framework have not reported the same number, and comparing them without tracking the mapping version silently produces a trend that does not exist.

And extraction confidence has to be a first-class output. A pipeline that returns values without certainty forces the analyst into a binary — trust everything or re-derive everything — and they will rationally choose the second, which is the work the system existed to remove.

  • Preserve document structure through parsing, so tables stay tables

  • Carry entity, period, unit and framework as hard metadata, never inferred at query time

  • Version framework mappings, because comparability depends on it

  • Score every extracted field, so uncertainty routes to review rather than into a dashboard

Architecture

A containerised pipeline from raw document to governed, queryable intelligence, with five layers that each preserve something the next one needs.

Layout-aware parsing takes each document through intake, OCR and language processing, producing structured chunks, sections, tables and footnotes with rich metadata. The design goal is machine-readability without removing the original structure — which is the opposite of the usual normalise-to-text instinct, and is the decision the rest of the system depends on.

ESG-aware extraction pulls entities, metrics, units, time periods, tables and narrative claims, each with a confidence score. That score is not a diagnostic. It is a routing signal: low-confidence fields are flagged for review rather than passed downstream as fact.

Framework mapping aligns KPIs and statements to SDGs, GRI, CSRD or a custom framework through classifiers plus rule logic, with traceable, version-controlled mappings. Rules and models together, because the rules encode the parts that are definitional and must not be probabilistic.

A knowledge graph plus vector search links entities and KPIs across reports. The graph carries the relationships — this entity, this period, this framework — and vector search carries the semantic reach. Either alone fails: pure vector search cannot express "the same subsidiary two years earlier," and pure graph traversal cannot find the narrative claim that was never structured.

A governed analytics layer serves it, over a versioned store with role-based access, audit logs and lineage to source pages.

Design decision: research questions are decomposed rather than retrieved once. The system selects sources, combines graph and vector evidence, constructs claims, checks them, and attaches provenance — because the questions analysts actually ask are comparative, and one retrieval cannot answer a comparison.

The business read: why confidence scoring is what made the output reusable

How it works

Parse without flattening

Intake, layout-aware OCR and language processing produce structured chunks, sections, tables and footnotes. Table structure and footnote attachment survive, because a metric detached from its qualifier is a liability.

Extract with confidence

Entities, metrics, units, periods, tables and narrative claims come out typed, each with a certainty score that determines whether it proceeds or routes to a human.

Map to frameworks, versioned

Classifiers and rules align each signal to the applicable framework, recording which mapping version was applied — so a later comparison can tell a real change from a definitional one.

Entities and KPIs join the knowledge graph; passages join the vector index. Cross-report and time-series questions become traversals rather than repeated reads.

Decompose the research question

A question is broken into parts, sources are selected per part, graph and vector evidence are combined, claims are constructed, checked against the existing knowledge base, and provenance is attached.

Serve under governance

Dashboards, heatmaps, benchmarks and anomaly views over a versioned store with role-based access and audit logging.

Control planes

Governance

Source authority, document metadata, reporting period, framework mapping, role-based access and lineage together determine what may be used as a fact. Low-confidence extraction cannot silently become accepted data. Generated analysis must retain citations and source-page links — an unsupported conclusion does not get presented as a finding, which is enforced at generation rather than reviewed afterwards.

Orchestration

Intake, OCR, extraction, mapping, graph construction, retrieval, analysis, fact-checking, presentation. The fact-checking step is the one most pipelines omit: a new filing is checked against what the knowledge base already holds, which is how a restatement or a contradiction surfaces as a flag instead of as two coexisting truths.

Observability

The observable unit is the claim-to-evidence path: document, page, parsed structure, extracted entity or metric, confidence, retrieval decision, framework mapping, generated conclusion.

Versioning is what makes this useful over time. Comparing two revisions answers the question that actually gets asked in an audit — did this number move because the company changed, because a document was restated, or because we changed how we read it?

When it fails

The dangerous failure is a confident extraction of a correct number under wrong metadata. Everything downstream passes: the value is real, the citation resolves, the page is right. It is simply attributed to the wrong entity, period, unit or framework version. This is why those four travel as hard metadata from parsing rather than being inferred at query time — inference at query time makes the error unrecoverable.

Scanned and irregular documents are the volume problem: annexures, rotated tables, footnotes that qualify a figure three pages away. The correct behaviour is low confidence and routing to review, not a best guess, and the tuning work is mostly about making sure low confidence actually fires rather than producing a confident wrong parse.

Framework version drift is the slow failure. A mapping that was right last year silently produces a broken comparison this year, which is why mappings are version-controlled and the version is recorded on the mapped fact rather than held globally.

Results

  • Analysis cycles from weeks to hours, replacing manual extraction and spreadsheet assembly at high document volume

  • Every answer citation-grounded and fact-checked against the existing knowledge base rather than generated from one retrieval

  • Low-confidence extraction routed to review, so uncertainty is visible instead of averaged into a dashboard

  • Claim-to-evidence path inspectable end to end, from generated conclusion back to the source page

Evidence

Directly demonstrable: grounded research with citations, fact-checking against the knowledge base, custom evaluations, the generated analytical interfaces, per-field confidence scoring, and human review of flagged extractions.

Internal working results requiring confirmation: the weeks-to-hours cycle-time change, and any universal statement about complete lineage. Lineage holds as designed; "every metric, always" is a stronger claim than we have measured, so we do not make it.

If you are building document intelligence over institutional filings, the two decisions that are expensive to reverse are whether you flatten structure during parsing, and whether extraction emits confidence. Both look like refinements you can add in a second pass. Neither is — the first destroys information you cannot recover, and the second changes what analysts are willing to build on top of.

How we classify these results, and what still needs confirming

Want the version of this built for you?

We can walk you through Institutional ESG Analytics Built an AI Filing Intelligence Platform live — the architecture, the failure modes, and what we would change for your constraints. Tell us what you are building and we will come back with a concrete plan.

Reply within 2h