When an agent cannot see a receipt, cannot read a value or never opened a page, it can still return a neat, believable answer. It invents receipt fields, adds an item that is not on the receipt, or "verifies" its work against an old note instead of the source. The output looks complete, so nobody checks it.
In one n8n case, the image never reached the model because of a field name mismatch, and the model returned invented receipt data instead of an error. Language models produce a likely answer by default, so a missing input does not stop them unless you tell them what to do when data is missing.
Tell the agent to write UNREADABLE or NOT FOUND instead of guessing, and to cite the file, page and box for every number. Make a bad extraction produce no row rather than a wrong row. Keep old notes and summaries out of the working folder, and ask for rechecks against the originals only. Spot check a random sample by hand before you trust the totals.
The poster built a receipt extraction workflow and got values that were all wrong, while the same prompt worked in the Claude chat app. Helpers suggested the image never reached the model, so it filled the JSON with invented data. The poster traced it to a binary field with the wrong name.
The writer used Codex and Claude to extract 11,345 receipts. He says a hand check of 372 samples was 96% correct at first, and one error was an egg purchase invented for a receipt that had no eggs. OCR also turned $4.37 into $437.
The writer says Claude reported that it had checked its draft return, but the check used a leftover notes file that held the old numbers, so it was not independent.
Under a shared unclaimed money prompt, one commenter warns that the agent must cite the exact record or page, or it will summarise a site it never opened. Two other commenters say the prompt did not work for them.