Programmatic SEO is not against Google's rules. Pages built mainly to rank, with nothing new for the reader, are. Run five tests on each page before Google can index it.
People search for it. Its words do not fit any other industry. It holds three facts true only there.
You can click to it from your site. Everything else waits.
You have one good service page. A keyword tool says thousands of people a month search "AI for law firms." Real estate agents and accounting firms search too.
So you copy the page eleven times. You swap the industry name. Then you wait.
With AI, that whole plan takes one afternoon. That is exactly why Google wrote a rule about it.
Programmatic SEO means building many pages from one template and a table of data. Google does not ban it. It bans the shortcut: pages that exist mainly to rank and give the reader nothing new.
This guide gives you five tests to run on each page before Google sees it. Then it shows how to keep a big page set honest after launch. You will not have to read every page yourself.
A copy-and-swap page and a guarded page differ in four places
| Copy-and-swap page | Guarded page |
|---|---|
| Same body, new industry name | Body written around one buyer job |
| Facts that fit any business | Three or more facts true only for this industry |
| Reached only from search | Two clicks from a hub page |
| Indexed on day one | Noindexed until it passes five tests |
Anar's rule.
Programmatic SEO breaks Google's rules only when the pages exist to rank instead of to help. Two of Google's spam policies cover it.
Scaled content abuse is many pages made mainly to game rankings. Doorway abuse is many near-identical pages built to catch similar searches.
Notice what the rules ignore. Who wrote the page does not matter. Google says the policy applies to pages made by software, by people, or by both.
The page count does not matter either. Purpose and value do.
And Google keeps score. After it tightened these rules, it reported 45 percent less low-quality, unoriginal content in results. It had expected 40.
Our take: a rule with a public scoreboard is a bad rule to bet against.
Google edits its policy pages, so the exact wording sits in the dated box below. Read it once. The tests in this guide do not depend on the wording.
Google reported a bigger cut in low-quality results than it had planned
Source: Google, New ways we're tackling spammy, low-quality content on Search, update dated April 26, 2024.
Google's rule is about purpose, not about AI or page count

Screenshot of Google Search Central, Spam policies for Google web search (page last updated 2026-08-28), taken 2026-10-18. Pin text is Anar's commentary.
Five tests, run on each page before it is indexed. Demand: people search for this exact page. Swap: replace the industry name, and less than a third of the body still reads as true.
Own facts: at least three things on the page are true only for this industry. Path: a hub reaches the page in two clicks or fewer. Hold: any page that has not passed the first four stays noindexed.
After launch, read one page in ten, one in three after a failure, and stop the template after three failed samples in a row.
A doorway page is a page built to catch one search and offer nothing the main page does not. The fastest way to spot one is the swap test.
Take a finished page. Replace the industry name with a different industry. Read it again.
Any sentence that still reads as true fits both industries. So it says nothing about either one. "We help law firms save time with AI" works for plumbers too.
"Intake screens each caller for conflicts of interest before booking" does not. Plumbers have no conflicts check.
Our rule: ignore the menu, the form and the button. If more than a third of the body survives the swap, the page is not written yet.
How do so many sites end up with doorways? Same way every time.
How to build fifty doorway pages in four easy steps:
1) Write one page about your service.
2) Ask AI for fifty versions, one per industry.
3) Change the headline and the stock photo of two people shaking hands.
4) Publish all fifty on a Friday. Call it a content strategy.
That is not a page set. That is one page wearing fifty name tags.

Sentences that survive the swap say nothing about the reader's industry
| Survives the swap (cut it) | Fails the swap (keep it) |
|---|---|
| "We help law firms save hours every week with AI." | "Intake screens each caller for conflicts of interest before booking." |
| "Our team understands your unique challenges." | "Drafts start from the firm's own engagement letter." |
| "AI is changing how firms like yours work." | "Time entries are drafted for a lawyer to review, never sent unchecked." |
Example. Made-up lines from a law firm page.
Half the body survives the swap, so the page waits for a rewrite

