Case study · 60-day engagement

Hailstorm Tuesday. Ads live Wednesday afternoon.

A roofing owner in Austin had been waiting nine days for his old agency to "scope a storm response campaign." We had ad groups live in 36 hours and a hail-zone landing page in 48. Every storm-damage roofer in town was fighting for the same insurance jobs that month.

The challenge

"By the time my agency moves, the storm money is gone."

Travis County took a serious hailstorm on a Tuesday morning in April. By Wednesday lunch every roofer in Austin was fighting to get in front of homeowners filing claims. The window for storm work in Texas closes fast: insurance adjusters get backed up, contracts go to whoever showed up first, and by week three the local market is saturated.

The owner had called his existing agency Tuesday at 2 PM. By Friday they had emailed him a "scope of work proposal" for a $4,500 storm response build. He hired us Saturday morning instead.

What he was working with at that moment:

  • A generic services landing page mentioning "storm damage" in one paragraph among nine.
  • A Google Ads account dormant for three months because the previous agency had paused it during a "rebuild."
  • No LSA presence in a county where competitors were pulling 30+ LSA leads a week during storm events.
  • A GBP that still listed his old phone number from 2019 so anyone searching directly was being routed to a disconnected line.

The plan

Speed first, polish later.

Hour 0-12: Geo-targeted ads live

We pulled the National Weather Service hail map for the storm path and built three geo-targeted ad groups around the hardest-hit zip codes. Headlines were specific: "Hail Damage Inspection · Free · Travis County · Same Day." Bids were aggressive on the first day because we wanted impression share before competitors caught up.

Hour 12-48: Hail-zone landing page

Single-purpose page, four sections: hail map showing where the storm hit, what to do in the first 72 hours, what insurance covers, and a click-to-call CTA pinned to the bottom of mobile. Built in WordPress on top of his existing site. Not pretty. Loaded in 1.4 seconds.

Day 3: GBP fix + LSA emergency app

Updated the phone number on the GBP, added "storm damage repair" to services, posted before/after photos from previous storm work, applied for LSA with same-day insurance + license verification.

Day 5-12: Lead routing + answering

The owner was missing calls because the office line went to voicemail after 6 PM. We routed the click-to-call from the landing page through CallRail with after-hours forwarding to his cell. Lead volume tripled the day we did this.

Day 14 onward: Negatives + budget pacing

After two weeks of data we cut the broad terms that were not converting (tarp rentals, DIY repair videos) and pushed budget toward the geo + intent combos that were booking inspections.

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 01Storm-zone geo overlay

Auto-pulls NWS storm reports and turns them into ready-to-paste Google Ads location targets. Saved us a half day on day one.

Tool 02After-hours call router

Detects whether the office line is answered, then forwards to the on-call cell with caller intent context (paid keyword + landing page).

Tool 03Single-purpose page generator

Generates a focused landing page from one keyword cluster + one offer. We use it whenever speed matters more than design polish.

The execution

Week-by-week timeline.

WeekWhat we shippedWhat moved
Hour 0-12Geo-targeted Google Ads live across 14 zip codesFirst impression at hour 4
Hour 12-48Hail-zone landing page shipped, click-to-call wiredFirst booked inspection at hour 38
Day 3GBP cleanup + LSA emergency applicationPhone number fix recovered 7 leads/day
Day 5CallRail with after-hours routing liveMissed calls dropped from 31% to 4%
Day 12LSA approved, joins paid mixLSA delivers 18 leads in week one
Day 21Negative keyword pass + budget shift to converting groupsCPL drops from $87 to $51
Day 60Storm wrap, retainer continues for general residential47 jobs booked, $184k revenue

The numbers

What changed in the data.

47 jobs
Booked in 60 days
$184k
Revenue, same window
38 hrs
From sign to first booked inspection

The 47 jobs broke down by source:

The previous agency would have charged $4,500 for the storm campaign build. We built it in two days for the price of a normal monthly retainer. By the time their proposal came through, this owner had already booked 11 inspections.

Other roofers were still arguing with their agencies the week after the storm. We had ads up the next afternoon and a landing page by Wednesday night. Whatever you call that, do that.

Owner·Roofing company · Austin, TX

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