Layout can change from town to town. These cannot. Each one names the check that enforces it.
The swap test
Swap the town for a neighbor the client also serves and reread every sentence. At least 20 sentences must become false. Record it in the town facts file as a destructive_read block: the sentence, the swap town, true or false.
Checked by check-template: swap-read. It is the only test that separates a town page from a doorway page. Layout does not.
The town facts file
8 or more facts, each fetched live on the date shown from a named primary source, with the source's own sentence as evidence. Exactly 3 are assigned and render word for word on the page. Evidence lines are tested against the saved fetch before they enter the file.
Checked by check-template: facts-file, facts-verbatim. Every local claim can be traced. A research agent that stitches two sentences together is caught before the copy.
Thin towns
6 or 7 facts: build it, record the shortfall in the file. Under 6: do not build. List the town as plain text on the hub and tell the operator.
Checked by check-template: facts-file. A town we cannot say 8 true things about is a doorway page waiting to happen.
FAQPage schema lives on the hub
The town page shows its FAQ but carries no FAQPage JSON-LD. The site FAQ hub holds every question once, grouped by town, and the town page links to its group.
Checked by check-template: no-faqpage. The same question marked up on two URLs competes with itself.
Link built towns only
A town gets a link only when its page is built and live. Every other town is plain text in the map, the menu, the chips and the footer.
Checked by check-template: town-links. A link to a page that is not there is a broken promise to the reader and to Google.
Photo hero, or the map
A real photo from this company (crew, truck, work in the area) when one exists. The drawn map when it does not. Never a stock skyline, never a Google Maps embed.
Checked by check-template: hero-image. A stock city photo is the clearest sign of a page built at scale.
No person twice
Across one client's town pages, no person is the main subject of more than one photo.
Checked by eye review (not mechanical). The same technician on six town pages reads as a template.
Place photos carry credits
Every Creative Commons photo carries author, license and source, rendered on the page.
Checked by check-template: photo-credits. It is the license condition, and it is proof the place is real.
Phone in buttons only
tel: links sit in the hero, the call steps, the mid-page call and the close. Never mid-paragraph.
Checked by check-template: tel-placement. A number buried in a sentence is not tappable intent.
Schema on the shipped file
One business block (the real address of the one office, never an invented one) with areaServed, plus BreadcrumbList and WebPage. Checked on the file that ships, not on a source file.
Checked by check-template: business-schema. A pest control page's gate passed a file that never shipped. The shipped page carried zero JSON-LD.
Layout variety
At least 4 layout families on the page. Never three copy-and-photo splits in a row. Photo sides alternate.
Checked by check-template: layout-families, split-run. Alternating left and right forever is what people mean by templated.
Two clients, one town
Two of our clients may both have a page for the same town. They may share a source, never a sentence: 8-word shingle overlap under 15 percent. Which client takes a contested town is the operator's call.
Checked by check-template --against <other page>. We are the common author. Our own pages must not look like one network.
Copy floor
No em dashes. No dollar figures without the client's approval. No 24/7 promise the client does not keep. Title Case on every heading. No office-proximity pitch ("our office is close"): nobody drives to a plumber's office.
Checked by check-template: copy-bans. Each of these has been corrected by the operator on a live build.