Example page built for this article with a made-up brand
The Programmatic Guardrails is our five-test check, run on each page, never just on the template. A page enters Google's index only when it passes all five.
Test 1, demand: people search for this exact page, or a close version of it. No searches, no indexed page.
Test 2, swap: less than a third of the body survives a swap of the industry name.
Test 3, own facts: the page holds at least three facts true only for this industry, like a rule, a workflow or a number.
Can't name three? Then you do not know the industry well enough to publish yet.
For law and CPA firms, our article on where AI pays first in professional firms shows what own facts look like.
Test 4, path: a visitor can reach the page from a hub in two clicks or fewer. A hub is one page that links to every page in the set.
Google finds pages through links it can crawl, and so do people. Our hub-and-spoke guide shows the structure.
Test 5, hold: until a page passes the first four, it carries a noindex rule. Google's policy says to exclude scaled content like this from Search.
Noindex hides the page from Google. It does not delete it. Your sales team can still send it to a prospect.
Five tests, run on every page, not on the template
Anar's method.
Each test has a pass line you can check in minutes
| Test | Pass line | How to check |
|---|---|---|
| Demand | Monthly searches above zero for the page's phrase | Your keyword tool |
| Swap | Under a third of body sentences survive | Put a sibling's industry name in and read |
| Own facts | 3 or more, each with a source | List them in the data row before drafting |
| Path | 2 clicks or fewer from a hub | Click from the menu, not from search |
| Hold | Noindex until tests 1 to 4 pass | Check the page's robots meta tag |
Anar's method.
The demand test is where most page sets should shrink. A keyword tool lists every combination. Buyers do not search every combination.
The chart below is one keyword pull for "AI for [industry]." Law firms led by a wide margin. Several industries with big ad budgets, like med spas, showed no measurable searches.
Those buyers exist. They just do not search that way. A search page for them is a page for nobody.
There is a better way to slice the set. In Competing Against Luck, Clayton Christensen's team describes how one baking soda brand became many products. Each product matched one job: freshen the fridge, clean the carpet, deal with the cat litter.
Same brand. Same base product. A different job each time.
Our reading for search: give each page one job the buyer is hiring you for. "Screen new client calls for a law firm" is a job. "AI for lawyers in Tampa" is a keyword combination.
Pick jobs you can actually win with our guide to choosing searches that pay. Not sure your buyers use Google at all? Read where buyers actually ask the question.
Some industries search for AI help by name, and many do not
Monthly US searches for "AI for [industry]"
Example. Ahrefs keyword data, United States, pulled 2026-09-25. Med spas and plastic surgery showed no measurable volume.
Build pages for the jobs buyers have, not every keyword combination
| Keyword combination (skip) | Buyer job (build) |
|---|---|
| "AI for lawyers in Tampa" | Screen new client calls before a lawyer picks up |
| "AI for CPA firms near me" | Get client documents in before the tax deadline |
| "Best AI tool for dentists" | Fill same-day cancellations from the waitlist |
Example.
A page set is a small factory. Every bad page costs more the further it travels.
Andy Grove made this point about real factories in High Output Management. Catch a bad part when it arrives from the supplier, not after it reaches the customer.
For pages, the stages run in this order: the data row, the brief, the first drafts, the live page.
Check the data row first. Are the three own facts for each industry real, sourced and written down before AI writes a word? A wrong fact in the row becomes a wrong fact on every page that uses it.
Then read every word of the first ten pages from any new template. That is a gate. Nothing moves until it passes.
Most teams check last, after the pages are live. That is the priciest moment to find a typo. It is the worst moment to find a false legal claim.
A mistake costs more at every stage it survives
Anar's method, adapted from the lowest-value-stage rule in High Output Management.
Reading every page forever does not scale. Reading none is how a template rots.
The factory fix is called variable inspection. You check less after a long clean run, and more the moment problems appear.
Here is our version for page sets. Read one page in ten from each new batch, picked at random.
One failure? Read one in three from the next batch.
Three failed samples in a row? Stop the template. Fix it, then recheck every page made since the last clean sample.
Five clean batches in a row? Drop back to one in ten.
Why stop the whole template? Because templates fail quietly. A changed prompt, a broken data column or a model update can spoil every page made after it, and nothing looks broken.
One rule never relaxes. Any page that states a legal duty, a price, a dose or a tax rule gets read by a person before it is indexed.
A wrong claim there is not a ranking problem. It is a trust problem.
Read more pages after a failure, fewer after a clean run
| Situation | What a person reads |
|---|---|
| New template | Every one of the first 10 pages |
| Normal batch | 1 page in 10, picked at random |
| One failed sample | 1 page in 3 from the next batch |
| Three failed samples in a row | Stop the template, fix it, recheck every page since the last clean sample |
| Five clean batches in a row | Back to 1 page in 10 |
| Legal, price, health or tax claim | Every page, before indexing |
Anar's rule, built on variable inspection as described in High Output Management.
Read every page only where the template is new or a mistake is costly
Anar's rule.
Sampling works better when a script clears the obvious junk first. AI researchers face the same problem with generated training data.
In AI Engineering, Chip Huyen lists the simple filters the Self-Instruct researchers used on generated examples. They dropped repeats, examples too short or too long, outputs that only echoed their input, and one question given different answers.
Those filters were built for training data, not for Google. Our reading: they map almost one to one onto generated pages.
Thin. Flag any page with fewer than 300 words that appear on no sibling page.
Echo. Flag any page whose body mostly restates its own title.
Repeat. Flag any body sentence that appears on more than three pages.
Contradiction. Flag two pages that answer one question differently, like two prices for the same service.
The same book warns that too many examples from one template hurt variety. So split a big set across several templates, one per type of buyer job.
A script costs almost nothing to run on every page. Your attention is the scarce part. Save it for what no script can judge: whether the facts are true.
Four filters built for AI training data catch weak generated pages too
| Filter on generated training data | Same check on a page | Flag when |
|---|---|---|
| Too short or too long | Thin page | Fewer than 300 words that appear on no sibling page |
| Output repeats the input | Echo page | The body mostly restates the title |
| Repetitive examples | Shared sentences | A body sentence appears on more than 3 pages |
| Same instruction, different responses | Contradiction | Two pages answer one question differently |
Filters: Self-Instruct (Wang et al.), as summarized in AI Engineering by Chip Huyen. The page mapping and thresholds are Anar's.
Some thin page sets do rank, for a while. We cannot see inside Google, so we will not promise when or whether any site gets hit.
We can tell you what the bet is. Google's own guidance asks whether content looks mass-produced, so pages get little care. That question is about a whole site, not one page.
There is a plainer problem too. A buyer who lands on a page that could be about anyone does not call.
Even when a copy-and-swap page ranks, it does not sell. Ranking without selling is a vanity metric with a hosting bill.
AI is not the problem either. Google's note on AI content says AI helps with research and structure. Use it to draft, then add the facts only you know.
Stuck with old near-duplicates? Fold them into one page with Google's guide to duplicate URLs. Then show who wrote each page with our E-E-A-T checklist.
Indexed, but nobody clicks? The page probably passes the tests and still answers no real buyer job. Our page-two article covers what to change next.
A thin set is cheap to build and costly to undo
| 50 thin pages | 12 guarded pages |
|---|---|
| May rank for a while | Ranks on facts no other page has |
| Visitors see a page about anyone | Visitors see their own workflow |
| Puts the whole site's quality at risk | Nothing to hide from a reviewer |
| Fast to build, slow to clean up | Slower to build, nothing to clean up |
Anar's view.
Three common problems, and the fix for each
| Symptom | Cause | Fix |
|---|---|---|
| Indexed pages, almost no clicks | The page answers no real buyer job | Rewrite it around one job |
| Old near-duplicate pages already live | A copy-and-swap set from before | Merge them into one page |
| Every sample fails the swap test | The template carries the content, not the data | Move facts into the data row and cut shared text |
Anar's method.
The prompt below runs the Programmatic Guardrails on one page at a time. It asks for the page, one sibling page and your search numbers. It never invents a number or an industry fact.
This week: pick your three best industry pages. Run the prompt on each and fix every failure.
Then write your sampling rule down before the next batch ships. After that, check how AI assistants treat those pages with what AI engines actually cite.
Eleven copies of one page are still one page. Write eleven real pages, or write fewer.
Paste into your preferred AI with one page and one sibling page. It runs all five tests and tells you whether to index or hold.
Act as a careful SEO editor running the Programmatic Guardrails on one page built from a template. Ask me for these one at a time, with the example shown. If I paste everything at once, skip the questions. 1. The page text. (Example: my "AI for accounting firms" page.) 2. One sibling page from the same template. (Example: my "AI for law firms" page.) 3. Monthly searches for the page's main phrase, from my keyword tool. (Example: 1,900.) If I do not have it, mark demand UNKNOWN. Never guess a number. 4. How a visitor reaches the page by clicking. (Example: Home > Industries > Accounting.) Run five tests: 1. Demand: pass only if monthly searches are above zero. If I name a non-search use, such as sales sending the page, say: keep it, but out of the index. 2. Swap: put the sibling's industry name into my page. Ignore the menu, form and buttons. Quote every body sentence that still reads as true. Fail if more than a third survive. 3. Own facts: list facts true only for this industry. Fail under three. Mark each [CONFIRM] unless I gave a source. 4. Path: fail if the page is more than two clicks from a hub page. 5. Hold: if any test fails or is UNKNOWN, the page stays noindexed. Also flag: fewer than 300 words that do not appear on the sibling; a body that mostly repeats the title; any sentence shared word for word with the sibling; any claim about law, price, health or tax, which a person must check before indexing. Rules: never invent a fact, statistic or search number. If you can browse, check Google's current spam policies page and tell me if the scaled content or doorway wording changed. Output: A. Pass or fail for each test, with the evidence. B. The swap survivors, quoted. C. Up to five own-fact ideas, each marked [CONFIRM]. D. Index now or hold, plus the three fixes that matter most.
Bring one question from this article. We will tell you what we would do, whether or not you hire us.
Book a 15-Min Chat →