AI finance learning center

Short, honest explainers of how AI reads and reasons about financial documents. Written for humans, not machines.

Everything here is about one narrow question: what actually happens when software reads a financial document. There is a lot of hand-waving in this space, so these explainers try to be specific about the mechanics, including the parts that do not work reliably.

Start here

Why "AI reads your statement" is three different things

When a tool says it uses AI to process a bank statement, it is usually describing some combination of three distinct steps, and they fail in completely different ways. Understanding which step is which makes it much easier to judge whether a given tool will work on your documents.

Step one is text recovery. A digitally generated PDF already contains text, positioned on a page. Getting it out is a parsing problem, not an AI problem, and a good parser is close to perfect at it. A scanned PDF contains an image of text, and recovering characters from pixels is optical character recognition. OCR quality depends almost entirely on the scan: resolution, contrast, skew, and whether the page was photographed at an angle. This is the single biggest predictor of whether a statement will process cleanly, and it is why a tool that works beautifully on one bank can fall apart on another.

Step two is structure recovery. Text on a page is not a table. Turning a page of positioned words back into rows of date, description, amount, and balance means inferring column boundaries that were never explicitly encoded. This is where most extraction errors actually come from. Descriptions that wrap onto a second line get read as separate transactions. A running balance column gets confused with the amount column, doubling your totals. Column positions shift between page one and page four because the header block is a different height. Multi-currency statements interleave two amount columns. None of these are exotic edge cases, they show up in ordinary statements from ordinary banks.

Step three is meaning. Deciding that "SQ *BLUE BOTTLE 4471" is a coffee purchase in a Meals category is genuinely a language problem, and it is the step where a language model earns its place. It is also the step where a model will confidently give you a wrong answer with no signal that it did. That is why Karchu applies deterministic rules first and only falls back to a model for descriptions nothing matched, and why every model-assigned category is marked as such so you can review it.

Why confidence scores matter more than accuracy claims

Any tool can quote a headline accuracy number. The number is close to meaningless on its own, because it depends entirely on the document mix it was measured against, and because a 98% accurate extraction of a 400-line statement still leaves eight wrong rows somewhere in the file with nothing pointing at them.

What is actually useful is knowing which specific rows the system was unsure about. A per-field confidence score turns an unbounded review job, checking all 400 rows, into a bounded one, checking the twelve the parser flagged. That is the difference between a tool you can trust with figures going to a lender and a tool you have to fully re-verify by hand, which defeats the purpose.

What none of this can do

Extraction cannot recover information the document never contained. If your statement shows a $4,200 transfer with the description "ONLINE TRANSFER", no model can tell you what it was for. If a page is missing from the PDF, nothing detects the gap except a balance check against the previous period. And no categorization system knows which of your meals were business meals. These stay human judgment calls, and any tool claiming otherwise is guessing.