Chlorine Clean / 2026
Ten page migration, then the acquisition to fill it
A full Next.js migration, a ZIP code service checker, 35 blog posts, and a door hanger campaign routed off a pool density map joined to county parcel data.
Chlorine Clean runs pool service across Delaware and southeastern Pennsylvania. The site they had was a template that ranked for the company name and very little else. The forms went to an inbox. There was no way to tell a visitor in the service area from one two counties away, so the phone rang with jobs that could not be taken.
The build
The site moved to Next.js on the App Router across ten pages, with CSS custom properties carrying the palette so seasonal campaigns could reskin without touching components. HubSpot forms were embedded and routed. A sticky CTA follows the visitor on mobile, which is where almost all of this traffic lives.
The piece that changed the inbound quality was a ZIP code service checker. A visitor types a ZIP and gets an immediate answer about whether they are in the service area, before they fill anything in. Out of area visitors still get the phone number rather than a dead end, because some of them are worth a conversation anyway.
The content
Thirty five blog posts were written and expanded to between 750 and 1,000 words each, prose only, no stock photography. Word counts and JSX compilation were validated with scripts rather than by eye, because thirty five files is past the point where reading them one at a time catches everything. A category filtered listing page was built to sit on top of them.
The offline half
The interesting problem was not on the site. Chlorine Clean had a KMZ file with 1,104 pinned pool locations. Pool pins are aerial. They sit on the water, not on the front door, which is where a door hanger has to go.
We parsed the KMZ, then joined every pin against county parcel data across Delaware and Pennsylvania to resolve each pool to the address of the property it belonged to. From the resolved addresses we built two day, two team canvassing routes, and a mobile HTML field tool with Google Maps deep links so a canvasser could work the route from a phone without a paper list.
The hangers themselves were generated through a Python SVG pipeline: five design variants at the 4.25 by 8.25 inch bleed specification, with QR codes, tiered weekly service pricing, and a tear off keeper card.
What it demonstrates
This engagement is the clearest example of the field tier working end to end. A site that loads and converts, content that gives search engines something to index, and an offline acquisition channel built on the client's own data rather than a rented list.
Tell us what is broken.
Send the URL of the site you want replaced.