CONTROLQORE FOR SERVICE BUSINESSES.
ControlQore for a service business is built on four costing units rather than a job list: cost per work order type, cost per technician per billable hour, cost to serve per agreement, and cost per truck per day. Cost codes come out of your service catalogue and price book, not out of a construction phase list, because there's no estimate to mirror. Warranty and callback work gets its own revenue stream so rework stops hiding inside the average. There's no WIP schedule in the construction sense, so an agreement margin schedule and an open work order report take its place.
The 48 trade ControlQore builds on this site all describe the same thing: cost codes laid out by construction phase, compared line by line against a bid, with a WIP schedule produced from cost-to-cost percentage complete. A service business has no bid, no phases, and no long contract earning revenue against a schedule of values, so three quarters of that structure has nothing to attach to. The discipline still holds and the layout doesn't. Every dollar still needs one home, the coding still has to be identical across every truck, and the person selling the work, the person doing it, and the person billing it still have to agree on where a cost belongs. What changes is that the reference point becomes your catalogue price and the average cost of your last hundred work orders of that type.
WHAT IT MEANS.
ControlQore for a service business is the same job costing and WIP platform configured against a service catalogue instead of a bid, so cost codes follow revenue stream and work order type, every work order carries the agreement it belongs to, and margin is readable per agreement, per technician, and per truck.
We won't publish a service business gross margin, net profit, or overhead benchmark, and you should be careful with anyone who offers you one. Labor rates, drive time, competitive density, and what a market will pay for a recurring agreement move more between two metros than they do between two trades, so a national service margin is wrong somewhere before it's printed. What ControlQore gives you instead is your own baseline out of your own book: your cost to serve by work order type, your loaded cost per technician per billable hour, and your own truck rate. That's less comfortable than an average and considerably more useful, because it's the only form of the number that was ever true where you operate.
Setup runs on the same 60 day clock as every other ControlQore build. The service specific work is the catalogue mapping, the agreement structure, the warranty stream, and the truck cost basis, and the historical migration comes back to the start of the last taxable year the same way it does for a project contractor. Most service clients are closing their first month inside ControlQore by day 45 and running the full report set by day 60.
WHY THE STANDARD BUILD DOES NOT FIT.
The Cost Codes Were Copied Off a Project Build
Most service companies that attempt costing inherit a structure designed for projects: seven categories, two or three levels deep, built to mirror an estimate line by line. There's no estimate in a service business to mirror, only a catalogue and a price book, so those borrowed codes produce buckets nobody in dispatch or the field can read. Technicians then code by guess, the same repair goes to four different places across four trucks, and every report built on top of it's unusable however carefully the month gets closed.
Work Orders Are Not Tied to Their Agreement
A recurring agreement bills on its own schedule and gets served by tickets that carry no reference back to it. The revenue posts to a contract line and the cost posts to demand service, so the two never meet on any report. That means per-agreement margin doesn't exist as a number anybody can pull, and the only way to answer whether an agreement makes money is to reconstruct it by memory. A portfolio of three hundred agreements can't be reconstructed by memory, which is why nobody does it and why the losing ones keep renewing.
Callbacks Get Coded Back to the Original Work
Rework posted to the same code as the first visit disappears into the rolling average and makes poor workmanship look like normal cost. The catalogue price then gets set off an average that already carries the callbacks inside it, so the price looks defensible and the margin keeps sliding. Warranty is usually the largest single piece of cost in a service business that nobody has ever been billed for and nobody has ever measured. Left uncoded, it's also the one piece of cost you could most easily reduce.
There Is No Capacity Unit in the Chart
A project contractor has an equipment cost basis, a crew rate, and a bid to compare both against. A service business has trucks, and in most of them nobody can say what one truck costs to put on the road for a day once fuel, maintenance, insurance, depreciation, and the technician's loaded rate are counted. Without that number, adding a truck is a feel decision and so is cutting one. It's also the only honest way to price after hours work, because an emergency call is a truck day sold at a premium and you can't price a premium off a cost you don't know.
WHAT IT LOOKS LIKE IN DOLLARS.
Take a truck with a technician at a loaded cost of $52 an hour across an 8 hour day, add $40 of fuel, and add $85 a day of maintenance, insurance, and depreciation. That truck costs about $541 to put on the road before a single ticket is closed. These are made up inputs rather than a claim about your business, but the arithmetic is the point: once the truck day has a cost, every dispatch decision, every after hours rate, and every fleet addition gets measured against it instead of argued about.
An example agreement bills $3,000 a year across 12 invoices and covers four scheduled visits at two hours each, which is eight hours of planned labor. Add six hours of callbacks coded to demand service and not to the agreement and the true cost to serve carries 14 hours plus drive time, parts, and truck. Whether that agreement earns anything depends entirely on your own loaded labor cost and your own truck rate, which is the reason no published average can answer it. ControlQore answers it by carrying cost to serve on each agreement individually.
ControlQore runs at $150 per $1M of revenue and it's included in the package. It never appears as a separate invoice line and it's never billed in addition to the SPM fee. A $6M service company is running the platform, the build, the migration, and the reporting inside one monthly number.
WHAT WE CONFIGURE INSTEAD.
Level 1 is the revenue stream: recurring agreements, demand service, replacement and install, and warranty or callback work. Level 2 is the work order type straight out of your price book, using the same words dispatch already uses, so a technician closing a ticket picks the code without thinking about accounting at all. Cost types cross both levels: labor, material, vehicle, subcontracted, and permit. The test we run before the first ticket gets coded is the same one we run on the project side, only pointed at a catalogue: the person selling the work, the person doing it, and the person billing it all have to agree on where a cost belongs.
SPM configures the agreement as an attribute on the work order in ControlQore, so a ticket served under a contract posts its labor, parts, and truck cost against that contract rather than into a general service bucket. That single configuration is what makes per-agreement margin exist at all. Once it's running, the agreement margin schedule builds itself out of closed tickets and you can read what each contract has billed against what it has cost to serve. Renewal pricing then gets set off measured cost instead of last year's price plus three percent.
Rework gets its own Level 1 stream in ControlQore, coded to the technician who performed the original work and to the work order type it came from. That turns warranty from a cost buried in the average into a number you can watch weekly by technician, by work order type, and by install crew. Most service businesses that fix one thing in the first 90 days fix this one, because it reduces cost without touching price, headcount, or the catalogue. It also settles training and pay conversations with data instead of impressions.
ControlQore carries each truck as its own cost center with fuel, maintenance, insurance, depreciation, and the assigned technician's loaded rate posting to it. Divide the monthly total by working days and you have the daily cost of capacity, which is the number that governs fleet size, route density, after hours pricing, and whether a third technician pays for himself. It works the way an equipment cost basis works on the project side, and it fills the role a crew rate fills in a bid. Any service company arguing about adding a truck is arguing about this number without having calculated it.
The agreement margin schedule lists every recurring contract with what it has billed to date, what it has cost to serve including callbacks, and how many scheduled visits remain in the term. The open work order report lists every ticket by state: dispatched, completed but not invoiced, and invoiced but not collected. Completed and not invoiced is the service equivalent of underbilling, and it's where the money sits in almost every service business we open up. One hybrid case survives: a change-out or install that runs more than a couple of weeks and carries a deposit gets built as a small job with its own code and a cost to complete.
Weekly, you read margin by work order type and by technician, the completed and not invoiced list, and the callback count. Monthly, with the books closed by the tenth, you read the agreement margin schedule and a P&L split by revenue stream rather than one blended service line. Quarterly, agreement pricing and the catalogue get reset off measured cost to serve. The 13 week cash forecast runs alongside all of it, because a service business collects in small pieces and a slow week of dispatch takes about six weeks to reach the bank account.
THE OUTPUTS, NAMED.
FLAT MONTHLY FEE. NO SURPRISES.
Three tiers, priced by your trailing twelve month revenue. Which one you're in depends on how much of the work you want off your desk. No hourly billing, no payroll, and no add-ons.
Pricing
| Last 12 months revenue | Monthly fee |
|---|---|
| Up to $1M | $1,900 to $2,900 |
| $1M to $3.5M | $2,600 to $3,900 |
| $3.5M to $6.5M | $3,800 to $5,700 |
| $6.5M to $9.5M | $5,100 to $7,100 |
| $9.5M to $12.5M | $6,100 to $8,500 |
| $12.5M to $15.5M | $7,400 to $11,000 |
| $15.5M to $18.5M | $9,400 to $13,500 |
| $18.5M+ | Quoted individually |
Range reflects the three tiers below. Which one you're in depends on how much of the work you want off your desk. No payroll. No hidden line items.
You stop guessing.
You get the CFO work. Job costing built against the way you estimate, a 13 week cash forecast, monthly WIP, and a meeting every month that ends in decisions rather than a report.
Your bookkeeper keeps doing the books.
You stop touching the books.
Everything in Core, and we run the bookkeeping and the controllership as well. Nobody in your office is answering coding questions or chasing a reconciliation at month end.
We do the books. No payroll.
Every job shows its margin while it's still running.
Everything in Executive, plus the job costing and WIP platform set up, loaded with your cost codes, and managed for you every month. You never have to learn it.
We do the job costing.
