Worked scenario · not a named client

Eight trucks, one Tuesday in July.

A Phoenix HVAC and plumbing shop doing about $2.4M a year. Two trades, six field techs, an install lead and a comfort advisor. Everything below is modelled on the shops we've scoped, using their own numbers — but it's a composite, not a customer testimonial.

Revenue

$2.4M

Trailing twelve months

Trucks

8

Two trades, one board

Office

2

One owner, one dispatcher

Plan members

614

Before: 388

Season

Apr–Sep

70% of the year's calls

Before

Nothing was broken. That was the problem.

The shop ran on a whiteboard, a shared calendar, a spreadsheet for memberships, and a dispatcher who knew where everyone was because she'd been doing it for eleven years. It worked. It had always worked.

What it couldn't do was tell anyone what it was costing. There's no line on a P&L called calls that went to voicemail, or the truck that drove past the job on the way to the other job, or the fifteen-year system nobody flagged before it died in August. Money leaves through gaps that don't have names.

31%

of July inbound calls hit voicemail. On the worst three days it was over half. The dispatcher was on the phone explaining where a tech was.

9.1 hrs

of driving a day across eight trucks. Assignment was "who's free," so a plumber in Tempe took a Glendale call while another sat twelve minutes away.

388

members, with 71 owed visits nobody had scheduled. The spreadsheet tracked who paid. It didn't track what was still owed to them.

The one that actually hurt

Fourteen months of repair history sat in the system with no way to ask it a question. Six houses had systems over fifteen years old with three or more repair visits each — the exact profile that fails in a heat wave and gets replaced by whoever answers the phone that afternoon.

Four of those six were replaced that summer. The shop got one of them.

The rollout

Ninety days, and nobody stopped working.

The shop kept dispatching the way it always had for the first two weeks. Nothing was switched off until the replacement was already running beside it.

Week 1

Everything imported, nothing changed

Customers, properties, equipment with serials and install dates, membership list, price book. The equipment registry was the slow part — install dates came off nameplate photos and old invoices. It was also the part that paid for itself first.

Week 2

Intake agent goes on, answering second

It only picked up when the office didn't. In the first week it caught 34 calls that would have gone to voicemail, triaged them, and booked 26. That number alone ended the internal argument about whether this was worth doing.

Weeks 3–4

Dispatch board replaces the whiteboard

Both trades on one grid. The dispatcher kept the whiteboard up for a fortnight and stopped drawing on it after nine days. The recommendation engine was the thing that won her over — not because it was right every time, but because it explained itself.

Weeks 5–8

Agreements, both engines

388 members migrated with their owed-visit backlog reconstructed from paid dates. Six commercial route contracts moved onto standing slots. The backlog filler started putting owed tune-ups into soft afternoons in week six.

Weeks 9–12

Techs, customers, money

Field app to all eight trucks, portal live, invoicing and deposits switched over, collections agent working the aging list. The last thing to go on was the replacement opportunity list — deliberately, so the comfort advisor had capacity to work it.

After ninety days

What moved, and by how much.

Same eight trucks. Same six techs. No new hires.

MeasureBeforeAfter 90 daysChange
Calls answered69%98%+29 pts
Booked jobs per week142169+19%
Driving hours per day9.17.4−1.7 hrs
Jobs per truck per day4.25.0+0.8
First-time fix84%91%+7 pts
Callback rate5.8%2.4%−3.4 pts
Plan members388614+58%
Recurring revenue / month$6,180$11,239+82%
Owed visits unscheduled718−89%
Days sales outstanding3821−17 days
Average ticket$437$486+11%
Annualised revenue effect+$418,000+17%

Revenue effect is annualised from the ninety-day run rate and excludes the replacement pipeline below, which hadn't closed yet.

Where it came from

Five levers, and one of them did most of the work.

Worth being specific about this, because the instinct is to credit the flashiest part. It wasn't the flashiest part.

Calls that stopped going to voicemail

34 caught a month, 26 booked, average ticket $486. This is the whole game in season.

+$151,600

Driving hours converted to billable hours

1.7 hours a day across eight trucks — roughly one extra job a day at shop average.

+$118,300

Membership growth and the owed-visit backlog

226 new members, 63 owed visits delivered. Each visit is also a conversation about a fifteen-year system.

+$74,400

First-time fix and fewer callbacks

Parts on the truck because the right tech was sent. A callback costs a full slot and earns nothing.

+$52,900
$

Collections and deposits

DSO from 38 days to 21. Not new revenue — but it's the difference between making payroll comfortably and not.

+$20,800

And the one still in the pipe

The replacement list found $78,500 sitting in six houses the shop already serviced — systems past fifteen years with repeat repair history. Three closed in the first ninety days. The other three are scheduled for pre-season conversations in March, which is the point: those conversations now happen before August instead of during it.

Honest part

What it didn't fix.

Three things worth saying plainly, because every one of them came up.

The equipment registry is real work

Two weeks of someone photographing nameplates and digging install dates out of old invoices. There's no shortcut and it can't be automated away. It's also the single highest-value data in the system — the replacement list doesn't exist without it.

One tech never came around

A twenty-two year plumber who had run his own day for two decades. He used the field app for timers and payment and ignored the rest. The shop decided that was fine. Not every adoption problem is a training problem.

The intake agent isn't a receptionist

It's excellent at triage, booking and after-hours. It is not the right answer for a distressed customer on the third callback. Those get routed to a human immediately, and the rule for when that happens took three rounds to get right.

Nothing here fixes pricing

The price book made margins visible, which is not the same as improving them. The shop raised two categories after seeing real margin on the screen — that was their decision, not the software's.

"The whiteboard worked fine at four trucks. At eight it started costing me a job a day and I couldn't see where it was going."

This is the sentence, in some form, that starts almost every conversation we have. Somewhere between five and ten trucks the way you've always done it quietly stops working — and the software built for twenty trucks wants six months and a consultant before it helps.

Run your own numbers.

Open the demo — it's the real product with this Tuesday loaded into it. Or book twenty minutes and we'll put your shop's name on the board while you watch.

Open the live demo Back to ServiceCore360