Invoice data extraction
Accounts payable for mid-size distributors · Interactive prototype with sample data, solo
Updated
Before
Clerks typed each invoice into the accounting system by hand.
After
Each invoice becomes structured fields beside its PDF, and the clerk checks only the unsure ones.
- 1Person:Clerk
Uploads a PDF, or a supplier system sends it to the API.
- 2Software:Extraction service
Reads the document and returns the fields with a confidence for each.
- 3Software:Service
Checks that totals add up and required fields exist.
- 4Person:Clerk
Reviews flagged fields next to the PDF preview.
Software:ServiceExports the approved data to the accounting system.
Always on
- Totals are checked before anything is exported.
- Every document keeps its history and its extracted fields.
- API keys are managed in settings and can be revoked.
Problem
Invoices arrive as PDFs in many layouts. Someone reads each one and retypes it, which is slow and error-prone.
Diagnosis
Layout rules per supplier never end. The reader has to understand the document, and flag what it is unsure about.
Options I weighed
How are invoice fields read?
Chosen
A language model with a fixed output schema
Handles new layouts with no setup. Cost: a model call for every invoice.
Rejected
Template rules per supplier
Breaks on every new supplier and every layout change.
What happens when the AI is unsure?
Chosen
Unsure fields go to a person for review
The clerk checks only the flagged fields, next to the PDF.
Rejected
Post everything automatically
One wrong amount in the ledger costs more than a quick check.
Solution
Upload a PDF, see extracted fields with a confidence each beside the document, review the flagged ones and export. An API page documents the single call. Built on sample invoices.
- Interface
- Next.js
- React
- Tailwind CSS
- Radix UI
- Recharts
- Delivery
- Vitest
- Cloudflare Pages