Every agency that got wiped out by the last two spam updates built the same thing: one template, a spreadsheet of city names, and a find-and-replace. Google has been able to detect that pattern since 2022.
Our model requires five unique fields per page before it is allowed to publish: a local job reference with a real address range, a neighbourhood-specific problem note (hard water, hail zone, panel age in that build era), the actual technician who covers that area, a service-area polygon rendered as a map, and the average dispatch time from the closest depot.
If any of those five are missing, the page does not build. That single rule is why our 418-page grid client kept all 418 pages through the August update and picked up 96 top-three positions.
The cost is real: it takes a 90-minute intake call per territory to collect the data. That is still cheaper than rebuilding a filtered site.