TL;DR
- →pSEO — generating hundreds to tens of thousands of pages from one template + a database — remains the single best zero-paid-ads acquisition channel for solo founders in 2026, but only if every page clears Google's post-March-2024 value floor.
- →The winning code-first stack: Next.js (App Router + ISR) + Supabase Postgres + Claude/GPT for content + Vercel + IndexNow/Indexing API + Search Console API. No-code teams replicate ~80% with Webflow CMS + Airtable + Whalesync + Clay.
- →Your first 100 customers won't come from 10,000 pages. They come from 100–300 ruthlessly intent-matched pages, one winning template, one free embedded tool per page, and a hub-and-spoke link graph. Ship 100, get them indexed, kill the dead 30%, then scale.
Section 1
What pSEO Actually Is (and When NOT to Use It)
The mental model: URL pattern + Template + Dataset = N pages.
| Company | URL Pattern | Pages | Est. Monthly Organic |
|---|---|---|---|
| Wise | /currency-converter/{from}-to-{to}-rate | ~260,000 | ~60M (~90% from pSEO) |
| Zapier | /apps/{app}/integrations/{app2} | 50,000+ | 5.8M |
| Canva | /templates/{type}, /create/{thing}, /{locale}/... | ~720,000 | ~38M pSEO / 270M total |
| Nomad List | /in/{city}, /cost-of-living-in-{city} | ~10,000+ | ~50K |
| BeamJobs | /resumes/{job}-resume-examples | 2,000+ | ~557K |
| Wise (SWIFT) | /swift-codes/{bank}/{country} | 120,000+ | 2M+ |
The decision framework — when NOT to use pSEO
Don't do pSEO if
• No data moat — your dataset is identical to 50 competitors'.
• No clear keyword pattern with combined long-tail volume.
• Your product is a brand/awareness play (luxury, $250K ACV deals, founder-led).
• You cannot offer interactivity, real-time data, UGC, or proprietary insight on each page.
Do pSEO if
• You have structured product data (integrations, templates, categories, locations, jobs, codes, comparisons).
• Long-tail patterns exist — search '[head term] [modifier]' returns thousands of low-volume queries.
• Each page can deliver something unique: live calculator, downloadable artifact, real reviews, embedded tool.
Section 2
The pSEO Mindset: Templates, Variables, and the Value Floor
The mindset shift: stop thinking "articles." Start thinking content units — composable Lego blocks of static + dynamic content driven by variables.
{static intro} + {dynamic data table} + {AI commentary} + {static methodology} + {dynamic FAQ} + {static CTA}The Value Floor (post-March-2024 doctrine)
Google's March 2024 core update + spam policies introduced three killers: scaled content abuse, expired domain abuse, and site reputation abuse ("parasite SEO"). Per Google's official Search Central Blog (April 26, 2024), the March 2024 core update produced "45% less low-quality, unoriginal content in search results, versus the 40% improvement we expected." The August 2025 spam update was a separate, narrower enforcement action targeting all three abuses.
Practical engineering rule: each page should hit 3 of 5: live data, embedded interactive tool, UGC/reviews, original aggregation/analysis, unique media (chart, image, video).
Section 3
Keyword Research for pSEO: Scalable Patterns
You're not looking for keywords. You're looking for patterns with combined demand.
| Pattern | Example | Best for |
|---|---|---|
| [tool] alternatives | Notion alternatives | B2B SaaS |
| [A] vs [B] | Asana vs Monday | B2B SaaS |
| [tool] integrations / [A]+[B] integration | Slack Salesforce integration | B2B integration plays |
| [city] + [service] | SEO agency in Austin | Local / marketplace |
| [role / industry] + tool | CRM for real estate | Vertical SaaS |
| convert [X] to [Y] | convert PDF to Word | Utilities, fintech |
| [number] best [thing] | 10 best invoicing tools for freelancers | Affiliate / comparison |
| [job] resume example | Marketing manager resume example | Career tools |
| [product] templates | Pitch deck templates | Productivity SaaS |
| how to [verb] in [tool] | Create custom field in Salesforce | Demo SEO |
Validation workflow (1 hour, free-ish)
- Pick a pattern. List 50 plausible variable values.
- Drop 10 into Google Keyword Planner (free with Ads account).
- Drop 5 into Ahrefs Free Keyword Generator or Keywords Everywhere (~$2.50/mo).
- Search 5 queries manually in Google. If the top 10 is 100% giants (Reddit, Wikipedia, G2), walk away. You want SERPs with a mix of mid-tier sites.
- Glimpse (free Chrome extension on Google Trends) for trend signal.
- AnswerThePublic for related question patterns → use as FAQ blocks.
- Google Search Console — Performance > Queries filtered to >5 impressions, sort by impressions. Patterns often hide in your existing data.
Competitor reverse-engineering
In Ahrefs/Semrush: enter a successful pSEO competitor → Top pages → sort by traffic → look for URL patterns repeating (e.g., /apps/*/integrations/* for Zapier). Copy the pattern, not the keywords.
Section 4
Database / Data Layer Setup
Supabase + Postgres schema (code-first)
create table pages (
id uuid primary key default gen_random_uuid(),
slug text unique not null, -- 'usd-to-eur', 'kl1234-ams-lhr-2026-02-15'
template_type text not null, -- 'integration' | 'comparison' | 'currency' | 'city'
primary_keyword text not null,
variables jsonb not null, -- { from:'USD', to:'EUR', live_rate:1.08 }
ai_content jsonb, -- { intro, commentary, faq }
meta_title text,
meta_description text,
status text default 'draft', -- draft | published | noindex | killed
last_data_refresh timestamptz,
published_at timestamptz,
impressions_28d int default 0,
clicks_28d int default 0,
position_28d numeric,
created_at timestamptz default now()
);
create index on pages (template_type, status);
create index on pages (last_data_refresh);
create index on pages using gin (variables);
create table page_links (
source_id uuid references pages(id),
target_id uuid references pages(id),
link_type text, -- 'related' | 'parent_hub' | 'comparison'
score numeric,
primary key (source_id, target_id)
);Data sourcing playbook
| Source | When to use | Tools |
|---|---|---|
| Internal product data | Best moat — your integrations, templates, users | Direct DB pull |
| Public APIs | Currency, weather, jobs, flights, stock | API keys + cron |
| Public datasets | Cities, ZIP codes, ISO codes, professions | Kaggle, data.gov, GitHub |
| Web scraping | Competitor specs, public reviews | Playwright + Python, Apify, Clay |
| UGC | Reviews, comments, community posts | Thin submission form via Tally |
| Manual + AI enrichment | When precision matters | Clay's Claygent, or Python + Claude script |
Proxies for pSEO Data Collection at Scale
Every pSEO pipeline that relies on web scraping (SERP data, competitor specs, pricing pages, public reviews) hits a wall fast without reliable proxies. IP bans, CAPTCHAs, and rate limits are the silent killers of programmatic data pipelines. A bad proxy layer doesn’t just slow you down; it poisons your dataset with incomplete or stale records.
Proxy-Seller provides residential, ISP, and datacenter proxies built specifically for high-volume, automation-heavy workflows. These are the exact workloads that power pSEO data collection at scale.
Which proxy type for which pSEO task
Not all proxies are the same. Choosing the wrong type is the most common mistake in pSEO data pipelines.
| Proxy type | Best pSEO use case | Detection risk | Speed |
|---|---|---|---|
| Residential | SERP scraping, Google ranking checks, competitor page scraping | Very low | Medium |
| ISP (static residential) | Long-running crawls, content pipelines, keyword tracking | Low | High |
| Datacenter | Internal API calls, non-protected public datasets, bulk fetch | Medium | Very high |
Integrating Proxy-Seller with your pSEO stack
With Playwright (Python)
If you’re using Playwright for scraping competitor pages or SERP results, drop in your Proxy-Seller credentials like this:
# install: pip install playwright
from playwright.async_api import async_playwright
PROXY = {
"server": "http://proxy-seller.com:PORT",
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
}
async def scrape_serp(keyword: str):
async with async_playwright() as p:
browser = await p.chromium.launch(proxy=PROXY, headless=True)
page = await browser.new_page()
await page.goto(f"https://www.google.com/search?q={keyword}")
results = await page.query_selector_all("div.g")
return [await r.inner_text() for r in results[:10]]With Python requests + rotating proxies
For bulk keyword data collection (non-JS pages), rotating residential proxies keep you undetected across thousands of requests:
import requests
import random
# Get your proxy list from the Proxy-Seller dashboard
proxies_list = [
"http://user:pass@residential1.proxy-seller.com:PORT",
"http://user:pass@residential2.proxy-seller.com:PORT",
# add more...
]
def fetch_with_proxy(url: str) -> str:
proxy = random.choice(proxies_list)
try:
r = requests.get(
url,
proxies={"http": proxy, "https": proxy},
timeout=10,
)
return r.text
except Exception as e:
print(f"Proxy failed: {e}, rotating...")
return fetch_with_proxy(url) # retry with nextTips for pSEO data pipelines
- Use residential proxies for Google SERP scraping. Datacenter IPs are blocked almost immediately.
- Rotate IPs per request, not per session, for large-scale keyword monitoring.
- Use ISP proxies for long-running cron jobs that need consistent IPs (e.g. nightly ranking checks).
- Match proxy geo to target market. Scraping US SERPs? Use US residential IPs.
- Add retry logic with exponential backoff. Even good proxies fail occasionally at scale.
Get started with Proxy-Seller
Residential, ISP, and datacenter proxies. No setup fee, pay-as-you-go plans suited for solo pSEO builders.
AVINASHSection 5
Template Design and Content Architecture
The 7-block template (passes the Value Floor)
- H1 with the exact keyword.
- Live data block (non-negotiable) — the calculator, the price, the integration spec, the map.
- Short intent-matched intro (50–100 words, AI-generated with constraints, fact-checked).
- Comparison / data table (dynamic, e.g., bank vs. Wise fees, feature-by-feature).
- 2–4 unique content sections (AI-generated with proprietary data injected via RAG).
- FAQ block (3–6 Qs, mixed dynamic + static, with FAQPage schema).
- CTA block — embedded signup, free tool, downloadable asset.
Static vs dynamic ratio
Section 6
Tech Stack and Tooling
The reference architecture
┌─────────────────────────────────────────────────────┐
│ Data Sources │
│ - Internal Postgres (product data) │
│ - External APIs (rates, weather, jobs) │
│ - Scrapers (Python + Playwright on cron) │
└─────────────────────────┬───────────────────────────┘
│ nightly cron
▼
┌─────────────────────────────────────────────────────┐
│ Supabase Postgres (pages, page_links, raw_data) │
│ + pgvector for RAG embeddings + Row-Level Security│
└──────────┬──────────────────────────┬───────────────┘
│ on-publish trigger │ ISR fetch
▼ ▼
┌──────────────────────┐ ┌──────────────────────────┐
│ Content Generation │ │ Next.js App Router │
│ - Claude API │ │ - /[template]/[slug] │
│ - Prompt + RAG │ │ - generateStaticParams() │
│ - Quality scorer │ │ - revalidate: 86400 │
└──────────┬───────────┘ │ - dynamic sitemap.xml │
│ writes back └─────────┬────────────────┘
▼ │
pages.ai_content │ deploy
▼
┌──────────────────────────────┐
│ Vercel Edge (+ Cloudflare) │
└─────────┬────────────────────┘
▼
┌─────────────────────────────────────┐
│ IndexNow + Google Indexing API │
│ + GSC API (perf metrics back) │
└─────────────────────────────────────┘Next.js dynamic route with ISR (minimum viable pSEO)
// app/[template]/[slug]/page.tsx
import { createClient } from '@supabase/supabase-js'
import { notFound } from 'next/navigation'
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_KEY!
)
export const revalidate = 86400 // 24h ISR
export async function generateStaticParams() {
const { data } = await supabase
.from('pages')
.select('template_type, slug')
.eq('status', 'published')
.order('impressions_28d', { ascending: false })
.limit(1000)
return data?.map(p => ({ template: p.template_type, slug: p.slug })) ?? []
}
export async function generateMetadata({ params }) {
const { data } = await supabase
.from('pages')
.select('meta_title, meta_description, slug')
.eq('slug', params.slug)
.single()
if (!data) return {}
return {
title: data.meta_title,
description: data.meta_description,
alternates: { canonical: `https://yoursite.com/${params.template}/${data.slug}` },
}
}
export default async function Page({ params }) {
const { data: page } = await supabase
.from('pages').select('*')
.eq('slug', params.slug).eq('status', 'published').single()
if (!page) notFound()
return (
<article>
<Hero data={page.variables} />
<LiveTool data={page.variables} />
<Intro html={page.ai_content.intro} />
<DataTable rows={page.variables.comparison_rows} />
<Commentary html={page.ai_content.commentary} />
<FAQ items={page.ai_content.faq} />
<CTA />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(buildSchema(page)) }}
/>
</article>
)
}Dynamic sitemap (segmented)
// app/sitemap.ts
import type { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const { data } = await supabase
.from('pages').select('slug, template_type, published_at')
.eq('status', 'published')
return data!.map(p => ({
url: `https://yoursite.com/${p.template_type}/${p.slug}`,
lastModified: p.published_at,
changeFrequency: 'weekly',
priority: 0.7,
}))
}sitemap-{template}.xml per template + a sitemap index. GSC will tell you which template is the indexing problem.Open-source starter templates
- •agamm/pseo-next — github.com/agamm/pseo-next. Next.js 13 + Prisma + Postgres + ISR + next-sitemap + JSON-LD. Demonstrates the exact
/{variant}/{slug}pattern with Playwright E2E. - •vercel/next.js examples/with-supabase — Official starter. Bootstrap with
npx create-next-app --example with-supabase. - •FlyClaim.AI architecture writeup (Kamal Rifai, DEV.to). Documents a 5,000-page Next.js + Supabase + Claude + Make.com build on free tiers.
No-code alternatives
| Stack | Cost | Capacity | Best for |
|---|---|---|---|
| Webflow CMS + Airtable + Whalesync | ~$60–200/mo | ~10K items | Design-heavy B2C |
| Framer CMS | ~$25/mo | ~1K items | Landing pages, MVPs |
| WordPress + Rank Math + Python uploader | ~$15/mo + hosting | 100K+ | Content sites |
| Astro + Airtable + Node script | ~$0 + Cloudflare | Unlimited (static) | Devs who prefer SSGs |
Section 7
Content Generation at Scale (Without Triggering Spam Policies)
The RAG-powered generation pipeline
# generate.py — runs as cron via GitHub Actions or Supabase Edge Function
import os, json
from supabase import create_client
from anthropic import Anthropic
sb = create_client(os.environ["SUPABASE_URL"], os.environ["SUPABASE_KEY"])
claude = Anthropic()
def build_context(page):
"""Pull facts NO competitor has access to."""
return {
"live_data": fetch_live_metrics(page["variables"]),
"internal_usage_stats": query_product_db(page["variables"]),
"competitor_specs": page["variables"].get("comparison_rows"),
"user_reviews_excerpts": fetch_recent_reviews(page["primary_keyword"]),
}
PROMPT = """You are writing one section of a programmatic landing page.
KEYWORD: {keyword}
TEMPLATE: {template_type}
VARIABLES: {variables}
PROPRIETARY CONTEXT (use this — do not invent):
{context}
Constraints:
- 120–180 words for intro, 250–400 for commentary, 4 Q&A pairs for faq.
- Cite ≥2 specific numbers from the proprietary context.
- Do NOT use: "in today's fast-paced world", "in the digital age",
"look no further", "game-changer".
- 9th-grade reading level. Short sentences.
- If you cannot say something specific and useful, output SKIP.
Return JSON: { "intro": "...", "commentary": "...", "faq": [...] }
"""
def quality_score(content, ctx) -> float:
score = 0
for n in ctx.get("live_data", {}).values():
if str(n) in content: score += 1
for banned in ["fast-paced", "in today's", "game-changer"]:
if banned in content.lower(): score -= 1
return score
for page in sb.table("pages").select("*").eq("status", "draft").execute().data:
ctx = build_context(page)
msg = claude.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[{"role": "user", "content": PROMPT.format(
keyword=page["primary_keyword"],
template_type=page["template_type"],
variables=json.dumps(page["variables"]),
context=json.dumps(ctx),
)}],
)
content = json.loads(msg.content[0].text)
if quality_score(json.dumps(content), ctx) >= 2:
sb.table("pages").update({
"ai_content": content, "status": "published",
"published_at": "now()"
}).eq("id", page["id"]).execute()
else:
sb.table("pages").update({"status": "needs_review"}).eq("id", page["id"]).execute()AI tooling shortlist (May 2026 pricing)
| Tool | Use | Pricing |
|---|---|---|
| Claude API (Anthropic) | Best long-form quality. Haiku 4.5 / Sonnet 4.6 / Opus 4.7 | $1/$5 · $3/$15 · $5/$25 per 1M tokens |
| GPT-4o / GPT-5 (OpenAI) | Versatile, faster | Comparable tier |
| Gemini 2.5 Pro | Long-context, multimodal | Comparable tier |
| Byword | Bulk pSEO generation with custom datasets | From ~$39/mo (credit-based) |
| Frase | Research + briefs + AI write + GEO scoring | From $45/mo |
| SurferSEO | Content scoring vs SERP NLP | $49–$99+/mo |
| Letterdrop | Programmatic + approval workflows + auto internal linking | $500+/mo (team) |
| Clay + Claygent | Data enrichment + per-row AI research | From $150/mo |
Section 8
Internal Linking at Scale
Zapier's hub-and-spoke architecture
[/apps] (mega-hub)
│
┌───────┴───────┬───────────┬──────────┐
▼ ▼ ▼ ▼
[/apps/slack] [/apps/notion] [/apps/gmail] ... ← ~7,000 app hubs
│
├── /apps/slack/integrations/notion ← spokes (long-tail pages)
├── /apps/slack/integrations/gmail
└── ...Automated related-page algorithm (SQL)
insert into page_links (source_id, target_id, link_type, score)
select
p1.id, p2.id, 'related',
jsonb_array_length(
(select jsonb_agg(k) from jsonb_object_keys(p1.variables) k
where k in (select jsonb_object_keys(p2.variables)))
)::numeric
from pages p1
cross join lateral (
select id, variables from pages p2
where p2.template_type = p1.template_type
and p2.id != p1.id and p2.status = 'published'
order by random() limit 8
) p2
on conflict do nothing;For semantic relatedness: store pgvector embeddings of each page's primary content, use cosine similarity. Free with Supabase pgvector.
Section 9
Indexing and Crawlability for Thousands of Pages
The 6-step indexing protocol
- Sitemap segmentation — one sitemap per template, max 50,000 URLs per file, plus a sitemap index. Submit each separately in GSC to diagnose per-template indexing rates.
- robots.txt — allow /sitemap*.xml and page paths; block /api/, /admin/, search result URLs.
- IndexNow — supported by Bing/Yandex/Seznam. Generate UUID key, host at /{key}.txt, POST URLs to api.indexnow.org/indexnow. Up to 10,000 URLs per request.
- Google Indexing API — officially for JobPosting and BroadcastEvent schema; in practice broadly used. Default 200/day, requestable to 2,000+. Treat as a grey-hat-but-effective accelerator for top 200 pages.
- Manual GSC URL Inspection → Request Indexing for top 10–30 highest-value pages.
- 5–20 high-quality backlinks to hub pages (HN, ProductHunt, Indie Hackers, niche newsletters). Without backlinks, sitemaps alone get ignored on a new domain.
Index-status monitoring at scale (GSC API → Supabase)
// sync-gsc.ts — nightly cron
import { google } from 'googleapis'
const sc = google.searchconsole('v1')
const res = await sc.searchanalytics.query({
siteUrl: 'sc-domain:yoursite.com',
requestBody: {
startDate: '2026-04-01', endDate: '2026-04-28',
dimensions: ['page'], rowLimit: 25000,
},
auth: oauthClient,
})
for (const row of res.data.rows ?? []) {
await supabase.from('pages').update({
impressions_28d: row.impressions,
clicks_28d: row.clicks,
position_28d: row.position,
}).eq('slug', extractSlug(row.keys![0]))
}Find dead pages
select slug, template_type from pages
where published_at < now() - interval '90 days'
and impressions_28d < 10 and clicks_28d = 0
order by template_type;
-- These → noindex or kill.Section 10
Conversion Optimization on pSEO Pages
The best pSEO pages aren't articles — they're product surfaces disguised as content.
| Play | Examples | When |
|---|---|---|
| Embedded free tool | Wise converter, Canva editor in-page | B2C, product usable in <30s |
| Lead magnet | Notion template downloads, Webflow cloneables | B2B with email gates |
| In-page interactive demo | Storylane demos on every pSEO page | B2B demo-led growth |
| Free trial with URL-param prefill | /usd-to-eur → prefill signup with USD/EUR | Self-serve SaaS |
| Email capture above the fold | Nomad List's join-Slack overlay | Community products |
| Comparison upgrade | 'We rank #4 here, but for X use case…' | B2B comparison pages |
Section 11
Measuring pSEO Performance
The 8 metrics that matter
| Metric | Definition | Target |
|---|---|---|
| Pages submitted vs indexed | Per template | >70% indexed within 90 days |
| Average position by template | Across the template's URLs | Kill templates averaging >30 |
| Clicks per indexed page | Total clicks / indexed pages | Below 0.5 = thin/wrong intent |
| CTR vs SERP position benchmark | searchanalytics.query with dimensions=['query','page'] | Match or exceed your category benchmark |
| Time on page + scroll depth | GA4 / PostHog | Within 30% of manual content |
| Conversion rate per template | Trials/signups / sessions | Compare across templates; prune low ones |
| CAC per template | (your time + AI tokens) ÷ paid customers | Below paid-channel CAC |
| Crawl budget consumption | GSC > Crawl Stats | Googlebot hitting >10% of URLs/month |
Weekly iteration loop
[GSC API sync → tag winners/losers]
→ [Top winners → 2x that pattern with more variables]
→ [Impressions but 0 clicks → rewrite title/meta]
→ [0 impressions after 90 days → noindex or kill]
→ [<30% indexing per template → improve template depth, resubmit]status = 'noindex', remove from sitemap. Index hygiene is the #1 underrated pSEO lever post-2024.Section 12
Real Case Studies (With Hard Data)
Pieter Levels — Nomad List + Remote OK
- •Solo founder, PHP + jQuery + SQLite. Each city filter combination generates an indexable URL.
- •~50,000 monthly visits to Nomad List from pSEO city pages (Practical Programmatic).
- •Nomad List hit $5.3M revenue in November 2024 per GetLatka, up from $704K in November 2023.
- •Remote OK ~$2M ARR. Combined Levels personal income: ~$3M/yr.
- •Lesson: a solo dev with PHP + a CSV of cities + crowdsourced data built a multi-million-dollar product. Speed > stack.
Zapier
- •50,000+ integration pages, ~5.8M monthly organic visits.
- •URL patterns: /apps/{app} (hub) and /apps/{app1}/integrations/{app2} (spoke).
- •Over 90% of visits from non-brand searches. Blog contributes ~67% of organic.
- •Flywheel: more apps join → more pages → more traffic → more apps want to join.
Wise (TransferWise)
- •Custom headless CMS 'Lienzo.' From 7,000 pages in 2015 to 1.7M indexed pages across 20 markets and 10 languages in under 24 months.
- •~90% of organic traffic from pSEO. Currency converter pages alone ~43.5M visits/mo. SWIFT code pages ~2M.
- •Published 213,746 new pages in 2024 — 173,781 → 387,527 URLs, 15.8M → 30.5M visitors.
- •They run no link-building — pure content velocity + brand authority.
Canva
- •24,000 templated English pages × ~30 locales ≈ 720,000 URLs. ~38M monthly pSEO visits (270M total).
- •Three page types: /templates/* (13.1M visits), /create/* (6.4M), /features/* (3.2M).
- •The AI image generator page (launched during the ChatGPT wave) now ranks #1 and drives ~340K visits/month.
G2 / Capterra — the cautionary tale
- •Pure pSEO businesses. G2 dominates '{software A} vs {software B}' SERPs with auto-generated comparison pages.
- •Per Ahrefs' Sept 9 2024 study by Ryan Law, G2 lost 65.74% of estimated monthly organic traffic from August 2023 to August 2024 — 4,397,226 → 1,506,545 monthly visits.
- •Even mature pSEO sites get hammered when templates are too text-heavy and add no unique value beyond what's in the SERP itself.
BeamJobs
- •~2,000+ profession-specific resume example pages. ~557K monthly traffic.
- •Solo-founder-led. Stack: WordPress + a custom Python tool to batch-publish 50 articles at once with original content layered on top.
Storylane (B2B SaaS demo-led pSEO)
- •Madhav Bhandari, Head of Marketing, on Exit Five podcast (Oct 2024): 25,000 → 220,000+ monthly visitors in 6 months via 1,500+ programmatically-generated demo-led tutorial pages.
- •Pattern: 'how to {do thing} in {tool}.'
- •1.2% signup conversion from pSEO vs 0.8% from blogs, traffic 10x higher. 'Tripled PLG revenue.'
Angel Match / Investor Hunt (Rashid Khasanov)
- •Bootstrapped portfolio at ~$42K MRR (Angel Match $37.3K + Investor Hunt $4.5K + smaller bets).
- •Stack: Node.js + DigitalOcean + Stripe + 110K-row angel/VC database.
- •'Angel Match was stuck at ~$5k MRR for a long time. It turned out we were deleting the pages every once in a while when we were making updates on the app. So the website couldn't compound in search traffic.'
- •Next bet: 300K journalist pages on Journalist Hunt, already generating ~100 organic clicks/day.
Senja.io
- •Two-person team (Wilson Wilson + Olly Meakings). $0 → $83K MRR / $1M ARR in 3 years 9 months, 3,000 paying customers, 100% bootstrapped.
- •Public testimonial pages = built-in pSEO surface.
- •Growth driver: SEO + PLG, in that order.
StandOut CV
- •Founder posted on Indie Hackers: $40K MRR purely from SEO.
- •'Built programmatic publishing: I had a Python tool made to auto-generate repetitive CV example structures (doctor, nurse, accountant etc.), then batch upload 50 articles at once, so writers could add original content.'
- •1,000+ articles, mostly long-form top-of-funnel.
FlyClaim.AI (technical proof point)
- •5,000+ auto-generated pages on Next.js 16 + Supabase + Claude.
- •5,700 URLs across 5 languages from 1,134 underlying flights.
- •No revenue disclosed — the proof is the infrastructure cost of pSEO has collapsed to zero.
Section 13
The 10 Mistakes That Kill pSEO
- 1Thin templates (keyword + boilerplate). → Hit the Value Floor: live data + UGC/proprietary insight.
- 2Index bloat — 50K published, 45K unindexed, dragging the domain. → Aggressive noindex after 90 days of zero impressions.
- 3Duplicate content across templates — 'alternatives' 80% identical to 'comparison.' → Distinct templates with different structures and angles.
- 4AI hallucination at scale — Claude invents an integration that doesn't exist. → Ground every claim in RAG context; quality scorer rejects pages without ≥2 verifiable facts.
- 5Wrong intent matching — 'best X' pages where SERP wants tutorials. → SERP-check every template before scaling >50 pages.
- 6Site reputation abuse — letting a third-party affiliate program publish on your domain. → Don't outsource your content surface.
- 7Scaled content abuse — pure rephrased AI with no data substrate. → If your page would not exist without AI, it's at risk.
- 8Building yourself in as #1 in your own 'best [category]' pages without disclosure. SpamBrain 2025 demotes this. → Rank honestly; disclose bias.
- 9No backlinks. → Get 5–20 high-quality links to hub pages before scaling beyond 200 pages.
- 10No pruning loop. → Quarterly pruning calendar; treat dead pages as liabilities.
Section 14
pSEO for B2C Self-Serve Products
B2C = high volume, low price ($5–$50/mo or one-time), fast decision cycle. The playbook:
- Volume play — 5,000–50,000 pages is the right scale (if value floor holds).
- Free embedded tools as primary CTA — calculator/generator/converter delivering value in <10 seconds on the page (Wise, Canva, BeamJobs).
- Viral loops — every output the user creates contains "Made with [your product]" — Canva templates, Senja testimonial walls, Storylane demos. The pSEO page acquires; the artifact distributes.
- Optimize for transactional verbs — create logo, make resume, generate password, convert pdf to word.
- Locale expansion is the easiest 5x — Canva added 15.5M visits/mo by translating templates into 30 locales. Use subdirectories (/es/, /fr/) with hreflang.
- Klaviyo or Customer.io for the email funnel after capture.
Section 15
pSEO for B2B SaaS
B2B = lower volume, higher ACV ($50–$5,000/mo), longer cycle, research-driven.
| Template | Pattern | Why it works |
|---|---|---|
| Alternatives | {Competitor} alternatives | High commercial intent — buyer is shopping |
| Comparisons | {You} vs {Competitor} | Bottom-funnel — buyer is deciding |
| Integrations | {You} {Other} integration | Captures buyers in the partner ecosystem |
| Use cases | {Tool} for {industry/role} | Vertical positioning |
| Demo SEO | How to {do thing} in {competitor tool} | Captures users mid-task; show your product as the better way |
| ROI calculators | {Tool} ROI calculator | Sales enablement + SEO asset |
| Industry pages | {Product} for {industry} | 'CRM for real estate' |
| Template libraries | {Asset} template | Lead magnets |
Section 16
The Full pSEO Operating System
Discovery
- •Reverse-engineer 3 pSEO competitors in Ahrefs.
- •List 5 candidate patterns with volume validation.
- •Pick ONE pattern to pilot.
- •SERP-check 5 queries manually — if top 10 is 100% giants, walk away.
Data
- •Source dataset (API/scrape/manual). 50–200 rows minimum.
- •Create Supabase tables. Populate. Validate row-by-row.
- •Verify uniqueness — would each row produce a meaningfully different page?
Template
- •Build Next.js dynamic route + ISR.
- •Implement all 7 blocks (H1, live data, intro, table, commentary, FAQ, CTA).
- •Add JSON-LD schema (SoftwareApplication / FAQPage / BreadcrumbList).
- •Write & test master AI prompt with 5 sample rows.
Pilot (100 pages)
- •Generate 100 pages. Manually review EVERY one.
- •Submit sitemap. IndexNow + Google Indexing API.
- •Get 3–5 backlinks (HN, IH, ProductHunt, niche newsletter).
- •Document baseline metrics before traffic arrives.
Measure
- •Daily GSC API sync to Supabase.
- •Day 60: pages with impressions but no clicks → rewrite title.
- •Day 90: pages with 0 impressions → noindex.
- •Tag winning patterns; document what made them win.
Scale
- •If indexing >70% and avg position <30 → scale to 1,000s.
- •Add second template targeting adjacent pattern.
- •Build hub-and-spoke link graph.
- •Set quarterly pruning calendar.
JSON-LD examples (drop-in for every pSEO page)
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Acme CRM for Real Estate",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"offers": { "@type": "Offer", "price": "49", "priceCurrency": "USD" },
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "286" }
}{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How do I convert USD to EUR using Wise?",
"acceptedAnswer": { "@type": "Answer",
"text": "Enter the USD amount in the converter; Wise uses the mid-market rate plus a transparent fee shown before you confirm."
}
}]
}{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Apps", "item": "https://yoursite.com/apps" },
{ "@type": "ListItem", "position": 2, "name": "Slack", "item": "https://yoursite.com/apps/slack" },
{ "@type": "ListItem", "position": 3, "name": "Notion Integration", "item": "https://yoursite.com/apps/slack/integrations/notion" }
]
}Section 17
System Prompt: Programmatic SEO + AI Automation (Copy-Paste)
Drop the prompt below into ChatGPT, Claude, Gemini, or any system that accepts a system prompt. It primes the model to think and answer like a Google Search Quality Engineer × pSEO architect × AI automation operator — so every reply is architecture-level, scalable to 10K–10M URLs, and grounded in Crawl → Render → Index → Rank → Convert. Best for: generating pSEO pages at scale for any Product, B2B, or B2C use case.
"System Loaded." — then send your actual task (e.g., "design the URL pattern and dataset schema for 50,000 city × service pages").# PROGRAMMATIC SEO + AI AUTOMATION SYSTEM PROMPT
> **Best for:** Generating pSEO pages at scale for any Product, B2B, or B2C use case
---
## System Prompt
You are now a **Full-Stack Technical SEO Engineer + Programmatic SEO Architect + AI Automation Builder + Search Systems Engineer + Performance Specialist + Growth Technologist**.
You operate with the mindset, tooling, engineering fluency, diagnostic depth, and system-level thinking of a **Google Search Quality Engineer**, combined with the creativity and execution velocity of a **pSEO growth hacker** and an **AI-native automation operator**.
---
## Core Operating Rules
Every answer you provide must be:
- Deeply technical and architecture-level
- System-driven and template-first
- Scalable to **10,000–10,000,000 URLs**
- Grounded in real-world search engine behavior
- Optimized for: **Crawl → Render → Index → Rank → Convert**
- Automation-ready and reproducible in engineering environments
You must **NEVER** provide:
- Generic SEO tips
- Surface-level suggestions
- Beginner explanations
- Content-writer-style answers
---
## Section 1 — Technical SEO Engineering
### 1.1 Robots.txt Engineering
- Wildcard handling and multi-environment rules (dev/stage/prod)
- Blocking faceted URLs, infinite scroll endpoints, private directories
- Crawl-delay logic and user-agent prioritization
- Emergency deindexation protocols
### 1.2 XML Sitemap Systems
- Dynamic generation from database
- Segmented sitemaps (products, categories, locations, pSEO templates)
- Index file orchestration and lastmod versioning strategies
- Video, image, hreflang sitemaps
- Sitemap throttling to control crawl behavior
### 1.3 Indexation Management
- Canonical clusters and noindex governance systems
- Soft 404 detection and paginated content rules
- Parameter handling via GSC and canonical logic
- Merging, pruning, and consolidating page sets
- Index bloat prevention workflows
### 1.4 Large-Scale Site Architecture
- Designing URL structures for 10k–10M pages
- Routing logic for pSEO templates
- Semantic folder hierarchies
- Deduplication of template variants
- Content segmentation by intent
### 1.5 Internal Linking Architecture
- Algorithmic internal linking engines
- Link scoring systems with contextual anchors from embeddings
- Superhubs and cluster hubs
- Anti-orphan enforcement rules
- Dynamic "related content" models powered by vectors
### 1.6 Rendering & JavaScript SEO
- SSR / SSG / ISR evaluation
- Hydration mismatch debugging
- Render-blocking script elimination
- Dynamic content parity enforcement
- Shadow DOM and lazy-loaded UI troubleshooting
### 1.7 Core Web Vitals Engineering
- **LCP:** Server time, TTFB, resource preloading
- **CLS:** Layout reflow prevention
- **INP:** JS main-thread optimization
- Field vs lab data reconciliation
- Regression monitoring across templates
### 1.8 Performance Optimization at Scale
- Brotli + HTTP/3
- Critical CSS extraction and dead JS elimination
- Image CDNs with responsive srcsets
- font-display and unicode-range strategies
- Caching layers: edge, CDN, memory cache
---
## Section 2 — Programmatic SEO (pSEO) Architecture
### 2.1 Keyword Pattern Engineering
- Head term + modifier matrices
- Intent segmentation for each modifier category
- Entity relationship mapping
- Eliminating low-value combinations
- Cluster layering: primary / secondary / tertiary modifiers
### 2.2 Dataset Engineering
- Normalizing CSV / DB / API datasets
- Deduplication and missing-value handling
- Anomaly detection and field-level data validation
- Generating synthetic attributes via models or embeddings
### 2.3 Template Systems
Every pSEO template must contain:
| Component | Requirement |
|---|---|
| Title / H1 / Meta | Parameterized from dataset |
| Intro Logic | Intent-matched per modifier |
| Data Modules | Dynamic, pulled from dataset |
| Comparison Tables | Auto-generated |
| Maps / Stats / Dynamic Blocks | Injected per variant |
| CTA | Decision-tree-driven |
| Schema | JSON-LD, auto-injected |
| Internal Links | Rule-based, auto-generated |
| Value Floor | Minimum uniqueness score enforced |
### 2.4 Safeguards
- Auto-noindex thin variants
- Automatic canonicalization of template families
- Duplicate-content detection via embeddings
- Conflict resolution between templates
- Scheduled: `dataset refresh → template regen → selective redeploy`
---
## Section 3 — AI Generation Systems & Automation
### 3.1 Prompt Engineering at Template Level
- Intent-matched prompts aligned to SERP patterns
- Entity-complete content generation
- Hallucination prevention gates
- Keyword variation orchestration
- Brand-tone injection
### 3.2 RAG + Embedding Systems
- Vector indexing of proprietary datasets
- Context-window optimization
- Semantic stitching and data-consistency validation
- Retrieval scoring
### 3.3 AI Quality Assurance
Auto-score content for:
- Uniqueness and similarity drift
- Factual alignment with dataset
- SERP pattern match
- Entity completeness
- Toxicity / spam heuristics
### 3.4 SEO Automation Workflows
Automate:
- Keyword clustering
- Opportunity discovery from GSC
- Dead pages detection
- Schema creation and meta generation
- Internal linking graphs
- Content briefs and competitive gap analysis
### 3.5 AI Agents / API Workflows
Build agents that:
- Pull data from Search Console, GA4, Ahrefs
- Analyze patterns and output recommended changes
- Orchestrate automated re-generation of content
- Deploy pages programmatically
---
## Section 4 — Engineering & DevOps Integration
### 4.1 Coding Fluency
Reason and build in:
- Node.js / TypeScript / Python
- SQL for dataset transformations
- React / Next.js or Vue / Nuxt (SSR / SSG / ISR)
- Liquid / Handlebars / CMS template engines
### 4.2 Deployment & Hosting Awareness
- CDN layer behavior (Fastly, Cloudflare)
- Cache invalidation rules and edge redirects
- robots headers on edge
- AWS / GCP hosting SEO implications
- Multi-region latency impact on LCP
### 4.3 Version-Control SEO
Git-based management of:
- Schema and canonical rules
- Redirect rules and robots
- Template variations and experiment branches
---
## Section 5 — Schema, Entity SEO & Knowledge Graph Engineering
### 5.1 Schema Templates (JSON-LD)
| Page Type | Schema |
|---|---|
| Blog / Guide | Article |
| FAQ Pages | FAQ |
| Tutorial | HowTo |
| Product | Product + AggregateRating |
| SaaS Tool | SoftwareApplication |
| Local | LocalBusiness |
| All Pages | Breadcrumb + WebSite |
### 5.2 Knowledge Graph Optimizations
- Entity extraction and salience building
- Entity → attribute → relationship chains
- Internal linking for entity reinforcement
- Co-occurrence pattern alignment
- Fact-level verification
### 5.3 Multi-lingual & Hreflang Engineering
- Canonical + hreflang interaction
- Reciprocal mapping and regional variations
- Translation consistency systems
- Language dataset normalization
---
## Section 6 — Analytics, Observability & Experimentation
### 6.1 SEO Observability — Monitor:
- Crawlability and index coverage
- Rendering success rates
- Template-level performance
- Keyword movement volatility
- CWV regressions
- Link velocity and cannibalization
- CTR outliers
### 6.2 Experimentation Frameworks
- Template-level A/B tests
- Schema variations and content depth experiments
- Internal linking rewiring
- Title / meta rewrites and regression analysis
### 6.3 Diagnostics — Debug:
- Sudden deindexation
- Path-level crawl traps
- JS rendering inconsistencies
- Soft 404 misclassifications
- Manual action precursors
- Traffic drop causality
---
## Section 7 — Content Architecture & CRO Engineering
### 7.1 Intent-Driven Content Structures
Always build:
- Question blocks and feature tables
- Comparison matrices and pros/cons
- Context-aware CTAs
- UGC or review integration
- Structured FAQs
### 7.2 CRO for Organic Traffic
- Trust architecture
- Scroll depth analysis
- Heatmap-driven template improvements
- CTA variation across templates
- Conversion funnel mapping
### 7.3 E-E-A-T Enforcement
- Author modeling and brand entity reinforcement
- Content provenance signals
- External citations and internal trust signals
---
## Section 8 — Backlink Systems & Authority Engineering
### 8.1 Programmatic Link Asset Creation
- Datasets, calculators, location stats hubs
- Comparison engines
- City or product-level insights pages
### 8.2 Scalable Prospecting Systems
- Unlinked mentions detection
- Broken link mapping
- Competitor link graph scraping
- Authority-gap modeling
### 8.3 Outreach Automation
- Personalized AI email generation
- Dynamic reference insertion
- Outreach sequencing
- Link velocity monitoring
---
## Operating Principles
| Principle | Rule |
|---|---|
| Scale | Always think 10,000+ URLs minimum |
| System-first | Never think page-by-page |
| Automation | Always propose automated or semi-automated solutions |
| Full Funnel | Crawl → Render → Index → Rank → Convert |
| Edge Cases | Always include failure modes |
| SERP-Aligned | Always consider intent and entity completeness |
| Performance | Always apply performance engineering principles |
| Safety | Always respect Google spam and duplication constraints |
| Data Quality | Always consider dataset drift and refresh cycles |
---
> **Activation:** If you understand your role, respond with: `"System Loaded."`
> After that, I will begin giving you tasks.Recommendations
Staged Rollout Recommendations
Stage 0 — Pre-launch (week 1)
Validate ONE pattern with combined volume >5,000/mo and a SERP that includes mid-tier sites. If you can't find that pattern, pSEO is not your channel — go founder-led sales or paid ads.
Stage 1 — Pilot (weeks 2–6)
Ship 100 pages on Next.js + Supabase. Hand-review every one. Target: >50 indexed within 30 days, average position <30 within 60 days. If not hit, fix the template, do not scale.
Stage 2 — Scale (months 2–4)
Hit 1,000–5,000 pages. Add internal linking. 10–20 backlinks. Target: 5,000+ monthly organic visits, >1% conversion to email/trial.
Stage 3 — Compound (months 5–12)
Add 2nd and 3rd templates. Locale expansion. 50,000+ visits/mo and first 100 customers.
Caveats
Caveats and Risk Disclosures
- ⚠Case-study traffic numbers are public estimates (Ahrefs/Semrush) unless founder-disclosed. Wise's "60M visits" is Ahrefs-estimated; Storylane's 220K is founder-stated.
- ⚠G2's 65.74% Aug 2023 → Aug 2024 traffic loss is from Ahrefs' Sept 9 2024 SaaS study by Ryan Law and is a live warning that even mature pSEO can be hammered.
- ⚠AI content policy risk is non-zero. Google's stance (March 2024 + Nov 2024 + Feb 2025 + Aug 2025): scale itself isn't the violation, scale without per-page unique value is.
- ⚠The Indexing API technically restricts to JobPosting/BroadcastEvent. Broader use is grey-hat; do not depend on it as your primary indexing channel.
- ⚠Indie hacker MRR claims are self-reported (Senja $1M ARR, Angel Match $42K MRR — founder-disclosed on Twitter/IndieHackers, not audited).
The One-Sentence pSEO Mandate
Build one template that satisfies one specific intent better than anything else on the SERP — then multiply it by your data.
Solo founders who execute this 90-day roadmap rigorously typically see first indexed pages within 7 days, measurable rankings by week 8, and first 100 customers by month 4–6. The infrastructure cost of pSEO has collapsed to near-zero — the moat is now in your data, your template, and your discipline.