Demo

Supplier invoices read on your own PC

Invoices dropped in a folder are read by an AI model running on a PC in the office. Plain code checks every line and total, a person approves or fixes each one, and the approved ones export to a CSV for Xero's bill import. Nothing is sent to the cloud.

Every supplier, invoice and figure here is made up, and each invoice says so in its footer. The model runs, the checks and both recordings are real.

46-second recording, no sound. Reading the inbox took 2.1 minutes while the screen was recorded, shown 10 times faster. Invoice 09 is held for the supplier, the other 9 are approved, and the CSV is exported.

How it works

The results

All 10 invoices read for real and every field compared with what the invoice says, in code. On one PC with an RTX 3080.

ModelRight first timeWrong fieldsSeconds each
qwen2.5-coder:7b (the default)10 of 1004.2 (2.5 to 6.5); the first took 62 s, loading the model
gemma3:4b (smaller, on purpose)4 of 10175.1; the first took 36 s
InvoiceSupplier and what it testsDefault modelStatusSmaller model
01Kade Office Supply B.V.
One VAT rate
all rightready2 wrong, check
02Oostkade Catering
Two VAT rates, 9% and 21%
all rightready3 wrong, check
03Wendrich Druck GmbH
German layout, 19% and 7%
all rightready0 wrong, ready
04Lumen Cloud Services Ltd
EU reverse charge, 0% VAT
all rightready0 wrong, ready
05Atelier Moreau SARL
French layout, totals above the lines
all rightready1 wrong, check
06Kade Office Supply B.V.
Eight lines
all rightready7 wrong, check
07Noordwind Transport B.V.
A discount line
all rightready2 wrong, check
08Wendrich Druck GmbH
A credit note
all rightready0 wrong, ready
09Oostkade Catering
The supplier's total is 10.00 too high
all rightcheck2 wrong, check
10Baltic Pine Furniture UAB
Large amounts
all rightready0 wrong, ready

Invoice 09 is the supplier's own mistake. Both models flagged it: "net + VAT is 242.80, total says 252.80".

When the model gets it wrong

The smaller model misread 6 invoices, mostly copying a line's unit price as its amount. Every one failed a check, so none could be approved until a person fixed it.

InvoiceWhat it misreadThe check that caught it
01line 1 amount: read 24.5, invoice has 98.0 (and 1 more)a line's amount is not quantity times unit price (2 lines)
02line 1 amount: read 16.5, invoice has 297.0 (and 2 more)a line's amount is not quantity times unit price (3 lines)
05net total: read 3444.0, invoice has 2870.0lines add up to 2870.00, net total says 3444.00
06line 1 amount: read 18.95, invoice has 37.9 (and 6 more)a line's amount is not quantity times unit price (7 lines)
07line 1 amount: read 145.0, invoice has 435.0 (and 1 more)a line's amount is not quantity times unit price (2 lines)
09line 1 amount: read 12.75, invoice has 153.0 (and 1 more)a line's amount is not quantity times unit price (2 lines)
80-second recording, no sound, the smaller model. Reading took 1.1 minutes, shown 6 times faster. The reviewer fixes 15 fields on 5 invoices to what the PDF prints, the checks pass again, and those 5 are approved.

Fair warning

What a real setup can add