Case study · 90-day engagement

Same budget. $1,800 less waste a month.

An Orlando pool service company was spending $4,400 a month on Google Ads. The CPL had crept up from $38 to $71 over two years. The agency running it kept saying "Google is more competitive now." We pulled the search term report and what we found explained $1,800 a month of the spend in a single afternoon.

The challenge

"Google is more competitive now" was the answer to every question.

The owner had been frustrated for a year. CPL kept climbing. Booked jobs were flat. The agency dashboard showed steady "engagement metrics" and the recommended response was always to spend more.

When we ran a 12-month search term report:

  • "Pool" was matching to "pool table repair," "pool noodle" "swimming pool exercises," "pool tournament Orlando," "free pool table near me," and 47 other variants of pool-the-noun-but-not-the-business.
  • Of $4,400 monthly spend, $1,800 was going to non-service queries Roughly 41% of every dollar spent.
  • "Cleaning" was matching to dryer vent cleaning, carpet cleaning air duct cleaning, gutter cleaning, and house cleaning. We do not service those.
  • Ad groups were structured by network (Search vs Display vs PMax) instead of by service type, so the bid algorithm could not learn what was actually working.

The agency had not run a search-term report in 11 months according to the change history log. Their internal automation had been running on autopilot. The owner was paying $890 a month for "campaign management" that was effectively no management.

The plan

Read the search terms. Add the negatives. Rebuild the structure.

Step 1: Negative keyword sweep (week 1)

Pulled 12 months of search terms, classified each one for service relevance, bulk-added 287 negatives. About half were obvious (table, noodle, exercises, tournament). The other half were judgment calls (specific competitor brand names, geographic queries outside the service area, price-only shoppers). Spend dropped 38% the same week and lead volume actually went up because the budget was no longer being wasted.

Step 2: Ad group rebuild by service (week 2-3)

Restructured 4 broad ad groups into 11 service-specific ad groups: weekly maintenance, equipment repair, green-pool cleanup, salt cell replacement, pump replacement, heater repair, leak detection, vacuum repair, tile cleaning, opening, closing. Each ad group has its own keywords, ad copy, and ideally a matching landing section.

Step 3: Match-type discipline (week 3)

Moved 80% of keywords from broad-match (the previous default) to phrase + exact match. Broad-match has its place when you have huge budgets and tight conversion goals; for a $4k/mo budget on a small service business, it bleeds money.

Step 4: Landing page sections per service (week 4-6)

The website had one services page. We split it into 11 anchor-linked sections so each ad group could deep-link to the relevant section. Quality score climbed across the board.

Step 5: Weekly search term hygiene (ongoing)

Set up a recurring Monday-morning search term review. Bad terms get negated weekly. New negatives average 8-12 per week. The waste does not creep back in.

AI tools we used

The internal stack that did the heavy lifting.

We do not pretend the work happens by hand. Three of our internal tools are the reason this engagement moved as fast as it did. Each of them replaces what used to be days of human time.

Tool 01Search term classifier

Bulk-classifies 12 months of search terms into "service-relevant," "tangential," or "kill it." Turned what would have been a 3-day audit into a 4-hour task.

Tool 02Negative keyword expander

Takes one bad term and proposes the 8-12 related variants you should also negate. Caught 87 negatives we would have missed.

Tool 03Weekly search term cron

Runs every Monday at 6 AM, surfaces new bad search terms from the past week, drafts the negative keyword list for review. Kills the "we forgot to look" problem.

The execution

Week-by-week timeline.

WeekWhat we shippedWhat moved
Week 1287 negatives bulk-added, audit completeSpend down 38% the same week
Week 2-34 broad ad groups rebuilt into 11 service-specific groupsBid algorithm has clean signals
Week 3Match-type discipline: broad → phrase + exactCPL drops below $50 for first time in 8 months
Week 4-6Service-section landing page split, anchor linksQuality score moves from 5/10 to 8/10 average
Week 8Weekly search term hygiene cron deployedWaste prevention, not just cleanup
Week 12CPL stable at $34, 2.1× more leads on same budgetOwner takes the savings as profit

The numbers

What changed in the data.

-52%
Cost per lead
2.1×
Leads on same budget
287
Negatives killing waste

The $1,800/mo waste broke down to:

The previous agency was charging $890 a month for management. Their automation had been running on autopilot since the day the account was set up. The owner had been told that this was normal. None of it was normal. A weekly 30-minute look at search terms is not a feature. It is the bare minimum.

Asked my old agency for a year why my CPL kept going up. They blamed Google. Mark sent me one screenshot of the search terms after the second week and I understood the entire problem.

Owner·Pool service company · Orlando, FL · 4 trucks

Keep reading

Three more turnarounds you might find useful.

Want a story like this with your numbers on it?

Thirty minutes. We pull up your account on screen. We tell you what we would do, what we would not do, and whether we are the right fit for your business.

Book my 30 min call Run my free audit