Define the two production lines without slogans
Programmatic: template + data → URL. Handwritten: brief + expert → URL. Hybrids inject handwritten modules into templates (a 120-word local note, a unique FAQ). Hybrids are how grown-ups scale.
If your vendor cannot show the data columns, they are spinning. If your writer cannot show sources, they are also spinning — just slower.
Synonym substitution is not a dataset
Replacing “Chennai” with “Coimbatore” in the same paragraph is the doorway pattern. Unique weather, unlike, is still not a business fact. Need NAP, offers, people, photos.
Where templates win for Indian markets
Multi-location clinics, genuine service-area coverage with travel rules, product catalogues, and specialty × city hubs when each pair has a distinct package. Directory-like intent (“CA in Trichy”) is template-native.
Speed to coverage matters when competitors already occupy every city modifier. Templates let you show up; handwritten proof lets you stay.
Internal linking is part of the template
Orphan city URLs die. The factory must link parent specialty, sibling cities you actually serve, and a handwritten guide. An llms.txt should list parents, not every child — llms.txt guide.
Where handwritten pages still print money
Comparisons, pricing explainers, “should you hire,” implementation guides, and anything that must take a side. These attract links, citations, and sales enablement. They also feed AEO extraction.
A retainer of ₹15,000/mo should protect time for these, not spend the whole month generating city clones. Cost context: how much SEO costs.
One Binderr-length guide versus forty stubs
This cluster’s 24–28 minute posts exist because shallow definitions do not survive AI summaries. If you only have budget for one, write the buying guide.
The quality bar we use before generating URLs
Each URL must change more than the H1. Minimum: unique intro hook, local proof or data field, unique FAQ or offer, accurate NAP, no duplicate meta. If a field is empty, no page.
Indexation is earned. noindex the thin ones until facts exist. Publishing 5,000 URLs into GSC and hoping is how you tank a domain.
Photos as a kill-switch
No local photo and no local case? Then no local URL, unless you are a true service-area brand using a different proof type (dispatch log, travel fee).
Cannibalisation and the “Chennai vs Chennai page” problem
If the homepage, a /chennai hub, and a blog all target “SEO Chennai,” you split. Map one primary URL per intent. Templates should not recreate the handwritten cluster’s slugs.
National explainers stay national. City pages stay local. That discipline is local vs national in production form.
Query fan-out is not an excuse for twins
Slightly different titles for the same intent still cannibalise. Merge. Redirect. Do not A/B two money pages forever.
Stack: WordPress custom types versus Next.js factories
WordPress: CPT + ACF-style fields + a restrained theme. Fine up to hundreds of locations if hosting is serious. Plugin tax and editor accidents are the risk.
Next.js: data files or a headless CMS, static generation, predictable URLs. Better when the dataset is large and editors should not freely invent routes. SEO differences: WordPress vs Next.js.
Editors will paste the same paragraph into 80 cities
Guardrails matter more than the framework. Required fields, character minimums that measure facts not fluff, and preview diffs.
Cost and team: who owns the spreadsheet
pSEO fails when marketing owns copy and nobody owns data. Assign a data owner (ops) and a template owner (engineering). Writers inject modules, they do not “spin cities.”
In-house vs agency for this split is its own decision — hire agency or in-house. Factories without engineering should not be promised by a content intern.
Ads landing pages are not pSEO
A ₹7,500 landing for one campaign is handwritten on purpose. Do not templatise ads promises into 80 URLs that disagree with the ad account.
GEO and AEO consequences of scale
Engines that fetch 400 near-duplicate pages learn you are low-value. A few distinctive handwritten URLs get cited. Templates with original tables (fees by city, dispatch SLAs) can still be GEO-positive.
Do not dump every programmatic URL into llms-full.txt. Curate parents. That is in the llms.txt article.
FAQ schema on 2,000 clones is still 2,000 clones
Markup does not create uniqueness. Schema for AEO belongs on pages with real Q&A.
The hybrid we recommend for service firms
Layer 1: 5–15 handwritten commercial guides. Layer 2: one hub per specialty. Layer 3: city pages only where you have facts. Layer 4: GBP for the real office. Stop.
That hybrid fits a Chennai SME better than a 10,000-URL fantasy. We would rather you buy SEO and eight good pages than a generator licence.
Kill list as a monthly ritual
GSC: prune or noindex URLs with impressions and no proof. Programmatic without pruning is a junkyard.
Decision rule from our discovery calls
If the founder can fill three unique fields per city this week, we discuss a factory on Next.js or WordPress CPTs. If not, we write. If they want 500 pages by Friday, we decline.
Book consultation with the sheet. We will mark columns as sufficient or vanity. That fifteen minutes saves a year of doorway recovery.
Recovery is slower than restraint
De-indexing a spammy city blast can take months. Starting handwritten looks slow and wins. We prefer the boring path.
Ready to automate one painful workflow?
Tell us your stack — n8n, Make, Zapier, WhatsApp, or Playwright. Chennai HQ · India delivery · reply within one business day.