Case Study — Real Estate Investor
SHH Buys Homes
Real estate investors compete on long-tail local SEO — "sell my house fast [city]" for every city in their market. Building one page at a time doesn't scale. We built 216 of them.
Sales On Demand built SHH Buys Homes a 216-page programmatic local SEO site on Astro. It was deployed to Cloudflare Pages with one crawlable "sell my house fast [city]" page per market, a complete XML sitemap, and monitoring for 185+ priority URLs.
Same playbook for your market: our website development service and SEO & AEO service, plus why your website doesn't show up on Google and done-for-you website vs DIY. Or book a strategy call.
The Opportunity
Local investors compete on long-tail search.
The "we buy houses" and "sell my house fast" space is won at the city level. A homeowner in Scottsdale searches "sell my house fast Scottsdale" — not a broad term. They want someone local and fast. The national players (Opendoor, Zillow Offers) own the broad terms. Local investors win by owning every long-tail city variation in their operating area.
The problem: doing that manually means 200+ individual pages, each with unique content, proper meta, and clean URL structures. Without a programmatic system, that's weeks of hand-built pages — and most investor sites stop at ten.
Programmatic Generation
200+ pages. One build command.
How it works
Astro's getStaticPaths() function generates pages from a data source at build time. We built a structured city dataset — city name, county, state, population tier, neighborhood references — and wired it into a dynamic route template. One template. One dataset. 216 unique pages at build.
Each city page has its own unique title, meta description, H1, and content variations seeded from the city data — not just a name swap. The pages are structurally unique, not thin duplicates.
Why Astro for this
Programmatic page generation is a first-class feature in Astro — it's not a workaround. The build generates every page as static HTML, so Cloudflare Pages serves all 216 from the CDN edge with no server-side logic. Fast, cheap, scalable.
Adding new cities means adding a row to the dataset and running the build. The whole system redeploys in under two minutes.
Crawl Discovery Strategy
Give every page a clean discovery path.
A 216-page site submitted via XML sitemap alone can take weeks to fully crawl. Googlebot prioritizes known, high-authority domains. A new site at a new domain starts at zero crawl budget.
The launch system paired a complete XML sitemap with crawlable hub links, Search Console verification, and ongoing coverage checks. That gave Google a clear route to every priority URL without depending on orphan pages or unsupported shortcuts.
Results
At-scale local SEO coverage. Fast.
Takeaways
Scale changes the game.
Most investor websites stop at a handful of city pages because building them manually doesn't scale. The operators who commit to programmatic coverage — every city, every neighborhood, every long-tail variation — own the search landscape in their market.
Astro's build system makes this approachable. Once the template, data, sitemap, and internal-link system exist, adding 50 more cities is a dataset update rather than a new project.
Programmatic SEO works when the pages are genuinely useful — not thin duplicates. The content variation layer is what separates indexed-and-ranking from indexed-and-penalized.
Buy in every city you want to close in.
If you're an investor operating in 10+ cities and you don't have a page for each one, you're leaving leads on the table. Book a call and we'll scope a programmatic build for your market.