Volca Newsletter
Audit Your Job Costing Process
how a $50M shop fixed its AP in 4 weeks
Ask a controller where job costing breaks down and you’ll rarely hear “the techs” or “the software.” You’ll hear AP.
The contractor in this story is a $50M shop on ServiceTitan doing service, residential new construction, and commercial work. Their AP team handles 100+ vendor invoices a day. The executive leading their AP overhaul put the problem simply:
“If there’s not a valid PO… or there’s mismatches on dollar amounts on POs, that really grinds us to a halt.”
An invoice that can’t be entered ends up on a spreadsheet, and the job P&L doesn’t see that cost. PMs end up making decisions on numbers that are already wrong. Here are three lessons from this shop’s first four weeks of fixing it.
Where things go wrong
The “dummy” PO. A PO created just to tie a purchase to a job, at $0 or with one “misc” line. The itemized invoice can’t be applied, so it goes back to purchasing and waits.
The mega-PO. One PO per project with a line per delivery. Once five invoices land on it, nobody can tell which invoice belongs to which line.
Partial shipments. On larger orders, vendors ship in pieces about 8 out of 10 times. A $10,000 quote becomes a $3,000 invoice now and more later.
Acknowledgment ≠ invoice. The team estimated the final invoice differs from the sales acknowledgment roughly 60/40. Freight appears, tax splits into local and state lines, quantities change.
Credits with no trail. A credit memo with no reference to the original invoice or PO means a call to the vendor just to find the job. Sometimes the material gets refunded but the tax doesn’t.
One of their wins was a process change, not software: one PO per vendor order, with the PO number on every order. With that in place, “unknown” invoices fell from ~70% to under 20% in a few weeks.
Takeaway: Write down how your shop handles each of these today. If the answer is “one person just knows,” that’s your risk.
How this effects your margin
A couple of months of invoice analysis turned up: Your pricebook might be drifting…
A heat pump billed at nearly 3× the usual price, about $2,100 over, with no explanation.
One supply house charging ~28% more than another for the same item.
That came from just 31% of the period’s spend, because that’s all the invoice data on hand. You can’t baseline what you don’t collect.
The shop also turned off automatic pricebook updates for now. Vendors describe the same part differently, so auto-creating items would fill the pricebook with duplicates. They’re fixing PO discipline first and pricing second.
Takeaway: Invoices show what you actually pay; the pricebook shows what you think you pay. Compare them monthly.
How they fixed it with Volca
The shop partnered with Volca, whose AI AP agent works directly inside ServiceTitan.
Invoices flow in automatically. Vendor emails are forwarded to a Volca inbox, and bulk PDFs are split into individual invoices.
Every invoice gets matched. Volca matches each invoice to the right job and PO, fills in actual line items, and splits out tax and freight.
Exceptions go to a review queue. Missing POs, price spikes, credits, and duplicates are flagged instead of quietly posting.
Weekly working sessions. Volca’s team met with purchasing and AP every week, turning edge cases like partial shipments and stock POs into rules.
Even small fixes counted. Once vendor invoice numbers started auto-filling at receiving instead of being retyped, the AP team called it “a game-changer for us in accounting.”
Quick self-audit for your next ops meeting
How many invoices are unentered right now, and what’s their dollar total?
What share of last month’s POs were $0 or a single “misc” line?
Can one person in your shop both create a PO and approve the bill?
When did you last check invoice prices against pricebook cost on your top 20 items?
If your top vendor raised a price 15% tomorrow, how long until someone noticed?
If any of these made you think twice, you’re in good company. This fast-growing $50M shop started in the same place, and got a lot better in a month by deciding who owns what and then holding to it.
