Build1 publisher3 min readPublished
A friend's device is the only control in this ChatGPT citation experiment
Suman Debnath ran a week-long answer-engine pass, watched ChatGPT name him two days later, and then spent most of the write-up arguing that the sequence is not a cause. The cross-device check and the three silent assistants are why that argument holds.
The Engineer · Build desk

What happened
- ChatGPT started describing Suman Debnath for the query "who is suman debnath" two days after he finished a week-long answer-engine optimisation pass on his own site.
- He re-ran the query in a temporary chat on his own device, then on his wife's, then on a friend's device where his name had never been typed, and got the same answer on all three.
- Stuffing his name into metadata, headings, alt text and the keyword tag was the first thing he tried, and by his account it produced no effect at all.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- decision Anyone copying this buys about a week of structural work on the strength of a single observation from a single engine, so the reasoning about entity resolution has to carry the decision, not the citation.
- precedent Shipping the negative result alongside the win sets a usable bar for answer-engine writeups: state which assistants ignored you, and readers can price the rest of the claim.
- cost The unglamorous items are where the budget goes, and making structured data visible to a non-JavaScript crawler became a separate project before any engine noticed the difference.
Entity resolution is what makes the keyword-stuffing failure predictable rather than surprising. Debnath describes the engine's job as deciding which real-world person a name refers to, and then deciding whether it knows enough about that person to say anything; repetition helps with neither step, while corroboration and structure do [13]. His site was already saying his name plenty of times before he added more instances of it to metadata, headings, alt text and the keyword tag [3][12]. The competing entity was the actual constraint: a developer advocate at a large cloud company with the same name, well indexed, and for a long time the only answer anyone got [6].
That reframes the checklist. The generated llms.txt is derived from the same data the pages use, so it cannot drift out of date, and disambiguation is its first section [15]. Every product page and article opens with a self-contained forty-to-sixty word answer directly under the heading, on the reasoning that a model reading for an answer takes the first block that stands alone [16]. Each identity question is owned by exactly one URL, because two pages answering the same question compete with each other [17]. The distinction between the two people is written in visible prose rather than parked in a schema attribute [18]. Crawl access is stated explicitly for around thirty named agents, including the retrieval fetchers that honour different rules from the training crawlers [20]. That level of detail suggests he worked from the documentation rather than the announcement.
The evidence for the result is thinner than the method, and the post says so. The work took about a week and the answer changed two days after it landed, which puts roughly nine days between the first edit and the observation [14][1][24]. Three devices returned the same answer, including a friend's where his name had never been typed [7], and Debnath is explicit that this check existed to rule out personalisation before he let himself believe a flattering result [8]. It bounds account-level personalisation and nothing beyond that: it cannot separate a site change from run-to-run variance, which he flags himself when he notes that the same prompt returns materially different answers across runs [9], and it cannot exclude something changing on OpenAI's side in the same week, which he also raises against his own conclusion [10]. No pre-pass run on those three devices is reported, so the before-state rests on recollection that the other Suman Debnath used to be the only answer [6]. The missing baseline on those three devices would have been the cheapest experiment to run, and it is no longer available to run.
For the citation to transfer to your site, the bottleneck has to be the one he had: a name collision with a better-corroborated entity, a site already reachable by the fetchers, and an index that refreshed inside the window. If the engine has simply never had a reason to know your entity exists, disambiguation is not the binding input, and the two-day timing tells you nothing about how long the rest of it takes.
The part that earns the post its credibility is the negative result. Claude, Gemini and Grok still do not name him [5], so of the four assistants he checked, only ChatGPT's answer moved [25]. Debnath's explanation is architectural rather than editorial: the engines do not share an index, being crawled is not the same as being indexed [21], and by his account OpenAI is the only one of the four that both crawls and indexes in house [22]. He notes he could have omitted the three silent assistants and no reader would have known [26]. The checklist is worth about a week if entity resolution is genuinely your problem [14]; the two-day citation is not what makes it worth it, and Debnath says the caveat box is the part to take [23].
What to watch
- Whether the ChatGPT answer holds across repeated runs over a longer window, which is the only thing that separates the pass from run-to-run variance.
- Whether Claude, Gemini or Grok begin naming him without further site changes, which would point at index refresh rather than the optimisation work.
- The promised follow-up on making structured data visible to non-JavaScript crawlers, which the post treats as its own separate problem.