2026-08-26
The invoice that wasn't
A two-page garage service sheet. Printed line items down the left, dense handwritten annotation down the right, photographed on a kitchen worktop.
We fed it in and read what came back. Then, over several attempts and several fixes, it said the total was 75, then 584.20, then 750.
All three were wrong, and not in the way we were watching for.
What actually happened
The inspection was started and then stopped. The full round was quoted at around 700 francs, judged too expensive, and declined. A hundred francs was paid for the work already done, and the sheet was taken home.
So the document reads as an invoice and is a quote that was refused. Everything below the printed table is recommended work that was never carried out. The one number that matters, 100, appears nowhere on that page. It's on a separate invoice that arrived three days later.
No amount of better reading recovers that. A stronger model would have parsed the columns more accurately and been wrong about the same thing, more confidently.
What that changed
We'd been treating extraction quality as the problem to solve. It isn't. The extraction only has to be good enough to file the paper in the right place and give you something to react to.
The record is what you say afterwards. "I stopped it and paid a hundred." Ten words, no schema, and worth more than every field on the page.
So the system was rebuilt around that. Reply to any filed document and what you say lands on the same page, and the router is told plainly that the user's account outranks anything it read.
The part that stayed hard
This is also the argument against putting any of it in a database, which we'd considered and rejected early. A total_amount column has no way to hold "the work didn't happen". It forces a number, and the number is a lie.
The corpus is loose markdown for exactly this reason. It holds ?. It holds "to confirm". It holds a sentence about walking out of a garage.
Ask it today what's still unresolved across everything and it finds fifty-five open questions by scanning for those marks. Not one of them could exist in a schema.