A natural-language invoicing agent that cut billing prep by 95% and accelerated cash collection without buying new software.
PM and builder, working directly with AP/AR team
Solo build, deployed into a finance ops workflow
There was no dedicated invoicing platform, so each invoice was hand-built in Google Sheets. Every client had different formatting, naming conventions, banking details, and billing preferences, and those rules lived in informal notes. Urgent invoice requests interrupted other work and slowed cash collection.
I mapped the client billing rules before touching any automation. Each client's preferences, naming conventions, and banking details needed to be a real source of truth, not informal notes. I structured these as versioned YAML configs in GitHub, then built a Claude Code agent that takes a natural-language request, loads the right client profile, applies numbering and filename rules, populates banking and line items in the existing Sheets template, and prompts only when something is genuinely missing. New decisions are written back to the config so each invoice is marginally faster than the last.
Invoice prep dropped from 10 minutes to seconds. Account managers generate invoices without spreadsheet expertise, billing is consistent across all clients, and faster delivery tightened cash collection timing. The decision not to purchase a dedicated billing platform saved recurring SaaS spend while achieving the same outcome.
More details
- Natural-language request from any team member, for example: 'Invoice ACME University for April's funding, $24,500, add a memo for spring semester wrap-up'
- Historical invoice examples for tone and structure
- Google Sheets invoice template
- Per-client YAML config with banking, naming, and formatting rules
- Identify the client and load saved preferences
- Apply invoice numbering and filename conventions
- Populate banking, addresses, and billing contacts from config
- Structure line items per client formatting rules
- Prompt only for information that is genuinely missing, not for details already stored in config
- Write confirmed new decisions back to the YAML config so the next invoice requires less input
- Completed invoice in Google Sheets
- PDF-ready export with the right filename and number
- Updated client configuration committed back to GitHub