A shop raised prices by reading its own job sheets. What the paperwork showed
The owner suspected the small jobs were unprofitable. Two years of completed work orders said something more specific, and the fix was not a general increase.
- Written by
- Roy Castellano
- Published
- Filed under
- Corporate
- Length
- 1,133 words, about 5 minutes

The business was busy, the crew was fully booked, and the year-end figures showed a margin thinner than the previous year despite higher revenue. The owner's instinct was that prices were too low across the board and needed a general increase.
Before doing that, they read two years of completed work orders. What the paperwork showed was more specific than the instinct, and it produced a different fix.
What the job sheet actually recorded
Each completed job had a work order carrying: the quoted price, the date booked, the date completed, hours logged by each person, materials used with supplier costs, and any notes about return visits.
Every field turned out to matter, and one of them had never been looked at.
The first finding: hours were consistently under-recorded on small jobs
Large jobs had hours logged carefully because they were billed against them. Small fixed-price jobs had hours logged loosely or not at all, because nobody was billing against the number.
Reconstructing them from the crew's daily schedules produced a different picture. The recorded hours on small jobs were routinely lower than the elapsed time between the first and last entry on the sheet, and the gap was largest on jobs requiring a return visit.
This is where the margin was going, and it had been invisible because the field that would have shown it was the field nobody filled in.
The second finding: the travel was the job
The work orders carried addresses and completion dates. Sorting jobs by day showed how many separate sites the crew visited in a day.
On days with one large job, one site. On days with small jobs, three or four, and the drive between them was not on any sheet.
The quoted price for a small job assumed the work. It did not assume a third of a crew-hour of driving, a setup and a breakdown, and it certainly did not assume two of those in a day. Priced as work, the small jobs looked acceptable. Priced as a portion of a day, they did not.
The third finding: one category of job returned twice
The notes field, which was informal and inconsistent, still recorded return visits often enough to be countable.
One category of work had return visits at a materially higher rate than everything else. Reading the notes on those jobs showed a consistent pattern: the same component failing, from the same supplier, in the same conditions.
That was not a pricing problem at all. It was a materials problem, and it had been quietly funded out of margin for two years because nobody had aggregated the notes.
The cost of a return visit is worse than it looks on a sheet. It carries the travel again, the setup again, and a scheduling slot that could have held a paying job. Counted properly, a job that comes back once is often worse than no job at all, and the sheets showed a whole category doing it.
The fourth finding: the quotes had not moved with the supplier invoices
Materials costs were on the sheets with supplier prices. Comparing the first year against the second showed the direction clearly, and comparing them against the quoted prices showed that the quotes had not followed.
The quoting was being done from a price list built at some earlier point and revised occasionally by feel. Every job in the second year carried the difference.
What changed, and what deliberately did not
Not a general increase. Four specific changes.
- A minimum charge covering travel, setup and the first period on site. This addressed the small job problem directly, and it made the pricing honest about what a visit costs rather than pretending the work is the whole cost.
- Zone pricing by distance. Three bands, published, with the farthest band priced to reflect what a day looks like when a crew is out there.
- The failing component was replaced with a different specification. Higher unit cost, and the return visits stopped. This alone recovered more than the general increase would have.
- Quotes tied to current supplier pricing, with the price list reviewed quarterly and a written quote validity period so an old quote does not bind indefinitely.
Large jobs, which the owner had assumed were fine, turned out to be fine and were left alone. That is the part a general increase would have got wrong, by raising prices on the work that was already competitive and profitable.
How it was explained to customers
The changes were announced in a short letter to the existing customer list, six weeks before they took effect. Three points, no apology and no economic commentary.
- There is now a minimum charge for a visit, and here is what it is.
- Travel outside the immediate area is priced in three bands, and here is the map.
- Existing quotes are honored to their stated expiry date.
Two customers asked about the minimum. Both booked anyway, and one of them combined two small jobs into a single visit, which is precisely the behavior the minimum was designed to encourage. Nobody left over it.
The reason it went smoothly is that each change corresponded to a cost the customer could see. A minimum charge for a visit is intuitive to anyone who has ever waited for a van. A general increase, by contrast, invites the question of why, and the only honest answer would have been that the shop did not know where the money was going.
What made the reading possible
The records were unglamorous and mostly complete. Four fields did the work: hours, materials with costs, address, and completion date. Everything above came out of those.
The one gap, hours on fixed-price jobs, was the gap that mattered most, and closing it was a policy change rather than a system purchase: hours get logged on every job whether or not anyone bills against them.
The method, generalized
- Pull two years of completed jobs into one sheet, one row per job.
- Add columns for quoted price, recorded hours, materials cost and any return visit.
- Calculate margin per job and margin per crew hour. The second is the one that reorders everything.
- Sort by margin per crew hour and read the bottom quartile. The pattern is usually a category, not a customer.
- Read the notes on anything that came back, and count the causes.
- Change the specific thing the data names, and leave the rest alone.
An afternoon of sorting produced a set of changes that the owner could explain to customers, because each one corresponded to a real cost. That is also why the increases held: a minimum charge that covers a visit is a fact about the business, and customers accept facts more readily than they accept a general rise applied to everything.