SERVICE BUSINESS ยท JOB COSTING SOFTWARE

CONTROLQORE FOR SERVICE BUSINESSES.

QUICK ANSWER

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.

BY JOSH LUEBKERPublished 2026-08-08Updated 2026-08-08
THE DEFINITION

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.

WHAT WE SEE IN SERVICE BUSINESSES

WHY THE STANDARD BUILD DOES NOT FIT.

01

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.

02

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.

03

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.

04

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.

THE ARITHMETIC

WHAT IT LOOKS LIKE IN DOLLARS.

The truck day, worked as an illustration

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.

How an agreement disappears, illustrated

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.

What ControlQore costs, and what it's not

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.

HOW SPM BUILDS IT

WHAT WE CONFIGURE INSTEAD.

Cost Codes Built From the Service Catalogue

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.

Every Work Order Carries Its Agreement

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.

Warranty and Callback as Their Own Cost Stream

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.

Cost Per Truck Per Day as the Capacity Unit

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.

Two Reports Replace the WIP Schedule

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.

A Cadence That Catches It Inside the Month

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.

WHAT YOU GET

THE OUTPUTS, NAMED.

Cost codes built from your service catalogue and price book, not from a construction phase list
Agreement as a work order attribute, so per-agreement margin exists
Warranty and callback carried as their own revenue stream, by technician
Cost per work order type, as a rolling average off closed tickets
Cost per technician per billable hour, loaded with burden and truck
Cost per truck per day, including fuel, maintenance, insurance, and depreciation
The agreement margin schedule and the open work order report, in place of a WIP
A P&L split by revenue stream: agreements, demand service, replacement and install, warranty
Historical migration back to the start of the last taxable year, live in 60 days
$10.7M+
Client AR Recovered Since 2023
48
Active Trade Specializations
60 DAYS
Average Onboarding Time
PRICING

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 revenueMonthly 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.

Core

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.

Executive

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.

Strategic

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.

COMMON QUESTIONS

FREQUENTLY ASKED.

The cost code build comes off your service catalogue instead of an estimate. Level 1 is the revenue stream, meaning agreements, demand service, replacement and install, and warranty, and Level 2 is the work order type out of your own price book. On top of that we configure the agreement as an attribute on every work order so per-agreement margin exists, carry each truck as its own cost center, and give callbacks their own stream. The result is four costing units rather than a job list: work order type, technician, agreement, and truck.
An agreement margin schedule and an open work order report. WIP exists to answer two questions on a long contract: whether the revenue you recognized is supported by the work completed, and whether you billed what you earned. A service business answers the first with cost to serve per agreement against what that agreement has billed, and the second with the completed but not invoiced list. If a ticket sits completed and uninvoiced for three weeks, that's underbilling, and it costs you the same thing it costs a subcontractor.
ControlQore runs at $150 per $1M of revenue and it comes included in the SPM package. There's no separate software invoice and nothing billed on top of the monthly number. The build, the catalogue mapping, the migration back to the start of the last taxable year, and the monthly reporting are all inside the same engagement, so there are no scope gaps between the platform and the people running it.
We won't give you a figure, and anyone who does is guessing on your behalf. Service margins move too much by region to publish a benchmark anybody should price against, because labor rates, drive time, competitive density, and what a market will pay for a recurring agreement vary more between two metros than between two trades. What ControlQore does is establish your own baseline out of your own book inside the first 60 days, then measure every month against it. Your own trend is a better target than somebody else's average.
Three tiers, and which one you are in depends on how much of the work you want off your desk. Core is where you stop guessing: job costing built against the way you estimate, a 13 week cash forecast, monthly WIP, and a monthly meeting that ends in decisions, while your bookkeeper keeps doing the books. Executive is where you stop touching the books, because we run the bookkeeping and the controllership as well. Strategic is where every job shows its margin while it is still running, because the job costing and WIP platform is set up and managed for you. No payroll. No scope gaps.
WHAT THIS TIES INTO
Josh Luebker, The Construction CFO
Josh Luebker
FRACTIONAL CFO · THE CONSTRUCTION CFO

Former commercial construction project manager and master electrician. Managed 150+ projects worth more than $2.1B combined, with individual jobs from $50,000 to $300M, including data centers, military bases, hospitals, and high-rises. Now fractional CFO for commercial subcontractors doing $1M to $12M through Sulphur Prairie Management.About Josh  | LinkedIn

WHICH OF YOUR AGREEMENTS ARE YOU PAYING TO KEEP?

Bring your agreement list, your price book, and your last twelve months. We will map the catalogue into a cost code structure on the call and work out cost to serve on the ten biggest agreements you have.

You don't hire a CFO because it's safe, you do it because the real risk isn't having one.
Book a 20 minute diagnostic

20 minutes. No sales pressure. We will tell you exactly what's broken before we talk about anything else.

OR START WITH THE WORKBOOKS. NO CALL NEEDED.