๐ŸงพFinOps invoice automation

Engage Media: monthly invoicing from 3 days to 30 minutes

We built Engage Media, a media-buying agency, a four-layer FinOps system that turned a manual, three-day monthly invoicing grind across 35 client workbooks into a 30-minute review, with a human approval gate that never auto-posts to accounting.

Every month, Engage Media's finance lead lost roughly three days to invoicing. The work meant opening 35 separate client workbooks, hand-calculating invoice line items in QuickBooks, and reconciling planned against actual spend by reading vendor PDFs one by one. We rebuilt the whole process as four connected layers, fixed the spreadsheets underneath so they were finally machine-readable, and put a human approval gate in front of accounting. The same monthly close now takes about 30 minutes of review instead of three days of manual work, and nothing posts to the books until a person signs off.

๐ŸŽฏThe problem

Three days a month lost to manual invoicing

Engage Media ran its monthly invoicing entirely by hand. The finance lead spent around three days every month extracting client order data, calculating invoice line items in QuickBooks, and reconciling planned versus actual spend from vendor PDFs. Across 35 active clients, that is a tax on the most senior finance time the agency has, repeated every single month.

The deeper problem was the data. The client workbooks were not machine-readable. Fees were hardcoded into cells, rows were laid out inconsistently from one client to the next, and duplicate tabs piled up over time. There was no clean structure a program could read, so every figure had to be found and re-keyed by a person. That is slow, and it is exactly the kind of repetitive, high-stakes work where a tired human makes the costly mistakes.

๐ŸงญThe approach

Fix the data first, then automate on top of it

There was no point automating on top of messy spreadsheets. So the first move was structural: make the workbooks machine-readable and lock down the things that drift over time. Only then does automation become safe to trust. We also drew a hard line that the system extracts and drafts, but never decides what gets billed. A human approves every invoice before anything reaches the accounting system. For a finance process, that trust boundary is the whole point.

โš™๏ธWhat we built

A four-layer FinOps system

Built on Google Sheets, Google Apps Script, n8n, BigQuery, Gemini, and Gmail. The AI extracts and reads documents, the routing and the maths stay deterministic, and a person signs off before anything posts.

1

Machine-readable export tab

Every client order workbook gets an auto-generated export tab in a consistent, structured shape. The messy, human-facing layout stays for the team, but a clean machine-readable version sits alongside it so the rest of the system has reliable data to read.

2

Master tracker across 35 clients

A Google Apps Script master tracker aggregates the export tabs from all 35 clients into one place. Instead of opening 35 files, finance has a single consolidated view of every client order, kept current automatically.

3

Weekly invoice drafts with approval gate

An n8n workflow runs weekly and generates invoice drafts from the tracker. It never auto-posts to accounting. Every draft stops at a human approval gate, so a person reviews and signs off before anything reaches the books.

4

Planned vs actual reconciliation

A reconciliation layer compares planned against actual spend, using BigQuery for the figures and Gemini to extract data from vendor PDFs, then flags variances for review. The exceptions surface themselves instead of hiding in a stack of documents.

๐Ÿ”งStructural fixes underneath

The plumbing that makes it reliable

  • A consistent tactic taxonomy so the same line of business is named the same way across every client
  • Billing-period locks so a closed month cannot be quietly edited after the fact
  • Append-only revision tracking so every change is recorded instead of overwritten
  • Stable backend IDs so records stay correctly linked even when the display layout changes
๐Ÿ“ˆThe outcome

The monthly close went from three days of manual extraction and reconciliation to about 30 minutes of review. The senior finance time that used to disappear into copy-paste each month is back, and because nothing posts without a human signing off, finance gained speed without giving up control.

3 days to 30 min
monthly invoice processing, with a human approval gate that never auto-posts to accounting
  • 35 active clients invoiced from one consolidated tracker instead of 35 separate workbooks
  • Machine-readable by design hardcoded fees, inconsistent rows, and duplicate tabs replaced with a clean structured export the system can read
  • Deterministic and auditable AI extracts and drafts, the maths and routing stay deterministic, and append-only revision tracking keeps a full history
  • Variances surfaced automatically planned vs actual reconciliation flags the exceptions instead of leaving them buried in vendor PDFs
"Bastien was great to work with. He is very responsive, supportive, and takes strong initiative throughout the project. He is amazing at what he does and the value he offers. He did strong research, stayed accountable, and handled his responsibilities very well. He also completed tasks before the deadline, which made the whole process smooth and reliable. I strongly recommend Bastien to any client looking for someone dependable, proactive, and professional."
Alyssa Phillips, Engage Media
Verified on Upwork
๐Ÿ“ฌContact

Want your monthly close to run like this?

Book a free audit. We will map where your finance process leaks time and show you exactly what to automate first, with a human check kept in the loop.

Book My Free Audit