Example build

Supplier invoice intake and matching

Invoices arrive, get extracted, matched against open purchase orders, and filed — with only the exceptions reaching a human.

This is a reference design we build from — one of a set that are not delivered client projects, and the figures are estimates rather than measured results.

Trigger

Email to invoices@, or a PDF dropped in a watched folder

Timeline

1 wk audit → 3 wks build → 2 wks supervised run

Stack

Cloud Run (Python) · Document AI / Azure Document Intelligence · Xero / QuickBooks / Business Central API · Postgres matching ledger · Slack or Teams for exceptions

Outcome

Every invoice arrives structured and pre-matched. Humans only touch exceptions.

The process today

Invoices arrive by email and post, get manually keyed into the accounting system, matched to purchase orders by eye, and filed by hand. The work is unskilled, unavoidable, and expands to fill month-end.

What the automation does

Extracts supplier, invoice number, date, line items, VAT and total. Matches against open purchase orders and delivery notes. Posts matched invoices to the accounting system as drafts — never as posted entries, because a human still owns the ledger. Routes mismatches and low-confidence extractions to an exception queue with the source page highlighted. Files the PDF under a deterministic naming scheme.

Where a human stays in the loop

Every exception, and every extraction below the confidence threshold. The threshold is agreed during the audit and tuned during the supervised run.

What you end up owning

The Cloud Run service and its infrastructure definitions, the matching rules, the runbook, and the extraction evaluation set — all in your own repository.