Programmatic SEO without polluting the web
Programmatic SEO has a public-relations problem it earned honestly. For every genuinely useful database-backed site — every page that answers a real question at a scale no editorial team could reach — there are ten thousand pages of spun nonsense: city names swapped into the same paragraph, products nobody stocks, answers to questions nobody asked. Google's "helpful content" and core updates of the last few years were aimed directly at the second group, and plenty of the first group got caught in the blast radius.
We've built programmatic systems both ways — the kind that compounds and the kind we quietly de-indexed a year later. This is the framework we now apply before generating a single URL, drawn from work like the research-index architecture behind our Sundial Travel case study and a few scars we'd rather you didn't share.
What programmatic SEO actually is
Strip the hype and it's simple: you have a structured dataset, a template, and a combinatorial space of pages generated from the two. Flights between cities. Integrations between tools. Comparisons between products. Jobs by role and location. The dataset is the asset; the pages are its distribution.
The failure mode is treating the combinatorial space as the opportunity. "We have 500 cities × 40 cuisines = 20,000 pages!" No — you have a spreadsheet and a multiplication sign. The opportunity is the subset where a real person has a real question and your page is the best available answer. Usually that subset is a tenth of the space. Sometimes a hundredth.
The three tests every generated page must pass
Before any template ships, we run every row of the dataset through three tests. Pages that fail any of them don't get generated — or get generated noindex.
The data test. Does this page contain information that is genuinely hard to assemble? Real inventory, current prices, verified locations, first-party measurements, expert annotation. If the page is generic text arranged around a keyword — text that would be equally true with any city name pasted in — it fails. The web does not need it.
The differentiation test. Compare two random pages from the template. If they differ only in the entity name and a few swapped values, they fail. We look for at least a third of the page's substance to be unique to that entity: specific data, specific recommendations, specific caveats. Thin variations of one page don't rank; they compete with each other and teach Google your whole section is wallpaper.
The intent test. Search the target query yourself. Does the result page deserve to exist? If the current results are a forum thread and a PDF, and you can do materially better, build. If the current results are excellent, or nobody searches this at all, move on. Winning queries nobody wants is a participation trophy.
Architecture: data first, words second
The technical shape matters less than the honesty of it, but some patterns hold:
- The dataset is a product. It has an owner, a freshness SLA, and accuracy checks. Stale programmatic pages are worse than none — they erode trust in everything else on the domain. Our rule: every template shows its data's age ("updated March 2026") and every dataset has a decay date that triggers review or removal.
- Templates are editorial documents. A good template is 60% structured data rendered well and 40% genuinely written prose — context, caveats, how to interpret the numbers. Pure data dumps read like spreadsheets; pure prose reads like spun content. The mixture is the moat.
- Rendering and crawlability follow the standard discipline — server-rendered HTML, canonical URLs, honest status codes — the same sweep as our technical SEO checklist. Programmatic sites fail on plumbing more often than on strategy.
- Performance at scale. Ten thousand pages means ten thousand chances at a slow LCP. Generated pages cache beautifully — take the free win.
The link graph is the product
Here's the uncomfortable part: most programmatic sites aren't ranking problems, they're graph problems. Twenty thousand pages that only link to each other through a faceted sidebar have no structure — no hierarchy, no endorsement, no way for a crawler to learn which pages matter.
We design the graph before designing the page:
- Hubs. Curated, human-written hub pages for each major category — the pages you're proudest of. They link down to the best generated pages and earn links from outside.
- Spokes. Generated pages link up to their hub, across to genuinely related siblings (three to eight, chosen by data relationships, not alphabetically), and down to nothing — spokes end in a link to the hub, a converter, or a contact.
- Entry points. Not every template gets XML sitemap submission on day one. Submit your strongest slice, let it earn indexation, then expand. Indexation is a reputation system; bulk-submitting 20,000 unproven pages is how you tank it.
This is the same hierarchy logic we use for editorial content clusters — programmatic just makes the discipline mechanical instead of habitual.
Index management: fewer, better pages
The mature programmatic sites we've audited share one habit: they delete. Quarterly, pull indexation and impression data per template and ask the hard questions:
- Templates with indexation below ~50%: the pages aren't passing the tests. Fix the data or
noindexthe tail. - Pages indexed but with zero impressions in six months: candidates for removal or consolidation. A page nobody sees and nobody wants still costs crawl budget and dilutes the section's average quality.
- Cannibalisation clusters: twelve pages all ranking positions 30–60 for the same intent. Consolidate to one strong page and redirect the rest.
Surviving the next core update
No one can promise immunity, and anyone who does is selling. But the sites that ride out updates share traits, and none of them are tricks: accurate data with visible provenance; pages that answer the query completely enough that the user stops searching; authorship and accountability somewhere on the site; a business behind the content that customers can actually reach; and performance that respects the reader's phone. It's the same bar as everything else we ship in a growth engagement — the only difference is that programmatic content is audited at scale, so its weaknesses are too.
Key takeaways
- Start from the dataset's genuine value, not the combinatorial space. Most of the space deserves no page at all.
- Every generated page must pass the data, differentiation and intent tests — or ship
noindex. - The internal link graph is the product: curated hubs, disciplined spokes, staged indexation.
- Prune quarterly. Deleting weak programmatic pages is the highest-leverage "content creation" available to you.
- The long-term defence is boring: real data, real answers, real business, fast pages.
FAQ
How many pages is "too many" for programmatic SEO? There is no number — there is a ratio. If 90% of your generated pages pass the three tests and earn impressions, scale it. If half your pages are unindexed or unseen after six months, you're already too big, whatever the count is.
Can we use LLMs to write the prose sections? Yes, with tight constraints: generate only from your verified dataset, never from the open web; require the model to cite the fields it used; run automated checks that every claim maps to a data point; and have a human audit a sample every month. LLMs are good at fluent exposition of facts you hand them and terrible at knowing when a fact is wrong.
How long before programmatic pages rank? On an established domain with a healthy graph, meaningful pages can rank in weeks. On a new domain, expect six to twelve months of earning trust — which is an argument for starting with one strong template and fifty excellent pages rather than twenty thousand hopes.
Should faceted navigation pages be indexable? Rarely. Facets explode the URL space with near-duplicates. Index a small, curated set of facet combinations that pass the intent test (real search volume, real differentiation); canonicalise or noindex the rest. The default should be closed, with deliberate exceptions.
What's the first step if we already have a spammy programmatic section? Freeze generation, measure indexation and impressions per template, and noindex everything failing the tests — which usually recovers the domain's overall standing within a couple of crawl cycles. Then rebuild the dataset and templates properly, and resubmit slice by slice. Deletion first, always.
Programmatic SEO without producing landfill
The workshop version of programmatic SEO: dataset maturity gates, the four page archetypes that work, editorial review thresholds, and the build sequence we trust.
Alternative-to pages that don't smear anyone
Building a comparison-page programme that ranks and keeps trust: intent research, fair-comparison editorial rules, freshness ops, and killing fake objectivity.
Location pages that earn their rankings
Location pages fail when they're doorway-page spam: same template, swapped suburb. What makes a local page genuinely useful, and when fewer pages win.