Skip to content
← Case Studies

Messy financial statements into a model an analyst can trust

Investment diligenceData extraction & AI2026

An investment team was reading financial statements by hand. Every target company sent something different: PDFs exported from accounting software, spreadsheets with merged header rows, statements in thousands next to statements in millions, expenses positive in one file and negative in the next.

The analysis itself was not the bottleneck. Getting from a stack of inconsistent documents to numbers anyone was willing to rely on was the bottleneck, and it happened again from scratch for every deal.

Consistent, Accurate Extraction is the key

The obvious approach is to point a model at the documents and ask for the numbers. That produces something that looks right and cannot be trusted, because nothing checks it. Most LLMs will happily return a balance sheet where assets do not equal liabilities plus equity.

What the team needed was consistent, trustworthy extraction coupled with accounting checks a human analyst performs without thinking about it, applied transparently, with every failure highlighted instead of hidden.

The pipeline

It treats the documents as untrusted input, and refuses to output a model it cannot reconcile.

  1. Normalization. Detect units, currency, and sign convention. Identify the fiscal year end, classify each period as annual, quarterly, or monthly, and label actual against forecast. Map raw line-item labels onto a canonical chart of accounts, recording every mapping decision so it can be reviewed.

  2. Reconciliation. Revenue less COGS against reported gross profit. Assets against liabilities plus equity. Beginning and ending cash tied through the cash flow statement. Net income flowing into equity, depreciation consistent across statements. Anything that does not match is flagged, not silently corrected.

  3. Reasonableness checks. Abnormal margins, likely unit errors, and sudden swings that usually indicate an extraction fault instead of a genuine event. This is the layer that catches the mistakes reconciliation alone cannot see.

  4. Statement rebuild. Clean income statement, balance sheet, and cash flow written out in one canonical format, regardless of how the source was structured.

  5. Core calculations. Working capital and its movement, EBITDA and adjusted EBITDA, capex and depreciation, unlevered free cash flow, and the margin, leverage, and liquidity ratios built on top of them.

  6. Model output. Historicals written into the team's existing model layout, plus a structured export for anything downstream.

The work runs as a tool server the agent calls, with the heavier numerical steps executing in a sandboxed container that has all necessary frameworks and packages available and no network access. The agent decides what to run and reads the results; it does not do any arithmetic itself.

The design decision that mattered
  • The pipeline reports what it could not reconcile, instead of producing a clean-looking model with an error buried in it
  • Every label mapping is recorded, so an analyst can audit how a number was derived
  • A partial answer with flags is more useful than a complete answer no one checked

Where it landed

Analysts stopped rebuilding the same extraction and normalization work for every deal, and started their review from a reconciled model with the questionable lines already marked. The checks that used to depend on whoever was doing the reading now run the same way every time.

If you are handling documents that need to become trustworthy numbers, a 30-minute call is usually enough to tell whether this approach fits your case.