Quoted by the Job, Leaked by the Load
29 August 2026
Somewhere in your office is a quote that reads like this: "Haul and place structural fill, Route 9 site, $48,500." One number. The customer signed it, the job started, and from that day forward your billing office has exactly one thing to do when the job ends: send an invoice for $48,500.
Now find the takeoff behind that quote. Nobody pulled $48,500 out of the air. The estimator figured 320 loads at $145, added mobilization, rounded up for comfort, and compressed the whole calculation into a single number so the customer had something clean to sign. The load count didn't disappear. It moved from the page the customer sees to a page nobody looks at again.
On a lump sum job, "one ticket, one billable event" runs in a strange mode. Every ticket still prints, and every ticket becomes zero invoice lines, because the job itself became the line. That can be a fine trade. It stops being fine the day the real load count crosses the estimated one, because from that load forward you're hauling for free, and nothing in your process is built to notice.
The estimate is a term of the deal
Most quote letters don't actually promise unlimited hauling for a fixed price. Somewhere near the number there's usually a sentence like "based on an estimated 320 loads," and sometimes an explicit overage rate: additional loads at $145 upon notice. Your estimator put that sentence there on purpose. It's the pressure valve for the job where the borrow pit runs wet or the compaction spec eats more material than the plans showed.
That sentence is a billing rule with a threshold inside it. And in most operations it lives in a PDF in a job folder, where it fires only if a person remembers it exists and counts the tickets against it while the job is still open.
Count the people who could do that. The estimator wrote the clause, then moved to the next bid the week this one was signed. The dispatcher watches trucks, not quote letters. The billing clerk sees the job as a single line waiting for a completion date, and the tickets never cross that desk at all, because on a lump job the tickets aren't billing paper. They go in the folder for job costing, or payroll, or nothing. Everyone did their job. Nobody's job was the comparison.
What load 321 costs
Run it with round numbers. The Route 9 job was quoted at $48,500, built on 320 loads. A wet spring and a wetter borrow pit push the real count to 361. The scale house did its part, and 361 tickets exist. The overage clause says the extra 41 loads bill at $145, which is $5,945, about 12% of the job.
Whether you ever see that money depends on when the counting happens. Catch the overrun at load 321 and it's a routine heads-up: the fill is running past estimate, and loads from here bill at $145 per the clause on page two. The customer's PM has been watching the same weather you have, and signs. Catch it instead when the job closes six weeks later, and the same $5,945 is a surprise on a final invoice against a job the customer already booked at $48,500. They ask for backup. You send a stack of tickets they've never seen, the negotiation starts at zero and works upward, and most of these get shaved or traded away because the relationship is worth more than one overage.
The tickets are identical in both versions. The only thing that moved was the date somebody counted them.
flowchart TD
A["Estimator's takeoff: 320 loads x $145, plus mobilization"] --> B["Signed quote: $48,500 lump sum, overage at $145/load"]
B --> C["Job runs wet: 361 tickets print at the scale"]
C --> D{"Whose job is counting tickets against the 320?"}
D -- "nobody's" --> E["Job invoices at $48,500, 41 loads haul free"]
D -- "assigned to someone" --> F["Load 321 raises a flag the day it happens"]
F --> G["41 overage loads bill at $145: $5,945"]
Here's the claim plenty of owners will argue with: a lump sum job where nobody counts tickets against the estimate is uncapped work priced as fixed. The standard defense is the margin buffer, and the buffer is real. The estimator padded the number, and some overruns die quietly inside the pad. But look at what the pad was priced to absorb: fuel, a slow pit crew, the risks that never get their own clause. The 41-load overrun already has paper. A rate is written down for it, in a document both sides signed. Spending your buffer on an event the contract explicitly prices means paying for the same risk twice, once in the pad you quoted and once in the clause you never invoked.
Farms run the same failure under a different name. Custom silage cut on a handshake at a per-acre rate, hauling included as long as the pit is close. The close pit fills, the next one is nine miles out, and the extra miles ride along unbilled all season, because the original number never had a written load count or distance behind it that anyone could point to. Nobody wrote the extra miles down, so nobody billed them.
Give the estimate a counter
None of this requires abandoning lump sum quoting. Customers like one number, and one number wins bids. What has to change is where the estimate's load count lives: written as reference data the tickets can reach, this job, this lump amount, based on this many loads, overage at this rate.
Once it lives there, the rest is counting, and counting is what machines are for. Digitize the tickets as they print and each one lands against its job. A billing rule holds the cap and the overage rate, so load 321 raises its own flag the day it happens instead of at closeout. A ticket that arrives without a job number gets flagged too, because on a lump job an unassigned ticket is a load that will never count against anything. And when the job closes, the invoice total is assembled from lines that can each point at their paper: one lump line backed by 320 counted loads, plus 41 overage lines backed by tickets. The flag is Termco's job. The call to the customer's PM, made while the mud is still fresh, stays yours.
Your last three completed lump sum jobs already hold the answer to whether this is your leak. Each estimate has a load count in it somewhere, and each job folder has tickets. Where the two match, the quoting held. Where the tickets outnumber the estimate, the gap times your overage rate is work that hauled free. And where nobody can find the estimate's load count at all, the finding is worse: that quote had no threshold to defend, and every overrun since was priced at zero.
If you'd rather have a second set of eyes on it, send 10-20 sample tickets to hi@termco.ai, from a lump sum job if you have one, and we'll send back what we find within 48 hours.
More from the Termco blog.
August 28, 2026
A Voided Ticket Is Still a Ticket
Every void at the scale leaves two tickets describing one load. Unrecorded, the extra one bills twice or burns the audit that counts your tickets.
Read postAugust 27, 2026
No Charge, No Questions
Every operation needs a no-charge code. Unguarded, it turns into a discount nobody approves, on tickets no report totals and no customer reviews.
Read postAugust 26, 2026
When the Other Side Writes the Ticket
Broker tallies, destination weights, and elevator grain tickets are billing records your counterparty controls. That control has a price.
Read post