Accuracy
No converter should ask to be trusted on adjectives. This page publishes the measurements that gate every release: what was tested, how, and the current numbers. If a layout ever falls below threshold, it is disabled rather than averaged away.
Methodology
Each certified layout is benchmarked through the complete production pipeline. A seeded generator produces statement models with known-true rows. Those models are rendered as real PDF files with a text layer, exactly the way the adapters will meet them. The same extraction, parsing, and reconciliation code that runs in your browser then reads the bytes back, and every recovered row is compared with the truth.
The corpus covers single and multi-page statements up to 250 transactions, month and year boundaries, leap days, overdrawn balances, zero balances, wrapped multi-line descriptions, and same-day rows without repeated dates. On top of the clean corpus, corrupted variants are generated with a running balance shifted by one penny, a row silently removed, a debit swapped into the credit column, and an unreadable date. A corrupted fixture that comes out labelled verified counts as a false verified, and the release gate requires that number to stay at zero.
Fixture provenance: the corpus is currently synthetic, built to replicate each bank’s digital statement structure. Synthetic fixtures exercise the arithmetic and layout logic thoroughly, but they are not scans of real statements, and we say so here rather than imply otherwise. As authorised, sanitised real-world fixtures are contributed, they will be added to the corpus and these numbers will be regenerated.
Thresholds for enabling a layout: at least 98% exact row recall, 99.5% date and amount accuracy, 99.5% direction accuracy, zero false verified results, at least 85% of fixtures completing without manual repair, and a median under five seconds for a 25-page statement.
Current results
Generated 16 July 2026 by the certification harness. Regenerated on every parser change; a regression blocks the release.
Barclaysbarclays-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 17 ms
- Completed without repair
- 100.00%
Lloydslloyds-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 16 ms
- Completed without repair
- 100.00%
NatWestnatwest-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 36 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 10 ms
- Completed without repair
- 100.00%
Monzomonzo-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 13 ms
- Completed without repair
- 100.00%
Starlingstarling-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 16 ms
- Completed without repair
- 100.00%
Revolutrevolut-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 12 ms
- Completed without repair
- 100.00%
first directfirst-direct-personal-classic · parser v1.0.0
Verified- Exact row recall
- 100.00%
- Amount accuracy
- 100.00%
- Date accuracy
- 100.00%
- Direction accuracy
- 100.00%
- Reconciliation rate
- 100.00%
- False verified
- 0 of 48 corrupted
- Clean fixtures
- 24
- Rows compared
- 2,112
- Median parse, large statements
- 14 ms
- Completed without repair
- 100.00%
What these numbers do not claim
- They do not cover scanned statements, password-protected files, or layout variants outside the certified list; those are refused at the door.
- They do not promise that a bank will never change its statement format. When one does, the fingerprint stops matching, the document is reported as unsupported, and the adapter is re-certified before the bank page returns.
- They are not a substitute for your own review. Flagged fields exist precisely because some values need a human decision.
The harness source lives in the repository as scripts/benchmark.ts. See also supported banks and how documents are handled.