
The Quote That Cost You Money: Why Field Service Jobs Bleed Margin After You Win Them
Most field service companies price jobs from memory and never check what those jobs actually cost. The gap between quoted and actual is where 6 to 11 points of margin disappear every year. Here is how to find it.
Share this article
Priya runs a commercial plumbing company in Saskatoon. Fourteen technicians, about $2.8M a year, mostly recurring maintenance with a healthy emergency call business on top.
She is good at quoting. Twenty-two years in the trade, and she can walk a mechanical room and give you a number before she gets back to the truck. Her close rate is 61%, which is excellent. Her team likes working for her. Her clients renew.
And in March, her accountant told her the business had made $71,000 less than the year before on 9% more revenue.
Priya's first assumption was labour cost. It wasn't. Wages were up 4%, in line with the plan. Materials were up 6%, also expected. Overhead was flat.
The problem was not any single line item. The problem was that Priya had no idea what any individual job actually cost. She knew what she quoted. She knew what she invoiced. She had never once compared either number to what the job consumed.
When her operations lead finally built that comparison for the previous eleven months, the picture was uncomfortable. Across 340 quoted jobs:
- 41% came in within 10% of the quoted cost
- 22% came in materially under, meaning she had overpriced and probably lost some bids she should have won
- 37% came in materially over, and the average overrun on those was 28%
The 37% were not random. They clustered. Same service type, same building age, same two clients, over and over. Priya had been systematically underpricing one specific category of work for six years and subsidising it with everything else.
This is the quiet margin problem in field service. Not bad pricing. Unmeasured pricing.
Why Quoting From Memory Stops Working
Experience Is a Great Estimator Until the Inputs Move
An experienced estimator carries a mental model built from thousands of jobs. That model is genuinely valuable, and it is usually more accurate than a spreadsheet built by someone who has never held a wrench.
The trouble is that a mental model calibrates slowly. It was built on the labour rates, drive times, material prices, and access conditions of the last several years. When three or four of those inputs shift at once, the model keeps producing confident numbers that are quietly wrong.
Between 2023 and 2026, most field service operators absorbed all of the following at the same time:
- Wage increases well above historical norms, especially for licensed trades
- Material and parts costs that moved unevenly, some categories up sharply and others flat
- Longer drive times in growing metro areas
- More documentation and compliance work per job than the same job required five years ago
- Client expectations for photo evidence, reporting, and portal updates that add real minutes to every visit
None of those changes announce themselves at the quoting stage. They show up in the actuals. And if nobody is looking at actuals, the estimator never gets the feedback that would recalibrate the model.
The Feedback Loop Is Missing, Not the Skill
This is the part worth sitting with. Priya's estimating instinct was not the failure. The failure was that her instinct had been running without feedback for six years.
An estimator who sees the quote-versus-actual variance on their own jobs every month gets sharper every month. An estimator who never sees it drifts, confidently, in whatever direction the market moves.
The fix is not to replace the experienced estimator with a formula. The fix is to close the loop.
Where the Money Actually Goes
When field service operators build their first honest job costing view, the overruns almost always concentrate in the same five places.
Leak #1: Unbilled Labour Minutes
The quote assumed three hours. The technician was on site for three hours and forty minutes, plus twenty-five minutes of documentation afterward, plus a fifteen-minute call with the client two days later about something that was arguably out of scope.
The invoice said three hours.
Individually, those minutes feel like the cost of doing business. Aggregated across 340 jobs a year, an average of fifty unbilled minutes per job at a $95 loaded hourly cost is roughly $27,000 of margin that never appears in any report.
Leak #2: Scope Creep With No Paper Trail
The client asked for one more thing while the technician was on site. The technician, being helpful, did it. Nobody wrote it down, nobody priced it, nobody told the office.
Helpful technicians are an asset. Undocumented scope changes are a liability. The two arrive in the same truck.
The operators who solve this do not tell technicians to stop being helpful. They give them a fifteen-second way to log an added task from their phone, and they make sure the technician sees that logging it is what gets it billed, not what gets them in trouble.
Leak #3: Materials That Left the Warehouse and Vanished
This is the overlap with the inventory blind spot most operators have. Materials consumed on a job are frequently not attributed to that job. They come off the shelf, go on the truck, get used, and never make it into the job cost.
The result is a job that looks 14% more profitable than it was, and a materials line at the company level that nobody can explain.
Leak #4: Travel Time Assumed at Best Case
Quotes are built on the drive time between the last job and this one under ideal conditions. Actual routing rarely cooperates. A quote that assumed twenty minutes of travel and got thirty-five is not a rounding error when it repeats four times a day across fourteen technicians.
Leak #5: Rework and Callbacks Attributed Nowhere
A callback on a job you already invoiced is pure cost. Most systems record it as a new job with its own number, which means the original job's profitability stays artificially intact and the callback shows up as low-margin work with no obvious parent.
Until callbacks are linked back to the originating job, first-time fix rate stays an abstraction and the true cost of the original quote stays hidden.
What Honest Job Costing Costs You
Here is the composite picture for a field service operator doing $2.8M with an assumed 14% gross margin on service work.
| Leak | Annual Impact | Share of Revenue |
|---|---|---|
| Unbilled labour minutes | $27,000 | 1.0% |
| Undocumented scope changes | $34,000 | 1.2% |
| Unattributed materials | $22,000 | 0.8% |
| Travel time underestimated | $19,000 | 0.7% |
| Callbacks and rework not linked | $31,000 | 1.1% |
| Systematic underpricing of one work category | $48,000 | 1.7% |
| **Total unmeasured margin loss** | **$181,000** | **6.5%** |
At a 14% gross margin, $181,000 of unmeasured loss is not a rounding error. It is close to half the margin on the entire service book.
And notice the largest single line: the systematic underpricing of one category. That one is not an operational leak at all. It is a pricing decision that was made once, years ago, and never revisited because nobody was measuring.
Building the Loop
The good news is that job costing is one of the few operational disciplines where the first version is cheap and the payback is fast. You do not need a new system. You need five data points per job and the discipline to compare them.
The five data points. Quoted labour hours, actual labour hours. Quoted material cost, actual material cost. And a single categorical field for the job type. That is enough to find your worst-priced category within one quarter.
The comparison cadence. Monthly, not quarterly. Quarterly is slow enough that the estimator's mental model has already drifted further before the feedback arrives. Monthly, in a thirty-minute meeting, with the estimator in the room.
The one rule that makes it work. The variance review is not a performance review. The moment the monthly job costing meeting becomes a search for someone to blame, the data quality collapses, because technicians and estimators start managing the numbers instead of reporting them. The meeting is about the pricing model, not the people.
Operators who get this wrong end up with worse data than they started with, which is genuinely a step backward. It is worth being deliberate about the framing before the first meeting, not after.
The NowKleen Version
NowKleen.ca hit a smaller version of Priya's problem. Their overruns were concentrated in one specific thing: initial deep-clean jobs on buildings they had never serviced before.
The pattern made sense once they saw it. A first-time deep clean on an unfamiliar building has genuinely unpredictable scope, and their quoting model treated it the same as a known building.
They changed three things. First-time jobs on new buildings got a separate service category with its own pricing model. Technicians got a one-tap way to log scope additions from the field. And every completed job carried its actual labour minutes and material consumption through to a monthly variance report.
Six months of results across their commercial book:
| Metric | Before | After |
|---|---|---|
| Jobs within 10% of quoted cost | 44% | 79% |
| Average overrun on jobs that exceeded quote | 26% | 11% |
| Scope additions captured and billed | 31% | 88% |
| Gross margin on commercial service work | 12.9% | 18.4% |
Five and a half margin points, and not one of them came from raising prices across the board. They came from pricing one category correctly and capturing work that was already being performed for free.
Start Here
You do not need a job costing system this quarter. You need to answer one question honestly, and the answer will tell you what to do next.
Move one: pick your last twenty completed jobs and reconstruct the actuals by hand. Quoted hours against actual hours, quoted materials against actual materials. Twenty jobs is a couple of hours of work and it is enough to see whether your variance is random noise or a pattern. If it is a pattern, you have just found real money.
Move two: add a service category field to every job and make it mandatory. You cannot find a mispriced category without a category. This is the single highest-leverage data change most field service operators can make, and it takes an afternoon.
Move three: put a thirty-minute monthly variance review on the calendar and invite whoever writes the quotes. Frame it as calibration, not correction. The estimator's instinct is your best asset. It just needs to see the scoreboard.
None of this requires you to stop quoting the way you quote. Priya still walks the mechanical room and gives a number from the truck. She is just doing it now with six years of variance data behind the instinct instead of six years of silence.
The jobs you win are supposed to make you money. Worth knowing which ones do.
*Basis: SynchronApp platform job costing and variance data, NowKleen.ca implementation results, and general field service operating benchmarks. Figures in the composite cost model are illustrative and scaled to a $2.8M operator. Content was rephrased for compliance with licensing restrictions.*


