Live client build
Green Team
An owner-operated carpet, air duct and dryer vent cleaning company in Champlin, working across the north and northwest Twin Cities metro. Rebuilt from scratch and moved onto their own domain, live since August 2026.

A trade that will not commit to a price
Green Team is owner operated. Justin, Ryan and Clayton run the jobs themselves rather than sending a stranger in a rented van, which is the whole argument of the business. That part was already working. The old site said so too, in the same line anyone in the trade can type, repeated across page after near-identical page, with nothing on any of them that made it believable.
A homeowner wants a number before they let anyone into the house. Plenty of competitors publish a starting price, and the old site did too. What almost none of them publish is a figure the customer can hold them to, so the number on the page is never the number that matters. Fixing that meant changing what the business was willing to promise, not just how the page looked.
The second problem is reach. They work out of Champlin, their old site carried page addresses for towns right across the metro, and search engines were still listing addresses that had stopped resolving. The rebuild had to recover those, and then decide town by town which ones Green Team would actually claim.
The price goes on the page, and it is a ceiling
Plenty of competitors publish a price. What almost none of them publish is a maximum, because the fear in this trade is quoting low online and then having to raise it standing in someone's living room. So the estimator does not give an estimate. It gives the most you will pay for the job you described, and the page is explicit about the edges: if the count turns out to be wrong you are shown before anyone unloads, and nothing changes once the work has started. Designing the fear out turned out to be a better answer than arguing with it.
43 town pages, and 23 of them talk you out of booking
43 town pages usually means one page copied 43 times with the name swapped, which search engines have been discounting for years. These carry their own copy and their own map, generated per town from open map data and showing that town with its neighbors around it. There are 86 plates in all, a desktop and a mobile version of each, and no two are the same file. The harder decision was what the pages say. Only 20 of the 43 towns are on the service-area list Green Team gave Google. The other 23 are places their old site had claimed and search engines still list, so those pages keep the address and then say plainly that the town is not on the list and nobody should read the page as a promise of a van nearby. Pages that turn work away are a strange thing to build on purpose. They are also the reason the other 20 can be believed.
The crew is drawn, not photographed
The whole argument of the site is that you get one of the three owners on your job instead of a stranger in a rented van. Stock photography of models in clean uniforms would have contradicted that before a visitor finished the first scroll. Every hero image is illustrated in a single screenprint style instead, the owners and their green van included, so the pictures say the same thing the words do. Their own photographs go on a page of their own, headed with the fact that the jobs in them are theirs, because a photograph earns its place when it is proving something rather than decorating something.
The launch could have taken their email down with it
Their domain, their Microsoft 365 mail and the old site all lived in the same DNS zone. The table everyone was working from listed fifteen records. The registrar's own screen listed 22, including two carrying Teams federation that no lookup had surfaced, because you cannot ask a DNS server for a name you do not know exists. Every record was inventoried by hand off that screen before anything moved. The site cut over to their own domain and their mail never stopped.
The booking form fails loudly
A form that accepts a lead and quietly drops it is worse than no form at all, because the customer walks away believing they are booked. If the mail service is not configured, this one returns an error and tells them to phone instead of showing a thank-you page over a lost job. It was submitted for real on the live domain, and the message arrived in both the owner's inbox and ours.
The site
53 pages built from scratch: a page for every service they sell, plus a real page for each of the 43 towns in their search footprint.
Instant price estimators
Three of them, on the homepage, every service page and all 43 town pages. A homeowner answers a few questions and gets a number back, quoted as a maximum rather than a starting point.
A map for every town
86 vector maps, a desktop and a mobile plate for each town, drawn from open map data so that no two town pages carry the same map.
Google listings
Their business description rewritten, a missing service category added, and merge requests filed for two duplicate listings. Google decides those on its own schedule.
They cover 43 towns in their search footprint: the 20 they cover routinely, and 23 more the pages tell you plainly they do not. Each town has a page of its own rather than a line in a list on one service-area page.
The owner reports that the day after the site went live, a homeowner priced a job in the estimator and phoned in to book it.
One booking, reported by the owner. It is written here as what it is, and nothing is claimed about search position or call volume, because neither has been measured since launch.
If you clean, service, or repair anything you have to quote
This is what a build looks like when the category will not answer the first question a customer asks. The price for a site like it is published before you speak to anyone.
Or hear what we ship: (612) 453-1585