JBALL CASE STUDIES

CASE STUDY / Automations

Invoice Agent — AI reads, code enforces, a human approves

FUGU GMBH · INTERNAL FINANCE · 2026

14fields read from a photo
29commits, first to last
16schema migrations

SITUATION

A boutique consultancy closing its month by hand: receipts in several currencies, one partner fronting expenses, a tax advisor waiting on clean batches, and client invoices typed from scratch every time.

APPROACH

One design decision runs through the whole app, and it is where the line sits. Vision reads the receipt and says how confident it is. Code owns every rule that has to be exact: an expense is reimbursed only inside a transfer group, sent to the advisor only inside an export batch, and reverting either cascades cleanly. A human approves before anything is final.

RESULT

The rules that used to live in one person's head now live in the schema, which is the part that survives that person leaving. Time savings are the team's own estimate and are labelled as such on the panel, never as a measurement.

  • Currency converted at the central-bank rate for the date on the receipt, not the date of upload.
  • A duplicate guard before upload and schema validation before anything reaches the database.
  • A second extractor takes over when the first one is down.
  • Branded invoices issued from the same view-model as the on-screen preview, mirrored to SharePoint and tracked to payment.

Next.js · React · Supabase · Gemini · LlamaParse · Microsoft Graph · Vercel

Thesis page: AI reads it, code enforces it, a human approves it.
How it works: receipt photo in, clean batch for the tax advisor out.
Results page comparing the old month-end close with the new one.
Appendix: the inbound expense pipeline in detail.
Appendix: outbound invoicing, safety guarantees and the stack.
OPEN THE FULL PDF· 3 pages · 3.1 MB(opens in a new tab)