FM-03 Reviewed · v2.0
Extract invoice fields into a spreadsheet that checks itself
Field extraction that returns empty instead of guessing, followed by arithmetic checks and a sampled human review.
You end with
One row per invoice with typed columns, a pass or fail flag from arithmetic checks, and a measured error rate.
- Level
- Practitioner
- Effort
- 55 min first time
- Works in
- Model API and scripts, full support
- No-code automation, full support
- Spreadsheet, partial support
- Chat assistant, partial support
- Steps
- 5 with checkpoints
Is it the right skill?
Use it when
- You receive many invoices in mixed layouts.
- Someone already reviews invoices and can review a sample instead.
Skip it when
- Payments would be released automatically from the extracted rows.
- You process only a handful of invoices a month; typing is faster.
Before you start
- Invoices as text or text-layer PDFs.
- A written list of the columns you need and their formats.
- Approval to send supplier documents to the tool you use.
Steps
Do not move on until the checkpoint holds.
-
Define columns and formats
Write a table of columns: supplier, invoice number, ISO date, currency code, subtotal, tax, total, line items. Totals are plain numbers.
Checkpoint Each column has a type and an example.
-
Extract with an empty-over-guess rule
Instruct the model to return an empty value for anything not printed on the invoice and never to calculate missing totals.
Checkpoint A test invoice with a missing tax line returns an empty tax field.
-
Run arithmetic checks
In the sheet, check that line items sum to the subtotal and that subtotal plus tax equals the total, to the cent. Flag dates that do not parse.
Checkpoint Failing rows are flagged, not silently corrected.
-
Review flagged rows and a random sample
A person reviews every flagged row and ten percent of passing rows, chosen at random.
Checkpoint The reviewer records each error they find.
-
Track the error rate
Divide errors found in the sample by rows sampled, per batch.
Checkpoint If the rate exceeds your agreed threshold, stop and fix the instructions before the next batch.
What can go wrong
- Accuracy A transposed digit in a total is plausible and invisible. The arithmetic checks and the sample exist for that reason.
- Privacy Invoices include bank details and names. Remove bank details before extraction if you do not need them.
- Cost API calls are billed per page. Estimate monthly volume before automating.
Worked example Demo
Fictional input, written for this demo entry. It shows the shape of the result, not a real case.
- Input
- Fictional invoice: Example Supplies Ltd, number 1042, dated 3 Feb 2026, subtotal 120.00, tax 24.00, total 144.00 (currency GBP).
- Result
- Example Supplies Ltd | 1042 | 2026-02-03 | GBP | 120.00 | 24.00 | 144.00 | check: pass
Revision history
| Version | Date | Change |
|---|---|---|
| v2.0 | Replaced model self-checking with spreadsheet arithmetic checks. | |
| v1.0 | First published. |