Case study · 45-day engagement

From price-shopper bait to $312 average ticket.

An Indianapolis carpet cleaning company had been losing the price war for two years. The local market was full of bait-and-switch operators advertising "whole house carpet cleaning $39" then upselling at the door. The owner refused to play that game, which meant his quote requests kept getting beaten on first call. He needed a way to win on value when the lead first hit his website, not after.

The challenge

"I cannot compete with $39 whole-house. And I should not have to."

The $39-whole-house ads work as bait. The actual cost when the customer pays the bill is usually $180 to $250 after upsells, but by then the customer is already at the house and the cleaning has started. Honest operators cannot match the headline. The owner had been told for two years that he needed to lower his prices or accept losing.

The audit showed something different:

  • His Google reviews were stronger than the bait operators He had 287 reviews at 4.9 average. The closest bait competitor had 184 at 4.2 average.
  • His website said nothing about quality Generic "carpet cleaning Indianapolis" page with stock photos and a phone number. No before/after, no methodology, no team photos.
  • The pricing was hidden behind a quote form Customers had no way to see what they were paying for until after they had requested a quote. Most never made it that far.
  • The Google Ads ad copy was identical to the bait operators Headline "Carpet Cleaning Indianapolis." Same as everyone. No differentiator at the point where the price-shopper was making a decision.

The plan

Make the value visible before the click.

Step 1: Pricing transparency page (week 1)

Built a real pricing page. Three tiers (basic clean, deep clean, premium with stain protection) at fixed per-room rates. The page shows what is included at each tier, what is not included, and explicitly addresses the "$39 whole house" trap with a side-by-side comparison.

Step 2: Before/after gallery (week 1)

Owner had hundreds of customer-permission photos sitting in a phone gallery. We pulled 47 of the most dramatic before/afters into a scrollable gallery on the homepage. Each image has the actual ticket price visible. Visitors can scroll through and see exactly what their money buys.

Step 3: Methodology page (week 2)

Wrote a real "how we clean" page covering the equipment used, the chemistry of the process, the dry time, and the warranty. Most carpet cleaning websites have nothing like this. Took the owner about 90 minutes to walk through the actual process with us.

Step 4: Ad copy rewrite (week 2)

18 new ad headlines that lead with quality language: "Truck-mounted Steam Cleaning · 24-Hour Spot Warranty · 287 Five-Star Reviews." Quality score climbed from 5/10 to 9/10 because Google ranks ads partly on landing-page relevance and our pages now actually match the ad copy.

Step 5: Bait-callout in retargeting (week 3)

For visitors who left without requesting a quote, the Meta retargeting ad shows a "what \"$39 whole house\" actually costs" calculator. Click-through rate on the retargeting set is 4.8%, well above the 1.4% baseline.

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 01Before/after gallery generator

Auto-builds a scrollable gallery from customer photo permissions, with ticket prices and basic auto-cropping. Saves the owner about 8 hours of manual web design.

Tool 02Pricing-transparency comparison widget

Side-by-side calculator showing real cost vs bait pricing. Drops bounce rate by about 30% on the pricing page.

Tool 03Quality-score-aware ad copy tester

Generates ad headline variants tuned for landing-page relevance, runs A/B tests automatically, retires losers. Lifted quality score from 5/10 to 9/10 in 21 days.

The execution

Week-by-week timeline.

WeekWhat we shippedWhat moved
Week 1Pricing transparency page + before/after gallery shippedQuote request rate doubles by day 9
Week 2Methodology page + 18 new ad headline variants liveQuality score climbs 5 to 8
Week 3Retargeting bait-callout campaign activeRetargeting CTR 4.8%, qualified visits up
Week 4Quote-form simplification: 5 fields → 3 fieldsForm completion rate +52%
Week 5Mid-engagement review with ownerAverage ticket climbing from $189 to $278
Week 6Quality score tuning, final ad copy lock-inAverage ticket settles at $312

The numbers

What changed in the data.

2.3×
Quote requests per month
+65%
Average ticket
71%
Close rate on quotes

The lift in average ticket came from:

The owner stopped trying to compete on price and started competing on visible value. The bait operators in his market still exist. They just no longer steal his customers at the moment of decision.

Two agencies told me to drop my price. One told me to add a $19 special. I knew that was the wrong direction. Mark looked at my reviews and told me my problem was that I was hiding what made me different. That was the whole answer.

Owner·Carpet cleaning company · Indianapolis, IN · 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