Pile Pickers — 24 city pages for a pet waste service

A Next.js site for a pet waste removal service in Eastern Ohio — 24 programmatic city pages, a zip-code quote funnel, and a blog built to catch local search.

Visit the website
City pages
24
Live since
Feb 2026
Pile Pickers homepage with a blue service panel, ZIP-code quote field, and team imagery beside a branded van

Pile Pickers is a pet waste removal service covering Eastern Ohio and Western Pennsylvania. I built their site in Next.js: 24 city pages, a zip-code quote funnel, and a blog. It's live at pilepickersllc.com.

The problem with a service-area business

A pet waste service has no storefront. Customers don't visit; the van comes to them. That breaks the usual local-SEO playbook, because there's no single address to rank.

What people actually search is "pooper scooper service" plus their own town. Not the county, not the region. Their town. A service business covering two dozen towns has two dozen separate search problems, and one homepage listing every city in a footer answers none of them well.

The build

24 city pages, generated from one template. /locations/[city] renders from a single locations.ts data file. Adding a town is a data entry, not a new page to design and maintain. Each one is a real page targeting a real query, which is the difference between showing up for "pooper scooper Boardman" and hoping the homepage covers it.

The thing to get right here is that programmatic pages have to be worth reading. A template that swaps a town name into otherwise identical copy is the thin-content pattern search engines discount, so the value is in each page carrying genuinely local specifics rather than a find-and-replace.

A zip code is the first thing you see. The hero asks for a zip and nothing else. For a service-area business, the customer's real first question isn't "what do you charge" — it's "do you even come to me?" Answering that in one field, before any form, removes the reason to bounce.

Services split residential and commercial. /services/residential and /services/commercial are separate pages because they're separate buyers. An apartment complex or HOA is a different sale from a homeowner with one dog, with different objections and a much larger contract.

A blog with 10 posts, on things customers actually search — what a pooper scooper service costs, HOA and apartment waste stations, health risks of leaving waste in a yard, the spring thaw problem. Commercial-intent content, not filler.

Plus the pages a real service business needs and most template sites skip: FAQ, about, a referral page, and a client login.

Stack

Next.js 15 and TypeScript, deployed on Vercel. Server-rendered, so every city page and blog post is real HTML a crawler can read — which is the entire point when the site's job is being found in 24 different towns.

48 commits between February and June 2026.

Results

I'm not going to put a number here I can't source.

What's checkable is on the site: 24 city pages live, a working quote funnel, 10 published posts, and structured data in place. Click any of it at pilepickersllc.com.

The honest position is that this build is structurally right for how a service-area business gets found, and I'd want another quarter of data before claiming what it produced.

What I'd change

The hero photography. The client had no photos. Not a small library, not bad ones — zero. That's normal for a small service business, and it's a real constraint rather than an excuse: a site can't ship with an empty hero, so I generated the imagery.

The original imagery had garbled lettering on the van. The October image refresh removed the extra text and cleaned up the site’s photos, logo, and mascot artwork.

The next step would be fifteen minutes of the owner's phone camera: the actual van, the actual team, one dog. On a page whose job is convincing a homeowner to let a stranger into their back yard, real photos of the people doing the work would make the site more personal.

That ask is worth making explicitly at kickoff. "Send me ten photos from your phone" is a cheaper request than most clients expect, and it's the single highest-value thing they can hand over.

More depth per city page. 24 pages is the right structure. The next win is making each one carry more that's true only of that town.

Want something like this?

If you run a service-area business and you're invisible in half the towns you serve, that's a structural problem with a structural fix. See what a build like this costs, read about my web design service, or tell me which towns you cover.