Invoice Scheduler
Small-business bookkeeping usually means opening invoice PDFs one at a time and copying the supplier, ABN, invoice number, date and GST into a spreadsheet by hand. It's slow and easy to get wrong, and invoice data isn't something you necessarily want to send to a cloud API just to skip some typing. Invoice Scheduler takes a folder of invoices, reads each one with a vision model running locally through Ollama, and turns the pile into structured data. No cloud OCR and no cloud LLM calls.
The model does the reading, but I don't trust it blindly. Every invoice goes through plain arithmetic checks: the ABN checksum, whether the GST is 1/11 of the total, and whether the dates make sense. These catch most of the digits a vision model misreads. Invoices that pass are approved. Anything flagged goes to a review pile, so a person only has to check the flagged invoices instead of re-typing every field.
Everything goes into SQLite, and each run rebuilds an Excel workbook from it. The workbook has an Invoices sheet with the flagged rows highlighted and the reason shown, plus a Monthly Summary whose GST column is meant to line up with the GST credits on a BAS. Each file is hashed, so re-running on the same folder never processes a file twice. The same invoice saved under a different filename is caught by matching ABN plus invoice number. If one corrupt PDF fails, the rest of the batch still runs.
It runs on gemma3:12b by default, and qwen2.5vl:7b works as a lighter drop-in. The real tradeoff between models is how accurately they read numbers. The known limits: correcting a flagged invoice still has to be done directly in the database, and it handles one invoice per file with no line items. I'll keep it updated as I need it myself, and I'll support it longer term if people ask on GitHub.
Following along, or got a similar problem you want automated and written up honestly? Send the brief.
Send the brief →