Heating · air · plumbing · electrical
Four trades, two states,
38 technicians — and one
screen the owner trusts.
$6.68 million of completed work so far this year, across 8,551 jobs and 77,132 phone calls. Every figure in this deck was read out of the live system we built and run for them.
Built and run by
· 2026 Inc. Power Partner · (480) 741-8081
Completed revenue · 1 January to 28 October 2026
$6,677,630
on job-attached invoices,
counted on the day the job was finished
8,551
jobs completed
across four trades and two states
July was the biggest month at $1,086,567 — three and a half times January.
2026 year to date
The year in four numbers
$6.68M
Completed revenue
Across 8,551 completed jobs, January through 28 October.
$14.74
Revenue per ad dollar
May to October: $4.79M completed against $325,201 of paid media.
$96
Cost per new customer
Paid media in October: 488 new customers on $46,780. Local Services: $93.
8,308
Calls graded
Out of 77,132 logged — transcribed, scored against a rubric, coachable.
Read from production, 28 October 2026. Revenue is pre-tax, counted on completion.
Where the money comes from
Four trades, measured separately
| Work type | Jobs | Revenue |
|---|---|---|
| HVAC installation | 471 | $4,778,301 |
| Plumbing | 1,380 | $880,719 |
| HVAC service | 3,335 | $695,262 |
| Electrical | 319 | $183,003 |
| HVAC maintenance | 2,392 | $134,767 |
Oklahoma and Texas, side by side
Oklahoma 7,276 jobs and $5.95M; Texas 1,275 jobs and $729K. Two markets, one set of numbers, each filterable on its own.
Ad spend splits the same way
Every campaign is read for the trade it sells, so plumbing spend is held against plumbing revenue instead of one blended pot.
Completed jobs, 1 January to 28 October 2026. 654 further jobs sit outside these five lines and carry $5,577 between them.
Monthly completed revenue, thousands of dollars
2026 against 2025
2025
2026
We start 8 May 2026
January–October, ServiceTitan’s own figures
$6.70M vs $4.18M
Up 60% year on year
Before us · Jan–May — +24% on 2025
With us · Jun–Oct — +92% on 2025
362
291
Jan
227
329
Feb
346
695
Mar
465
597
Apr
553
511
May
631
815
Jun
669
1,079
Jul
359
1,003
Aug
308
871
Sep
260
513
Oct
Both years read from ServiceTitan’s own campaign-performance report on 29 October 2026, so the two lines are measured the same way. October 2026 is still running, drawn dashed.
Paid media
Every campaign, every day, in one table
| Campaign | 2026 to 28 October |
|---|---|
| Edmond OK Performance Max | $66,137 |
| Triple Play HVAC | $56,368 |
| OKC Performance Max #2 | $23,988 |
| Edmond OK Search | $22,064 |
| Norman OK Performance Max | $21,315 |
| Plumbing · OKC Search | $15,390 |
| Four smaller search campaigns | $21,286 |
| Google Local Services · two accounts | $99,536 |
| Total paid media | $326,084 |
One key, no double counting
Entity, date, channel, campaign. A hand-entered row and the connector's later pull share that key and overwrite, so the same dollar is never counted twice.
Local Services is held to the same bar
Charged-lead cost feeds the same table as the ad accounts, so Local Services carries a real cost per customer instead of sitting in its own dashboard.
Mismatches are reported, not buried
Spend with no attributed revenue, and revenue with no spend row, both get listed so a renamed campaign cannot quietly vanish from the maths.
Google Ads from 27 April, when we took the account over; Local Services for the full year.
The dashboard
Spend on the left, completed revenue on the right
$96 and $93 per new customer
October so far: paid media won 488 new customers on $46,780, Local Services 156 on $14,470. Both numbers are on the screen, not in a spreadsheet.
Every stage clicks through
Tap 435 bookings and you get the 435 jobs. Tap the open estimate figure and you get the estimates behind it.
Direct is a real bucket
$191K of October revenue traces to no attributed call, and the page says so rather than pushing it onto a paid channel.
The live page, 28 October 2026, October to date. Customer and staff names are blurred for this deck.
Two brands, one build
A site for each market, on every screen
gracoac.com
Three offices across two states behind one front door. A visitor picks North Texas, Central Oklahoma or Southern Oklahoma and lands in the right market, with the right number and the right licence on the page.
calltripleplay.com
The Oklahoma brand, and the one the rest of this deck measures: 1,035 pages, the priced estimator, the booking flow and the click tracking all live here.
Both live sites, captured 31 October 2026. Chat and cookie widgets hidden for the screenshot only.
The website
1,035 pages, one for every way a customer searches
192
service pages
Heating, cooling, plumbing, electrical, ducts, insulation — each trade on its own terms, not buried in one list.
114
place pages
Cities, named neighbourhoods and individual zip codes, from Edmond down to Thackerville.
96
brand pages
Somebody shopping a Trane against a Carrier is a buyer, not a browser. They get a page either way.
620
answers and jobs
570 written answers plus 50 finished-job pages — the next two slides.
Structured data on every page, an index written for AI assistants, and a priced estimator and booking flow sitting on the same domain — so a visitor who arrives on a zip-code page can get to a number and a time slot without ever being handed to a phone tree.
Counted from the site’s own sitemaps, 31 October 2026. Search-ranking results are deliberately not claimed.
The answer library
570 answers to questions nobody calls a company about
570
published answers
Are flushable wipes safe to flush. Are two-prong outlets legal in Oklahoma. Are Goodman and Trane the same company. Real questions, in the words people use.
All three trades, not just the big one
Heating and cooling pays the bills, so plumbing and electrical content normally never gets written. Here they get equal shelf space — which is the only way those two trades ever get found.
Written to be quoted by an assistant
A direct answer in the first paragraph, structured data underneath, and a machine-readable index of the whole site — because a growing share of these questions are now asked of an AI rather than typed into a search box.
Every answer ends somewhere useful
The relevant service page, the estimator, or the booking flow — and the claims in the call to action are limited to ones the company's own site already makes.
Counted from the site’s own sitemap, 31 October 2026. Search-ranking results are deliberately not claimed.
Live on the client's site today
A real price for a new system, at 11pm, with no phone call
4
priced options
Value, Standard, Comfort and Premium Comfort — sized from the home's square footage, with financing shown per month beside each one.
8
photos of the system
The homeowner photographs the furnace, the condenser and the data plate. The estimate arrives with the install conditions already visible.
3
engines, one platform
System replacement, water heater, and a service request that carries no pricing at all — it routes the problem and books it.
0
re-typing by the office
The booking lands in ServiceTitan against the right business unit and job type, with the photos and the chosen option attached.
We publish the slots, so we can cap them
The booking offers our own day-and-period windows with our own daily limit, rather than selling whatever the dispatch board happens to show. A good lead is never turned into a slot the company cannot staff.
One engine, every brand, 390 tests
Company name, logo, colours, phone, legal footer and ServiceTitan business units all come from configuration. A second brand is a config entry, not a second codebase.
Describes the live application and its configuration, 31 October 2026. Test suite run the same day: 390 passed, 0 failed.
Capturing the web visitor
One phone number serves three channels. The website breaks the tie
The problem, plainly
The published number sits on the website, on the Google Local Services profile and in the search ads. When it rings, the number alone cannot say which of the three sent the caller — so thousands of calls a year get credited to whichever channel owns that number.
Three tracking numbers would be the textbook fix — and would mean changing the number on 1,035 pages and a Google profile with a thousand reviews on it.
So the site remembers the click instead
An endpoint on the company's own platform stores the Google or Microsoft click id and campaign tags in a first-party cookie for 90 days. No third-party pixel, no data in a tool they do not own.
Then the tap names the ad
When that visitor taps the number, the tap ties the call arriving seconds later back to the session — and so to the campaign. The dialled number still decides the channel; the tap decides which ad inside it.
It cannot be used to snoop
The company is resolved from the request's own origin against an allowlist, never from anything the browser claims, and every response is identical — so it cannot be probed.
Where it stands: collecting since 10 September 2026 — 318 click sessions, 155 carrying a campaign tag. The session half is live; the tap-to-call half is built and not yet switched on. The newest piece in the deck, presented as such.
Session counts read from the live platform, 31 October 2026.
The call board
Who is waiting on us, across every channel
77,132 calls logged this year
25,860 of them inbound, from 13,296 distinct numbers. Each one carries its channel, its outcome and the job it became.
Rang and nobody answered
A standing list of the last seven days, each with a call-back button. Twenty-one on the day this was taken.
Messages awaiting a reply
Every thread where the customer spoke last, oldest first — fourteen of them, one tagged a paid lead that is still not booked.
The live page, 28 October 2026. Caller names and numbers are blurred for this deck.
Call coaching
Every call transcribed, then scored against a rubric
10,924 transcribed, 8,308 graded
Since grading went live on 9 July. October alone scored 3,349.
79.8 in August, 87.1 in October
The first full month of scoring averaged 79.8 out of 100. Two months later the floor had moved to 87.1 and stayed there.
Graded for what it is
Booking calls, outbound follow-ups and sales calls each get their own rubric — 4,759, 2,951 and 306 of them — so a follow-up is not marked down for not booking.
The live page, October to date. Rep names are blurred for this deck; the client sees them.
Speed to lead
Every lead gets a clock, and the clock is honest
98.5%
of paid Google leads reached
909 of 923 Local Services leads over three months, 97.5% of them inside five minutes. Every one of those leads was paid for, so this is the half that must not leak.
Three things count as a lead waiting
An unanswered call, a call the caller gave up on after we picked up, and a paid Google lead. All three go on the same clock — 1,318 of them between August and October.
A customer who rings three times is one lead
Repeat dials collapse into one episode and the clock starts at the first ring — the least flattering choice, and the only one that matches how long the customer has actually been waiting.
And the leak it found: missed calls
Only one in three unanswered calls was ever reached again, and most of those customers rang back on their own. That is now a named queue, nine deep today, oldest first — not a number nobody knew.
Measured over 1 August – 31 October 2026 from the client’s own call and lead records. Queue depth read 31 October 2026.
CSR summary
Every window at once, compared honestly
33.2% booked, year to date
1,294 bookings from 3,896 real chances — not from the 70,984 calls, because most calls were never a booking opportunity.
Part-finished windows are marked
A window still running is flagged “so far”, and totals are not compared across windows of different length — only rates are.
The page warns about itself
Windows graded from a thin slice of calls carry a warning triangle and an AI-coverage percentage, so an early figure is never mistaken for a settled one.
The live page, 28 October 2026. The same figures run per rep, behind a role that only managers hold.
Dispatch and schedule
The day, and the week, with the money on them
46 scheduled, 8 in progress, 17 completed, 4 still unassigned — across 38 technicians on the roster.
The week ahead, each day carrying the revenue already booked onto it.
Unassigned is a number, not a surprise
Work with nobody on it sits in its own column all day, counted.
Trade on every card
Heating, plumbing or electrical, so a board of 46 jobs reads at a glance.
Filtered by business unit
Oklahoma or Texas, one trade or all of them, one technician or the whole roster.
Both live pages, 28 October 2026. Customer and technician names are blurred for this deck.
Lead capture
An estimator on the website that prices the job
A price, not a contact form
The visitor answers a few questions, gets a real number for a real system size, and we keep the quote — $16,949 for a 3.5 ton gas furnace on the top row.
Hot, warm or nurture
Each lead is tiered on what it quoted and how it behaved, so the office works the hot ones first instead of the newest ones first.
Checked against ServiceTitan
Every row says whether that person reached the field-service system — four of these eight had not, and would otherwise have been lost.
The live page, October to date — a recent addition, so talk about the mechanism rather than the volume. Names and addresses are blurred.
Google Local Services
A paid lead gets an answer in the same minute
1,767 Local Services leads this year
$99,536 of charged-lead cost, every lead landing in this inbox with its thread attached.
Replied to automatically
The first answer goes back through Google within the minute, and an hour later it circles back by name: “Just circling back so we can get this drain unclog scheduled in Warr Acres.”
One click into ServiceTitan
The customer and the booking are created from the thread, so nobody retypes a name and a number into another screen.
The live page, 28 October 2026. The consumer's name, number and message are blurred for this deck.
The platform
One screen that ties the spend to the money
Leads
Booked
Estimates
Appointments
Sold
Every stage clicks through to the jobs behind it
Cost per customer, per campaign
Spend against attributed revenue for each campaign, with cost per customer and return side by side — and a reconciliation report that lists spend with no revenue and revenue with no spend instead of hiding the mismatch.
How sure we are, shown
Each match carries a confidence level, from a confirmed same-call timestamp down to the CSR's own campaign pick. Unmatched calls stay in a real “Direct” bucket — never pushed onto a paid channel to flatter a report.
New callers kept separate
Existing-customer calls are split out of every funnel number, so a repeat service call never gets counted as an acquisition win.
Alongside it: dispatch and schedule boards, a map of the day's work, a lead inbox with one-click booking, a missed-call callback queue, an unbooked-lead worklist, per-rep coaching pages and a manager console — each role seeing only what it should.
Multi-tenant by construction: one client's data is scoped on every query, never shared across businesses.
“We run four trades across two states, and I used to get a different answer depending on who I asked. Now the spend, the calls and the completed revenue sit on one screen. I can see what a new customer cost me this month — about ninety dollars — instead of working it out at the end of the quarter.”
Ron Gregory
Owner, Triple Play Home Services
“Every call the office takes is transcribed and scored, and a follow-up call is judged on a follow-up standard instead of being marked down for not booking. We started in the high seventies. We have been at eighty-seven two months running. The board tells me who needs ten minutes with me this week.”
Alan C.
General Manager, Graco
Both are happy to take a call from anyone weighing this up.
Who you would be working with
Holarctic, built and run by Bluefrog
2026 Inc.
Power Partner
Inc.'s annual award for the B2B companies that business owners credit with their growth. Announced 20 October 2026.
Google Partner · Yelp Advertising Partner · Mailchimp Pro Partner
We build the software, not just the ads
The platform in this deck is ours. That is why the call grading, the dispatch board and the daily briefs all read from the same data instead of four disconnected tools.
Home services is the specialism
Garage doors, heating and air, plumbing and electrical. Across the platform we have logged more than 110,000 calls, transcribed over 11,600 and graded over 9,200.
Scottsdale, Arizona
Working with operators nationwide. Founded and run by Jeff Beasley.
Platform-wide call volumes read 19 October 2026.
Next step
Tell us a time that works
and we will show you yours.
Thirty minutes. We will walk your own phone calls, your own Google profile and your own ad spend through the same screens you have just seen — before you commit to anything.
1
Call or reply with two or three times
Any weekday. We work around your schedule, not ours.
2
We look before we talk
Your website, your Google profile and your listings, reviewed in advance at no charge.
3
You keep the findings either way
Whether or not you decide to work with us.
(480) 741-8081
Jeff Beasley · jeff@bluefrog.ai · bluefrog.ai
Google and Facebook
The profiles post themselves, from the work that was done
4.8 ★
1,098 Google reviews
1,025 of them five-star. Their reputation is their own; our part is making the profile show the work — 504 posts published, 677 job photos uploaded.
164 days of posts already scheduled
Google holds the schedule, not our server, so a machine that misses a night costs nothing. 684 finished jobs queued behind it, every caption editable first.
Photos filed to the right tab, automatically
Ten per run, geotagged and renamed from the real job. An attic furnace files as interior, a condenser on its pad as exterior — Google treats those tabs differently.
Plumbing and electrical get a weekly quota
Left alone, a heating and cooling company posts nothing else. Two posts a week are reserved for each smaller trade, on purpose.
No claim their own site does not make
They do not advertise free estimates, so no post offers one. Calls to action come from what the site itself says: 24/7 dispatch, a flat rate approved before work starts, financing, veteran owned.
Rating and review counts read from the live profile, 11 September 2026. Post, photo and queue totals read from the running system, 31 October 2026.