Invoice Automation
Every incoming invoice was typed into a shared spreadsheet by hand. Several hundred a month, across two companies.
- Year
- 2026
- Role
- Automation & tooling
- Stack
- Python, Claude, Microsoft Graph
The situation
The invoice list was the single source of truth for what had been paid, and it was maintained by hand. Typing errors were normal, the state of a supplier was a matter of scrolling, and the knowledge of how the list worked sat with one person.
What we built
Drop in a PDF and it is read out, assigned to the right company, and written into the existing shared spreadsheet. Not a replacement for it, which matters when the tax office and two other people are used to that file. Moving and asking happens in plain language: "123 is paid" moves a row between sheets. The people using it cannot program, so everything runs from a browser interface in German.
The result
The list stays the list, and it fills itself. Handover was a design goal from day one: settings in the interface, credentials in the keychain, and a handover package at the push of a button.
See it working
The pieces below run right here, on invented data. The full demo follows once it is up.
Invoices that enter themselves
A PDF goes in; amount, date and supplier come out. Crooked scans included.
- Supplier
- —
- Invoice no.
- —
- Date
- —
- Company
- —
- Net
- —
- VAT
- —
- Total
- —
- Due
- —
Say it instead of clicking it
"123 is paid" is enough. The row moves, once you confirm.
Pick one, or type your own.
Your spreadsheet fills itself
Your list stays where it is. It just fills itself.
- Supplier
- —
- Invoice no.
- —
- Date
- —
- Company
- —
- Net
- —
- VAT
- —
- Total
- —
- Due
- —