10 Guide

Programmatic SEO with AI

I shipped 58 pages from one route and one data file. Here is the method, including the decision that mattered more than any of the tooling.

Programmatic SEO generates many pages from one template and one dataset. It works when each page answers a distinct long-tail question that no single page currently answers well. It fails when it targets head terms, because those are already owned by product sites and listicles with far more authority. AI helps with the scaffolding, not with the part that decides whether you rank.

What I built

One dynamic route, one hub page, and a data file. 57 pages plus the hub, live on this site at /software. The shape:

  • 12 industries — roofing, construction, HVAC, plumbing, landscaping, dental, law, real estate, property management, accounting, med spa, gyms.
  • 8 systems — CRM, AI phone agent, client portal, quoting, workflow automation, AI email, booking, dashboards.
  • 32 curated combinations from that matrix, not all 96. More on why below.
  • 5 decision pages — custom vs off-the-shelf, cost, AI phone agent vs answering service, AI builders vs hiring, a build-vs-buy checklist.

Roughly 700 to 950 words each, every one with its own title, meta description, H1, lede, three body sections, two or three FAQs, and related links. Service, FAQPage and BreadcrumbList structured data on all of them. Every URL in the sitemap.

The decision that mattered

Before writing a single page I ran SERP checks on the obvious terms. “Roofing CRM” is owned by the product companies that sell roofing CRMs, plus listicles from publications with a decade of authority. I was not going to take that, and neither are you.

So the matrix targets the layer underneath: “custom CRM for roofing companies” rather than “roofing CRM.” Lower volume, much more specific intent, and crucially, a question that no existing page answers directly because the product sites cannot answer it. A company selling a roofing CRM cannot write an honest page about when you should build your own instead.

That is the whole game. Programmatic SEO is not a way to compete for terms you would otherwise lose. It is a way to be the first good answer to a specific question. If you cannot name a question where you would be the best answer, more pages will not fix it.

Finding the gap in what already ranks

I pulled apart the best-performing competitor page in the category. It ran about 1,100 words, carried more than 40 internal links, and covered the ground fairly well. It also had no FAQ structured data at all, and it never named a competing product.

Both of those are openings. Adding FAQ markup is mechanical. Naming the incumbent honestly is not, and it is the more valuable of the two: every one of my combination pages names the real software people already use in that industry — AccuLynx, ServiceTitan, Clio, AppFolio, Mindbody — and says plainly when that product is the better choice.

That feels counterintuitive on a page meant to sell custom software. It is the reason the pages are worth reading. A page that says “ServiceTitan is genuinely good, and here are the three situations where it stops fitting” is more persuasive than one that pretends the incumbent does not exist, and it is far more likely to be cited by an AI answer, which has no incentive to repeat marketing copy.

Where AI actually helps

TaskAIWhy
Expanding the matrixGoodMechanical combination work with consistent shape
Drafting section scaffoldingGoodKeeps structure uniform across 57 pages
Schema across many pagesGoodValid JSON-LD is a solved problem, and consistency matters
Meta descriptions at scaleFineNeeds a length check and a duplicate check afterwards
Choosing which combinations to buildBadRequires SERP evidence and a judgement about what you can win
The specific claim on each pageBadThis is first-hand knowledge; a model will produce plausible filler

The split is consistent: AI is strong at the work that is the same across every page and weak at the work that makes any individual page worth having. If you invert that, you get 57 pages of confident, well-formatted, interchangeable text, and interchangeable is the one thing that guarantees you will not rank.

Guardrails

Four rules I would keep on any build like this:

  1. Curate the matrix, do not multiply it. 12 industries times 8 systems is 96 pages. I built 32. The other 64 combinations either had no real search intent or no honest answer from me. Shipping them would have been padding.
  2. Every page needs one thing only it can say. If the industry-specific paragraph could be swapped with another page’s and nobody would notice, the page should not exist.
  3. Limit claims to what is true. Mine reference actual builds: a roofing voice agent, a contractor billing app, client portals, CRMs. No invented case studies, no fabricated metrics, no testimonials that did not happen. This is the rule I would break last.
  4. Keep it small enough to read. I hand-checked all 57. If a set is too big to read, it is too big to be accountable for.

The architecture

Deliberately boring, which is the point. One dynamic route resolves a slug against a data file and renders. The data is split into a few modules for readability, merged into a single exported array. The sitemap route imports the same array, so a page cannot exist without being in the sitemap, and cannot be in the sitemap without existing.

That single-source-of-truth detail is worth more than it sounds. The common failure in scaled content is drift: a page that is orphaned from the sitemap, or a sitemap entry that 404s and reports as a coverage error. If both read the same array, neither can happen.

The crawl path matters too. These pages are linked from the services section, not floating. A page nothing links to is a page that gets crawled late and treated as unimportant, no matter what your sitemap says.

Is this against Google’s guidelines?

Generating pages at scale is not itself a violation. What Google acts on is scaled content abuse: pages produced primarily to manipulate rankings, offering nothing a reader could not get elsewhere. The distinction is not the method, it is whether the output is worth reading.

A practical test: open two of your pages side by side. If a reader who needed one would be equally served by the other, you have built the thing Google penalises. If each answers a genuinely different question, you have built a content library that happens to share a template — which is what every documentation site on the internet is.

What I would do differently

  • Per-page social images. Mine share one. A generated image per page is a small job I skipped.
  • Decide the review cadence up front. Programmatic pages age. Named competitor products change their pricing and features, and a stale claim about a competitor is worse than no claim.
  • Instrument before publishing, not after. Knowing which combinations draw impressions is what tells you where to expand. That data only starts accumulating once the pages are live, so wire it up first.

FAQ

Is programmatic SEO against Google guidelines?

No. Scale is not the violation. Scaled content abuse is: pages built mainly to manipulate rankings with no real value. Each page needs to answer a distinct question with information the page next to it does not carry.

How many pages should I start with?

Few enough to hand-check every one. I shipped 57 plus a hub, which was small enough to read in full and large enough to learn from.

Should AI write the pages?

AI should write the scaffolding: structure, consistent sections, valid schema across many pages. You write the specific first-hand claim on each one, because that is the part that decides whether the page deserves to rank.

What makes a programmatic page fail?

Targeting head terms. Those are held by product sites and listicles with far more authority. Programmatic content wins on specific long-tail intent where no good single answer exists yet.

How long before it works?

Slower than you want. New URLs need to be discovered, crawled, and indexed before any of them can rank, and long-tail pages accumulate impressions gradually rather than arriving all at once. Judge the experiment in months, not weeks.

If you want this built properly rather than bulk-generated, tell me what you are working with. Related: GEO and AI search, Google AI Overviews, and the 58 pages themselves.