A seasonal HVAC service business in the Lower Mainland with no local-SEO foundation. Eight months to a top-three map-pack position and predictable inbound through Google Business Profile and geo-pages.
Fifteen-year-old business. Two service trucks. Reputation for honest quotes and finishing what they started. Almost zero map-pack presence for the keywords that mattered most.
What we found at audit:
One Google Business Profile, claimed but never optimised. Default category set wrong (“Heating Contractor” only; no “HVAC contractor”, no “Air conditioning contractor”). Six photos, all from 2019. No GBP posts ever. Service area defined as a 5km radius of the shop in Coquitlam — half their actual coverage missed.
Citations across 60+ directories were inconsistent: phone number changed in 2022 (still old number on Yelp, Yellow Pages, Houzz, three industry directories). Business address listed two different ways. The HVAC industry rewards consistent NAP brutally; this was bleeding rankings invisibly.
Reviews: 42 reviews, 4.6 average. Solid. But review velocity was 1-2 per month from organic word-of-mouth. We needed 8-12 per month for the algorithm to take notice.
People find us by word of mouth. We just need Google to find us the same way.
The owner's instinct was right: word-of-mouth had earned them the reputation, but Google didn't know. Our job was to teach Google what the neighbourhood already knew.

We started in March — shoulder season, low demand, the perfect window to invest in foundation. By November's furnace spike, the map pack was working.
We'll come back inside one business day with where you currently rank, what's holding the map pack, and the timeline to top-3.
Local SEO for seasonal trades is mostly about timing the build against the spike.
The rankings that win the November furnace spike are built in April. Launching local SEO when demand already peaks is six months late. We schedule the heavy investment in the lowest-demand quarter, every year.
Google rewards fresh Business Profiles. We refresh photos monthly — trucks at job sites, before/after installs, the crew working. Twelve months of monthly uploads beats a single perfect shoot.
A 4.6 profile with 156 reviews and 12 new ones this month beats a 4.9 with 30 stale ones. The algorithm reads velocity as freshness. We wire the review request into the dispatch system, not a separate task.
Four years, $3.11M stewarded, $8.96 lifetime cost-per-conversion — the patient Google Ads playbook.
Read the case →
Solo agent to a predictable pipeline — $32 cost-per-lead and +185% year-over-year leads.
Read the case →
Browse every Angarum case study — real numbers, real accounts, more industries.
See all case studies →