From Duct-Tape to Production-Grade Finance Processing in 3 Days: The Expense Automation We Had to Build Ourselves
In the last week, our inbox has staged a coup.
Picture this: we're an AI adoption consultancy. We teach Fortune-500 boards how to deploy Copilot, Gemini, and Claude like it's 2025 (because it is). We run 120-day implementation programs that make grown CFOs cry with joy. Our client portal tracks adoption metrics, surfaces knowledge, and basically runs itself.
And yet our expense process was still a human forwarding PDFs to an accounting inbox, then copy-pasting into the accounting system like it's 2009. We had some automations, sure, but they were the very tools we teach clients to move beyond:
- a Zap that emailed us when an invoice arrived
- a Make scenario that screamed "URGENT" in Slack
- a Power Automate flow that well, it tried
We built these ourselves after the big SaaS finance CRMs rolled out their "now with AI" updates and let us down. We tried them first. Hard.
- "Just upload the PDF!" → manual review queue, $50/user/month
- "AI-powered extraction!" → works only if the vendor is in their whitelist and the PDF is born digital
- "Connect your email!" → still routes through US servers, still needs human approval for GST, still can't handle a blurry phone photo
Those shiny AI features? They were the automation equivalent of putting a Band-Aid on a bullet wound while wearing a tuxedo.
We mapped workflows until our mice begged for mercy. Every solution (no-code or enterprise-grade) promised "connect anything in minutes!" and delivered "cry in the shower after three hours."
Then we asked the question that changed everything:
If we're the AI experts, why are we still paying anyone to half-solve our problems?
Spoiler: we stopped. This is the (slightly embarrassing, fully honest) story of what happened next.
We Started With Make and Zapier (Because Of Course We Did)
We're not amateurs. We knew the playbook.
Outlook → new email with PDF → OpenAI Vision → parse fields → GST magic (divide by 11, because Australia) → POST to accounting API.
Two days of diagramming. It felt like responsible adulthood.
Day three felt like getting dumped via Post-it note.
- GST logic needed JavaScript that broke on every second invoice
- Multi-tenant security? Duplicate everything per client. Fun.
- OAuth tokens for Outlook and accounting? Manual babysitting.
- Partial extractions (vendor yes, amount no)? Shrug emoji.
- Every spam PDF with a cat meme? Still costs a task.
We weren't mad about paying $200-$400/month. We were mad about building our business logic on a platform that treats complexity like a personal insult.
The Pivot: "Fine, We'll Do It Ourselves"
One coffee-fueled rant later, I opened Claude Sonnet 4 and typed:
"Build me production-grade, multi-tenant expense automation. Handle screenshots, scanned PDFs, foreign currency, GST-inclusive/exclusive, duplicates, Australian privacy compliance. Use our existing backend stack. Go."
I expected a toy. I got a senior dev who works for coffee and existential validation.
I was skeptical. I'm the AI consultant, not the engineer. But we already had our client portal humming along (the one that tracks adoption, stores knowledge, runs programs). Same database. Same security. Same "don't go to jail" compliance.
My rule: if this takes more than a day of actual work it saves, we bail.
What Actually Happened (The Blooper Reel)
Day 1: Database & Email Polling Schema: expense_processing_log, expense_automation_config, row-level security (Org A never sees Org B's lunch receipts). Cron job polls Outlook every 5 minutes.
First bug: we processed every email we were CC'd on, including the one from Dave in marketing titled "URGENT: free pizza." One SQL filter. Fixed forever. In Make? Paid tier + router spaghetti.
Day 2: The PDF Extraction Disaster Movie Three strikes, one home run.
- OpenAI Vision on raw PDF binary → AI invented a vendor called "GarbledMcPDFface" and charged us $47,302 for "cloud services."
- Proper text extraction first → worked for clean PDFs, choked on scans and screenshots (hi, every Australian supplier ever).
- Google Gemini 2.0 Flash → suddenly reads WhatsApp forwards, blurry phone photos, and that one invoice printed on a napkin.
GST logic? Moved from breakable JavaScript to a prompt that just works. Same for currency conversion and deduping.
Day 3: Accounting Integration & Adulting OAuth for Microsoft and accounting system. Encrypted tokens. Auto-refresh. Retries. Audit trails. Dashboard in our portal.
The money shot: I forwarded a client's terrible iPhone photo of an invoice (no PDF, just vibes). Gemini nailed vendor, amount, GST, date, currency. Created the expense. Logged everything.
Total actual work: 3 days.
What We Learned (Without the Hindsight Goggles)
Technical wins
- AI-assisted dev = "senior engineer who explains like a patient friend"
- Prototype-to-production gap? Gone. First version shipped with security, logging, retries, multi-tenancy.
- Custom logic (GST, duplicates, tokens) = one prompt, not one week.
Business wins
- Cost: $200-$400/month (projected) → ~$15/month (actual)
- Data stays in our Australian-hosted backend. Privacy compliance = "yes please."
- Swap AI backends in one line. No vendor handcuffs.
When no-code (or big SaaS CRMs) still win (we're not monsters):
- Slack ping when Jira ticket moves
- Non-technical teams, zero maintenance
- True prototypes
- Compliance isn't a thing
But when you need real logic, real control, or real security (and the big finance platforms still say "no")? Build it. It's cheaper. It's faster. It's not even hard anymore.
The Reality Check (Yes, We're Still Humbled)
We help enterprises ship AI like it's their job (because it is). We train boards. We measure ROI. We're supposed to be the experts.
This expense system reminded us: the tools are easy now. The thinking isn't.
Anyone can ask Claude to "build invoice thing." Few will remember:
- Row-level security
- Data residency
- Partial failure recovery
- GST edge cases
- Token revocation
That's the gap we close for clients. Not "here's a prompt." But "here's the system."
So What Now?
Our expense system is live. It eats hundreds of invoices a month. Saves hours. Costs pennies.
More importantly: it's proof.
When a client asks, "Should we buy off-the-shelf or build custom?" we don't theorize.
We say: 3 days. One human. One AI. Production-grade. Compliant. Cheaper than your Zapier or your enterprise finance CRM bill.
The future isn't everyone coding.
It's everyone thinking clearly enough to direct the code.
That's what we teach now. Not just "use AI." Build with it. When it makes sense.
Your turn:
What half-baked process are you still nursing with no-code duct tape (or a $10k/year SaaS tool that still needs a human) because "building it properly would take too long"?
Drop it in the comments. We might just build it together.