David Meyers runs Clearview Surface Solutions out of Chaska, Minnesota. Two service lines: residential concrete coatings (garage floors, patios, basements) and concrete restoration (repair, leveling, sealing). Eight towns across the southwest Twin Cities metro. He had been quoting work off Facebook messages and the occasional referral. Both sides of the business were healthy. The website was holding him back.
Two services, one decision
Most contractor sites mash both service lines onto one homepage and hope Google figures it out. Google does not figure it out. A homeowner in Eden Prairie searching for "concrete restoration Eden Prairie" needs a page that is specifically about concrete restoration in Eden Prairie, not a homepage where it is the third bullet under "What we do."
We built David two parallel site structures. One for coatings, one for restoration. Each service has its own dedicated hub page and a page in each of his eight covered towns. 61 pages total, every page indexable, every page with a real photo of the actual work.
The legacy WordPress problem
David came to us with an old WordPress site that he had been told to migrate off "soon." Sites like that carry years of inbound links from old directories and neighborhood Facebook groups. Killing those links would have set him back six months on Google rankings. We mapped every URL on the old site to its closest equivalent on the new one (about 40 legacy URLs in total) and shipped 301 redirects so every existing inbound link still works.
The migration also gave us a chance to fix Dave's photo gallery. He had years of before-and-after shots scattered across an old photo album. We pulled the best 30, tagged them by service and town, and built a gallery that actually loads on a phone.
What we built
Under the hood: the same .NET pipeline that runs every Bindingstone WaaS site. Honeypot + Cloudflare Turnstile against bots. Real visitor IP and user-agent travel with the lead so David can see where buyers find him. Notification email to him, automated reply to the homeowner, copy forwarded to his CrewLeadPro inbox. Site loads under a second on phones in coverage-spotty driveways.
The local-pack play
Eight towns is small enough to actually own. Most concrete contractors target "Minneapolis" or "Twin Cities" and get drowned by a hundred competitors. Going narrow — Chaska, Chanhassen, Eden Prairie, Shakopee, Prior Lake, Savage, Carver, Excelsior — means each page is competing against a few local competitors, not the whole metro. Add the schema markup (LocalBusiness with the eight cities as areaServed), the Google Business Profile attached to the same NAP, and David starts showing up in the local pack within a few months.
We do not control how fast Google decides to trust the site. We do control whether the site deserves that trust the first time it gets crawled.
What we run, ongoing
Hosting, the lead pipeline, the redirect map (we add to it any time he discovers an old URL still in the wild), the photo gallery as he adds new jobs, and the page set as he picks up new towns. When something needs attention, he texts us. We do the work. He stays on the floor.