Replace the place names and the trade words first, or two identical pages will score as unrelated
A sameness check that reads the raw text measures your subjects. Substitute the variables and it starts measuring your writing instead, which is the thing that was repeating.
Published by AI Knows Us · Updated 20 October 2026
Two pages built on one template read as unrelated to any text comparison, because the words that differ are the words that carry the subject. Swap every place name, trade word, figure, percentage and currency amount for a placeholder before you compare anything, and the shared skeleton appears immediately. This is the whole method, it takes one pass over the text, and without it a sameness audit reports that a set of pages written to one formula are all about different things, which is true and useless.
We publish ten city readings taken on 15 and 16 October 2026, and they are the clearest demonstration we own of why the substitution has to come first. Each one is a different city with a different set of local winners. Substituted, every one of them is the same sentence.
Ten of our own rows, before and after
Our city scan read 10 named cities with 6 buyer questions each, on ChatGPT and Gemini, for 120 readings with none discarded, and our own domain was cited in none of the ten. Each row holds five fields: the place, the readings taken there, how many of them came back with a source list, how many used a page of ours, and the local sources that came back most often.
Take the Houston row on its own. Twelve readings, eleven of which returned sources, nothing of ours in any of them, and the local sources that recurred were houdigitalmarketing.com, thedigitalelevator.com and axios.com with their counts attached. Read as text, that row shares almost no vocabulary with the Manchester row or the Delhi row, because the place and the three domain names are the only parts that moved and they moved completely. A word based comparison across the ten reports ten unrelated items, and the sameness audit passes.
Now substitute. All ten become one sentence: in PLACE, NUMBER readings returned NUMBER source lists, used a page of ours NUMBER times, and the local sources that recurred were DOMAIN at NUMBER, DOMAIN at NUMBER and DOMAIN at NUMBER. Ten rows, one row. That is the correct finding about the writing, and the raw text could not have produced it.
What to replace, and why each class earns its place
Five classes do nearly all of the work. Each one is a slot that a template fills differently per page while the sentence around it stays put.
- Figures. Counts, reading totals, sample sizes. These are the loudest difference between two pages reporting the same shape of result, and the least meaningful.
- Percentages. Replaced separately from plain figures, because a share and a count behave differently in a sentence and a single rule for both tends to miss one of them.
- Money. Rupee, dollar, pound and euro amounts with their symbols attached, so a price ladder does not read as three distinct paragraphs.
- Place names. Countries, cities and regions. On a city series this is the class that hides the collision almost single handedly.
- Trade words. The nouns your category cannot avoid, and the engine and vendor names. Two pages that differ only in which engine they discuss are one page.
The last class is the one people leave out, and it is the one that matters most on a specialist site. A page about one assistant and a page about another, written to one outline, differ in a handful of proper nouns. Leave those nouns in and the comparison scores them as far apart as a page about pricing and a page about crawlers.
Print the substituted text and read it once
A substitution pass that stops firing returns exactly the result you were hoping for: everything looks safe, nothing throws and no placeholder appears anywhere in the output. The defence is to print the substituted text once, read a paragraph of it, and confirm that each class actually fired. A count per class beside the output does it: if the place name class reports zero on a set of city pages, the check has not run, whatever it says afterwards.
This is the same family as a check reporting no issues because it read nothing, which is worked through in why a site audit that reports no issues may not have run. A sameness audit is unusually exposed to it, because the output of a healthy run and the output of a dead one are both a short list of low scores.
Where to compare, once the text is substituted
Four places, in this order, because they fail in that order.
- The opening sentence. Written last on most pages and first out of a template. If two openings match after substitution, nothing further down will save them.
- The closing section. The part a writer reaches for a formula to finish. Two closings that swap only the subject noun are one closing published twice.
- Every heading. A heading is the compressed form of a section's claim, so matching headings are matching claims.
- Every sentence longer than about seven words. Shorter than that and ordinary English will collide on its own, which produces noise rather than findings.
What this method does not tell you
It finds structural repetition and it says nothing about whether the repetition is a problem. Ten rows describing ten cities measured the same way should look alike after substitution, because the measurement was the same and the figures are fixed. The finding is a prompt to go and build each page on something true about its own subject, not a verdict that the writing is lazy.
It also says nothing about which of two similar pages a search engine or an assistant will prefer. We hold no measurement of that, and the honest use of a substituted comparison is as an internal editing tool rather than as a prediction. The related question of whether two urls are the same page, which is a different job with different tools, is set out in the two jobs a content duplication checker does.
Questions about substituting before a sameness comparison
Why not compare the raw text and use a lower threshold instead?
Because lowering the threshold catches ordinary English as well as the template. Substitution removes the words that were never the repetition, so the score you then read is about sentence structure and phrasing, which is what you were looking for.
Does substituting figures not throw away the evidence?
It throws away the figures for the duration of one comparison. The published page keeps every one of them, unrounded. The substituted copy exists only inside the check and is never the thing anybody reads.
How many classes of placeholder are enough?
Start with the five above and add a class whenever you find a collision the check missed. The useful discipline is that a class is added to the check at the moment a miss is found, so the check gets strictly better rather than being rewritten from memory later.
Should the placeholder tokens be distinguishable from each other?
Yes. Use a different token per class, so you can see from the substituted text which rule fired where. One shared token for everything hides a class that has stopped working, which is the failure this whole pass is designed to be visible about.
Does this apply to pages about different cities at all?
It applies most of all there. Our own ten city rows are the example: the places differ, the local sources differ, and the sentences carrying them were the thing at risk of being identical. The data varied, so the writing had to be made to vary with it.
The collision you cannot see is the one a reader notices first
Nobody runs a comparison before judging two of your pages. They read the opening of the second one, recognise the shape of the first, and decide in about four seconds, which is not a decision you get to appeal. A substitution pass is simply that judgement made deliberately and early, on text you are too close to read fairly. Working out what each page in a series is genuinely about, and then writing the ten of them so they read as ten, is a chargeable part of what we do. The dated exports behind our own published figures sit at aiknowsus.com/proof.