Spurlock Studios
Contact
Share LinkedIn X
A lime beam. Thesis: STOP AI RECOMMENDING WRONG COMPETITOR.

You cannot stop AI from recommending the wrong competitor in your category with a switch, a robots.txt line, or a form that “removes” a rival from ChatGPT. You correct the evidence trail: an entity page a model can quote, same-name disambiguation, third-party pages that repeat the right category noun, and comparison URLs that are honest about who wins when. Then you re-run a frozen prompt panel every week and treat substitution as a ticket. ChatGPT Search rewrites buyer prompts into partner queries and cites what those queries retrieve (OpenAI Help: ChatGPT Search). If the retrieved set still teaches the other company, the recommendation stays wrong.

This spoke is the correction loop inside the Answer Engine Optimization playbook. If the product names everyone but you, start with why ChatGPT recommends competitors. If you need the log of who gets the URL, use citation gaps in competitive AI answers. This post is what you ship after the miss is a wrong rival in your category, not a blank brand probe. I have been SEO certified since 2021. The AEO version of that work is still a fact sheet other people repeat — not a takedown request.

Lane work lives on /visibility.

The short answer

  • There is no “stop recommending them” control. You change what retrieval can defend.
  • Classify the miss before you rewrite: same-name, adjacent category, stale leftover, or roundup substitute.
  • Fix the entity page first — legal name, category noun, geo, who you are not for — in HTML a model can lift.
  • Disambiguate collisions on owned pages and in sameAs / legalName / disambiguatingDescription markup that matches the visible copy.
  • Align third-party facts (directories, reviews, press) to the same category noun. Then ship one honest comparison page.
  • Re-run the same panel weekly. Count named / substituted / accurate. Do not invent a share-of-voice percentage.

Why you cannot stop this with a switch

Answer products recommend from evidence they can retrieve and compress. OpenAI’s search launch is explicit: answers include links to sources, and a Sources panel lists the references (OpenAI: Introducing ChatGPT search). The help article is the operator check: ChatGPT Search rewrites your prompt into one or more targeted queries and sends those to partner providers, including Bing (OpenAI Help: ChatGPT Search). You do not get a dashboard where you uncheck a competitor.

Blocking a training crawler does not delete a rival from a live search answer. OpenAI documents separate bots: GPTBot for training, OAI-SearchBot for ChatGPT search appearance (OpenAI crawler docs). Allowing or disallowing GPTBot does not make the other company disappear from a category prompt. It only changes whether your pages are eligible to be shown. A 24-hour lag after a robots.txt change is the documented wait for search-result updates — not an SLA that a substitution vanishes.

Move people tryWhat they hopeWhat actually happens
“Tell ChatGPT to remember us”The next buyer prompt names youMemory is not a category recommendation engine
Disallow GPTBotRivals fall out of ChatGPTTraining opt-out ≠ search citation eligibility
Disallow OAI-SearchBot“We control the narrative”You drop out of search answers; rivals stay
Buy a “submit to ChatGPT” listingPaid inclusionThere is no public paid slot inside the answer
Schema-only patch, copy unchangedSecret disambiguationMarkup that contradicts the page is a conflict you authored
Email OpenAI / Google “remove them”TakedownYou are asking them to un-recommend a third party they can corroborate
One angry blog about the rivalNarrative controlModels prefer extractable criteria over a rant

Google’s floor for AI Overviews and AI Mode is ordinary Search eligibility: indexed, snippet-eligible pages (Google: AI features). Their AI-optimization guide tells you not to treat llms.txt or AI-only markup as a Search tactic. None of those docs offer a competitor-suppression switch.

  • You stopped looking for a form that unchecks a rival
  • robots.txt is a fetchability decision, not a substitution fix
  • The Sources panel for the money prompt is in the sheet
  • The ticket is a page or a third-party fact, not a vendor SKU

Fetchability is a floor for your inclusion, not a weapon against a rival. If money URLs 403, challenge, or noindex, you will not replace the substitute even after the About page is perfect. Confirm HTTP 200, snippet eligibility, and that the search bot you care about is allowed — then come back to identity. Eligibility does not choose you. It only lets you compete.

A switch would be easier. The open web does not have one.

What counts as the “wrong competitor”?

Wrong means the answer names a company a careful buyer would not hire for this job. It is not “anyone we dislike.” It is a substitution you can screenshot.

Miss typeWhat the answer didTypical evidence trailFirst ticket
Same-name, other industryRecommended the other “[Brand]”Wikipedia / directories / press density on themDisambiguation sentence + legalName / geo
Same-name, other cityNamed the other HQMaps + NAP + local roundupsGeo in the first sentence; LocalBusiness facts
Adjacent categoryNamed a real rival in a neighboring jobRoundups that lump two jobs under one nounCategory noun + not-for table
Stale leftoverNamed who you used to be, or who replaced your old offerOld About, old Crunchbase, undated pressDated “formerly” line; 301 the zombie pages
Roundup substituteNamed whoever the listicle already listsOne “best [category] 2026” URL in SourcesPitch that URL or out-write it with criteria
InvertedRecommended you for a job you do not sellYour hero copy is a slogan, not a nounTighten the offer sentence; mark those prompts wontfix if they are out of ICP

Run this once on the frozen prompt, in a fresh chat, with Search actually on. If Sources does not appear, you watched a memory answer. Log it. Do not score a substitution from a memory run.

Prompt you pasteWhat you write down
“Recommend [category] for [ICP] in [geo]”Brands named, URLs cited, which miss type
“Best [category] for [constraint]”Whether the named set is adjacent or exact
“Is [You] a [category] for [ICP]?”Accurate / collision / wrong job
“[You] vs [Named substitute]”Whether the answer still swaps the entity

If the named company is a true peer in the same job, that is a citation-gap problem — competitive density, not identity. Send that row to the citation-gap log. This loop is for the cases where the wrong kind of company got the slot.

How is this different from ChatGPT skipping you?

Skipping you is absence. Wrong-competitor is substitution. The diagnostic ladder for “it names everyone but us” lives in why ChatGPT recommends competitors. Do not rerun that whole corroboration audit here. Use this table to pick the spoke.

What you sawSpokeThis week’s job
Blank / “I don’t have info”Why ChatGPT recommends competitorsEvidence trail and fetchability
Right category, stable rival set, you absentCitation gapsLog URLs; page / PR / listing tickets
Right name, invented year or offerHallucinated brand facts (separate spoke)Fact packet before recommendations
Wrong company with your nameThis postDisambiguation
Right industry noun, wrong job (adjacent)This postCategory + not-for + honest compare
You named for a job you do not sellThis postOffer sentence; maybe wontfix

Absence and substitution can stack. A thin trail makes the model conservative and greedy for the denser namesake. Fix identity first when the named company is not even in your job. Fix density when they are a real peer.

  • Screenshot shows the substitute’s legal name or city, not yours
  • You can point at one URL in Sources that taught the swap
  • You are not treating a true peer as “wrong”
  • Brand probe (“What is [You]?”) is logged next to the category prompt

If the brand probe already swaps you for the namesake, stop writing category blogs. The entity page is the ticket.

Freeze the miss before you rewrite anything

Do not “improve” the prompt while you diagnose. OpenAI is explicit that one user question can become several partner queries after the first result set (OpenAI Help: ChatGPT Search). A category prompt can fan out into “best [category] 2026” plus a geo variant. If you change the wording every run, you cannot tell whether the correction worked.

The full column spec belongs in the citation-gap post. For this loop you only need a substitution sheet.

FieldRule
prompt_idFrozen. New wording = new ID
productChatGPT Search, Perplexity, or an Overview/AI Mode check
search_or_sourceson / off / unknown
namedComma list, including the substitute
substitute_typesame_name / adjacent / stale / roundup / peer / none
urls_citedFull URLs
our_statusaccurate / substituted / adjacent / named_only / absent
ticketentity / disambiguation / third_party / comparison / wontfix

Procedure — three runs, two days, same wording:

  1. Paste the frozen category prompt. Confirm Sources.
  2. Copy every cited URL. Tag the host: owned / namesake / adjacent / roundup / directory / press.
  3. Repeat in a fresh chat the next day. Union the URLs. One screenshot is an anecdote.
  4. Mark a substitution “real” only if it appears in at least two of three runs, or if a money prompt cites a namesake page you will fund anyway.
  5. Assign one ticket type. Not three.

Worked row — format only, fill from your sheet:

2026-08-16 | chatgpt_search | p04 | “Recommend [category] for [ICP] in [geo]” | on | HomonymCo, PeerCo | [directory]/[homonym], [roundup]/best-… | substituted | same_name | disambiguation | [owner]

That row is already the week’s job: the directory taught the homonym. Do not write a blog about “AI bias” on top of it.

Semrush’s AI-metric glossary defines share of voice as a percentage of mentions versus a chosen competitor set inside their product. If you buy the tool, use their formula on their set. Do not invent a percentage from one chat window. This loop scores substitution rate on your frozen panel: substituted runs ÷ panel runs with the denominator written on the sheet. If you cannot write the formula, you do not have a number.

What belongs on the entity page a model can quote

The entity page is usually About, sometimes a dedicated /company URL. Its job is a 60–80 word lift: who you are, what category noun you use, who you are not, where you are, which legal name. Google’s Organization structured-data guide says homepage markup helps Google understand administrative details and disambiguate your organization from other organizations, and that there are no required properties — add the ones that apply (Google Search Central: Organization). schema.org’s Organization type is the shared vocabulary for name, legalName, url, logo, and related identifiers.

Markup that contradicts the visible page is a conflict you authored.

Visible block (HTML)Must match in JSON-LDFailure if missing
One-sentence offer + ICPname + descriptionModel quotes the slogan instead of the job
Registered company namelegalName (schema.org/legalName)Namesake wins the string match
“Not the [other industry] [Brand] in [city]”disambiguatingDescription (schema.org/disambiguatingDescription)Collision stays cheap to retrieve
Official site + real profilessameAs (schema.org/sameAs)You claimed a Wikipedia URL that is not you
HQ city / service areaaddress or areaServedOther-city namesake keeps the geo prompt
Founding year you will stand behindfoundingDateInvented year in the brand probe

sameAs is a URL that “unambiguously indicates the item’s identity,” with Wikipedia, Wikidata, or the official website as the documented examples (schema.org/sameAs). It is a claim you make. It is not a verification you receive. Pointing sameAs at the namesake’s Wikipedia page teaches the swap.

Google’s Knowledge Graph help says facts come from a variety of sources. A knowledge panel is not an AI recommendation. Do not treat panel chrome as the scoreboard for this loop.

Checklist before you call the entity page done:

  • First 80 words name the category noun a buyer would type
  • A not-for sentence or three bullets exist in HTML, not only in a brand deck
  • Legal name, trade name, and any “formerly” line are on the same URL
  • JSON-LD matches those strings character-for-character on the facts that matter
  • sameAs URLs resolve to your profiles, not a homonym
  • The page returns 200, indexable, snippet-eligible

If About is a mood film with no nouns, you do not have an entity page. You have a trailer.

Minimal JSON-LD shape — facts must already be visible on the page:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "[Trade name]",
  "legalName": "[Registered company name]",
  "url": "https://www.example.com/",
  "disambiguatingDescription": "[Category] for [ICP] in [geo]; not [Other Co], the [other industry] firm in [other city].",
  "sameAs": [
    "https://www.example.com/",
    "https://www.linkedin.com/company/[your-company]"
  ]
}

Do not paste a competitor’s block and change the name. sameAs is identity, not a link-building field.

How do I disambiguate a same-name collision?

Wikipedia’s pattern is the one models already understand: when a name refers to more than one subject, a disambiguation page lists the meanings (Wikipedia: Disambiguation). You probably do not have — and may not qualify for — an English Wikipedia article. You still need that sentence on a URL you control.

Write it in public prose, not only in schema:

“[Trade name] is [legal name], a [category] for [ICP] in [geo]. Not [Other Co], the [other industry] firm in [other city]. Formerly [old DBA], retired [year].”

CollisionOwned-page moveThird-party moveDo not do
Same name, other industryCategory noun in sentence one; disambiguatingDescription repeats itDirectory category field; press boilerplateInsult the other company
Same name, other cityGeo + address / service area in the leadGoogle Business Profile / Apple Business Connect NAPRank-chase the other city’s name
Old DBA still liveDated “formerly”; 301 leftover hostUpdate the three directories that still use the DBAPretend the old string never existed
Predecessor / mergerOne current offer list; leftover product names redirectedOne Crunchbase / local-biz record, not twoKeep both founding stories in the hero
Person vs companyOrganization vs Person markup on the correct URLsLinkedIn Company vs PersonalPut the founder’s Wikipedia in sameAs if it is not the company

sameAs hygiene:

  1. Open every URL in the array. Confirm it is you.
  2. Drop Wikipedia / Wikidata links that are the homonym. A wrong Q-id is worse than none.
  3. Keep official site, LinkedIn Company, and one review or registry profile you actually control.
  4. Re-validate after a designer “helpfully” copies a competitor’s JSON-LD.

If independent sources already cover the other company more densely than they cover you, retrieval will keep preferring them on naked-name queries. That is density, not a slight. Your move on category prompts is to make the job + geo + legal name string cheaper to retrieve than the homonym’s fame.

  • Disambiguation sentence is visible without JavaScript
  • Brand probe no longer returns the other HQ as fact
  • Category prompt still logged separately — identity wins do not auto-win recommendations
  • You did not add the rival’s domain to sameAs

How do I stop an adjacent-category rival from owning the prompt?

Adjacent is the miss operators argue about in Slack. A commercial HVAC-controls shop watches ChatGPT recommend a residential installer. A fractional AI CTO watchlist fills with website-in-a-week agencies. The model did not glitch. The retrieved roundups used one noun for two jobs.

Google still asks whether a page offers original, people-first information (Google: creating helpful content). A slogan that could apply to either job fails that test for machines and for buyers.

You sellAdjacent substituteNoun that caused the swapOwned-page fix
[Narrow job] for [ICP][Broader job] for consumersYou used the broad noun in the H1H1 = the narrow job; broad noun only in a “not for” row
B2B implementationA SaaS seat with the same category wordHomepage says “platform”“Implementation / retained build” in the first sentence
Local licensed tradeNational lead-gen brand“We service [region]” with no license tableLicense / geo table the model can lift
AdvisoryStaffing firm“We help teams ship AI”Who does the work, on whose stack, in one table

Not-for table — ship this on the entity page and the money service URL:

We are a fit whenWe are the wrong call whenWho to hire instead (honest)
[Constraint 1][Constraint 1 inverted][Adjacent category], not us
[ICP size / stack][Wrong size / stack]Named job title, not a smear
[Outcome you will take][Outcome you will not take]Send them away in writing

That last column is the correction. Models that can quote “hire an installer if you need X; hire us if you need Y” have a reason not to dump you into the installer list. Models that only see “#1 [broad noun]” will keep sampling from the denser broad-noun roundup.

  • Money URL and About use the same category noun
  • Not-for is in HTML, not a sales script
  • You named the adjacent job without a rant
  • Frozen prompts that are truly out of ICP are marked wontfix

If you want the adjacent job’s demand, that is a product decision. Do not run this loop to win prompts you will not fulfill.

Which third-party facts actually move the substitution?

Owned pages are one node. Substitution often lives on a directory row, a review, or a 2019 press hit that still uses the other company’s city. Ahrefs-style “more mentions” correlational studies are Overview-side and are not a law. What you can operate: the URLs already in the Sources panel must stop teaching the wrong fact.

Source classFact that must match the entity pageHow it teaches a swapFix
Directory / associationCategory field + NAPOld SIC / “see also” points at the namesakeClaim the listing; change the category; add the disambiguator
ReviewsJob-to-be-done language“Great service” with no noun, or the adjacent nounAsk for category language in new reviews; do not fake volume
Press / about-us roundupsLegal name, city, offerBoilerplate copied from the homonymSend a two-sentence fact lock; do not demand a takedown of a true story about them
Registry / Crunchbase-classFounding, HQ, legal nameDuplicate recordsMerge or annotate; one canonical
Wikidata / WikipediaOnly if the item is actually youWrong Q-id or the other articleDo not buy a Wikipedia stub. Notability is a bar, not a SKU
Marketplace listingTitle + categoryYou rank in the wrong aisleFix the listing; stop blogging about the aisle

Third-party order when the sheet shows a substitute URL:

  1. Open the cited URL. Quote the sentence that could have been lifted.
  2. If you control a profile on that host, edit the category / NAP / about field this week.
  3. If you do not control it, send a factual correction with the disambiguation sentence and the legal name. One email. Dated.
  4. If the URL is a roundup that lists the adjacent job as your job, pitch a criteria correction or ship your own comparison page that is easier to cite.
  5. If the URL is an encyclopedia article about the homonym, you will not win a deletion. Win the category + geo prompts instead.

Wikipedia and Wikidata can help entity consistency when the item is real and independent. They are not a paid lever, and a promotional stub can make the collision worse. Treat them as optional identity URLs in sameAs only after you have opened the page and confirmed it is you.

  • Every substitute URL in this month’s union has an owner and a next action
  • Directory category matches the owned noun
  • You did not invent review volume
  • You did not report a share-of-voice percentage from the directory screenshot

What makes a comparison page honest enough to cite?

Recommendation prompts love tables. They also punish fiction. The FTC’s small-business advertising FAQ is blunt: ads must be truthful and non-deceptive, and advertisers must have evidence to back claims. Comparative advertising is legal as long as it is truthful (FTC: Advertising FAQs). The Commission’s comparative-advertising policy encourages naming competitors when the basis of comparison is clearly identified and the claim is not deceptive (FTC: Statement of Policy Regarding Comparative Advertising).

That is US advertising law, not an AEO ranking factor. It is still the right writing standard. A model that can lift “we win when X; they win when Y” has a safer sentence than “we are the best.” Google’s helpful-content questions still ask whether you are the primary source for the substance (Google: creating helpful content).

Honest pagePuffery pageWhat retrieval does
Criteria table with a named basis“#1 in [category]” with no basisLifts the table; skips or hedges the slogan
“They win when [constraint]” rowRival column is a cartoonTreats you as a source; or treats you as a rant
Dated, with the offer you actually sellUndated “ultimate guide”Prefers the dated roundup instead
Prices only if you will honor themInvented competitor pricesWrong-price answers become misrepresented
Links to the rival’s current money URLScreenshot from 2022Stale compare teaches a stale substitute

Ship one comparison URL per money category, not one per rival. Columns a model can lift:

CriterionUsAdjacent / named substituteWho should win
Job[Narrow][Broad or other]Them if the buyer needs [broad]
ICP / size[Yours][Theirs]Split on the constraint
Geo / license[Yours][Theirs]Local license vs national lead-gen
Engagement[How you work][How they work]Buyer’s operating constraint
Not for[Your not-for][Their not-for if you can source it]Send-away row

Checklist:

  • Every objective cell has a source you would show a lawyer
  • At least one row where the other company should win
  • Visible updated date
  • Same category noun as About and the service URL
  • No invented share-of-voice, traffic, or “AI citation rate” cells

If you cannot name a case where they should win, you are not writing a comparison. You are writing a brochure with extra columns. Brochures do not unseat a roundup.

What usually fails first in the correction loop?

The failure mode is shipping the comparison page while About still agrees with the namesake, or “fixing schema” while directories still file you under the adjacent noun. Retrieval will keep quoting the denser, older, independent URL.

FailureWhat it costsWhat you do instead
Comparison page firstA citeable rant that still names the wrong jobEntity page + not-for, then compare
Schema without visible disambiguationA conflict the validator likes and the model ignoresWrite the sentence in HTML, then mark it up
sameAs pointed at the homonymYou signed the swapDelete that URL from the array this hour
Blog calendar as the fixMore pages that reuse the broad nounOne noun, five facts, three directories
Fake reviews / purchased WikipediaTrust debt on a surface you do not controlIndependent coverage or nothing
Moving the prompt panel mid-quarterYou cannot tell if the loop workedFreeze IDs; park new rivals on a watch list
Invented SOV slideBudget for the wrong URLsubstituted ÷ runs on the frozen sheet
Blocking OAI-SearchBot to “control” answersYou vanish; the substitute staysFetchability first; see crawler docs

I have shipped hundreds of production sites. The pattern that wastes a sprint is a new “vs” URL on top of an About page that still says the old city. The model does not owe you a reconciliation meeting. It will pick the cluster of pages that agree.

Stop-the-line checks:

  • Entity page live and matching schema before comparison publish
  • Three directory rows updated before you pitch a journalist
  • robots.txt still allows the search bot you actually want citations from
  • Panel IDs unchanged

Bravery is not a substitution strategy.

How do I run the weekly monitor without inventing share of voice?

Cadence is weekly on a frozen 8–15 prompt subset of the money panel — category recommend, ICP-constrained, head-to-head with the named substitute, and the brand probe. Full 25–40 panel methodology stays in the citation-gap spoke. This loop only needs to know whether the wrong rival is still in the slot.

Weekly ritualPassFail
Same prompt_idsWording unchangedSomeone “improved” a prompt
Search / Sources onPanel loggedMemory run scored as a win
substitute_type filledEnum, not a paragraph“AI is biased” as the cell
Formula on the sheetsubstituted_runs / runs with N writtenA percentage with no denominator
Vendor SOV (optional)Semrush (or peer) formula on their set, labeled as suchMixing vendor SOV with your N=3 screenshot

Semrush’s glossary is useful if you pay for it: mention ≠ citation ≠ share of voice (Semrush: AI SEO metrics). Keep those rows separate. A mention of the namesake is not the same ticket as a citation of their About page.

What “working” means for this spoke — pick before week one:

SignalUse it asDo not use it as
Brand probe returns your legal name + categoryIdentity passA recommendation win
Category prompt names you at least once in N weekly runsMention progressA guarantee next Tuesday
Substitute absent in 2 of 3 runs on a money promptSubstitution down“We killed them”
Your comparison URL appears in SourcesPage is retrieveableCategory ownership
GSC generative-AI impressions (if the property has the report)Google-surface volumeChatGPT / Perplexity coverage

Citation rate is non-deterministic. Google’s docs are explicit that indexing and serving are never a promise. OpenAI does not publish a recommendation SLA. Re-measure. Do not write a day-count guarantee into a deck.

  • N and the formula are on the sheet header
  • Vendor percentages, if shown, are labeled with product + date + competitor set
  • No cell named “AI SOV” that cannot be audited
  • Owner is a person

Sample week-over-week read — format only, fill from your panel. These cells are not a client result:

WeekRuns (same IDs)substitutedaccurateabsentNote
0 (baseline)N[count][count][count]Which substitute URL appeared
2same N[count][count][count]Brand probe vs category prompt
8same N[count][count][count]Did the comparison URL enter Sources?

If a stakeholder needs a percentage, compute substituted / N in front of them with N on the sheet. Do not round it into an unauditable “AI SOV.”

What should I ship if I only have a week?

Skip the blog calendar, the llms.txt theater, and the five-rival microsite. Spend the week on the loop in order.

DayShipDone means
1Freeze 8–12 prompts + 3-run baselineSubstitution type on every money row
2Entity page: offer, legal name, geo, not-for80-word lift in HTML; schema matches
3Disambiguation sentence + sameAs hygieneHomonym URL removed; namesake named as not us
4Three third-party rows from the Sources unionCategory / NAP / about field corrected or emailed
5One honest comparison table on one URLAt least one “they win when” row; dated
6–7Index / fetch check + second panel passSame IDs; write the delta, not a vibe

Skip list for a one-week constraint:

  • New thought-leadership posts
  • AI-only schema types Google does not document for Search
  • Paid “get us into ChatGPT” vendors
  • Wikipedia drafts that fail independent-source tests
  • Rewriting every service page
  • A share-of-voice target with no frozen denominator

If day 1 shows a true peer set and no collision, stop this spoke. You are in density work, not disambiguation. Hand the URL leaderboard to the citation-gap ritual.

When is this not worth doing yet?

Do not run a correction loop on a moving identity or a site that cannot be a source.

BlockerWhy the loop failsWhat first
Legal name / rebrand this monthYou will teach two entitiesFreeze the name, then write
No category noun you will fulfillAdjacent prompts are the honest matchProduct decision, not AEO
Sitewide noindex, login wall, or search-bot disallowYou are not in the retrieved setEligibility; AI features
Duplicate live hosts (old Webflow + new Next)Models cite the zombie namesake-adjacent copy301 the zombie
You cannot staff factual correctionsDirectory edits will rotAssign an owner
The “wrong” company is a true peerThis is competitive densityCitation-gap tickets, not disambiguation
Offer does not exist yetComparison cells will be fictionPause the vs page

Checklist — proceed only if:

  • You can say the category noun out loud and take the work
  • Canonical domain is decided
  • Someone can edit About HTML this week
  • You will re-run the same prompts, not a new set each Monday
  • You can live with the homonym remaining famous on naked-name queries

If those boxes are empty, a visibility audit is the right next step, not a competitor-takedown fantasy. The lane page is /visibility. The booking path is a visibility audit.

You cannot un-recommend a company the web still teaches. You can make the right company cheaper to corroborate for the prompts that pay rent.

FAQ

How do I stop AI from recommending the wrong competitor in my category?

You cannot stop it with a switch. Correct the evidence trail: an entity page that states legal name, category noun, geo, and who you are not; same-name disambiguation in prose and matching schema; third-party listings that repeat those facts; and one honest comparison page with a they-win-when row. Then re-run a frozen prompt panel weekly. ChatGPT Search recommends from retrieved sources, not from a removal form.

How do I measure whether stopping the wrong-competitor recommendation is working?

Freeze the prompt IDs and count substituted vs accurate on the same panel each week. Write substituted_runs / runs on the sheet with N visible. Treat a vendor share-of-voice figure as that vendor’s formula on that vendor’s competitor set — never as a number you invented from one chat. Brand-probe accuracy is an identity pass, not a recommendation win.

What usually fails first when teams try this?

They publish a comparison page while About and directories still agree with the namesake or the adjacent noun. The next failure is sameAs pointed at the homonym, or schema that does not match visible copy. Fix the entity page and three third-party rows before you write “vs.”

How long does this take to show results?

Fetch and eligibility can move in days once HTML is live; OpenAI documents about 24 hours for search-result updates after a robots.txt change, which is not a substitution SLA. Accurate brand probes often take weeks. Category recommendations are non-deterministic — re-measure at two weeks and eight weeks on the same IDs. Do not invent a day-count guarantee.

What should I skip if I only have a week?

Skip new blog volume, llms.txt theater, paid “ChatGPT listing” vendors, and Wikipedia drafts. Spend the week on baseline runs, the entity page, disambiguation, three Sources-panel URLs you can edit or email, and one honest comparison table. Then re-run the same prompts.

When is this not worth doing yet?

If the legal name is mid-rebrand, the site is not snippet-eligible, you will not fulfill the category noun, or the named company is a true peer rather than a collision or adjacent miss. Freeze identity and eligibility first — or hand true-peer gaps to the citation log instead of this loop.

CTA

If the answer keeps naming the wrong company in your category, you do not need a switch. You need the correction loop — then an audit if the panel still lies after the entity page is honest.

Lane: /visibility · Book a visibility audit.

FAQ

What questions does this article answer?

How do I stop AI from recommending the wrong competitor in my category?
You cannot stop it with a switch. Correct the evidence trail: an entity page that states legal name, category noun, geo, and who you are not; same-name disambiguation in prose and matching schema; third-party listings that repeat those facts; and one honest comparison page with a they-win-when row. Then re-run a frozen prompt panel weekly. ChatGPT Search recommends from retrieved sources, not from a removal form.
How do I measure whether stopping the wrong-competitor recommendation is working?
Freeze the prompt IDs and count `substituted` vs `accurate` on the same panel each week. Write `substituted_runs / runs` on the sheet with N visible. Treat a vendor share-of-voice figure as that vendor’s formula on that vendor’s competitor set — never as a number you invented from one chat. Brand-probe accuracy is an identity pass, not a recommendation win.
What usually fails first when teams try this?
They publish a comparison page while About and directories still agree with the namesake or the adjacent noun. The next failure is `sameAs` pointed at the homonym, or schema that does not match visible copy. Fix the entity page and three third-party rows before you write “vs.”
How long does this take to show results?
Fetch and eligibility can move in days once HTML is live; OpenAI documents about 24 hours for search-result updates after a robots.txt change, which is not a substitution SLA. Accurate brand probes often take weeks. Category recommendations are non-deterministic — re-measure at two weeks and eight weeks on the same IDs. Do not invent a day-count guarantee.
What should I skip if I only have a week?
Skip new blog volume, llms.txt theater, paid “ChatGPT listing” vendors, and Wikipedia drafts. Spend the week on baseline runs, the entity page, disambiguation, three Sources-panel URLs you can edit or email, and one honest comparison table. Then re-run the same prompts.
When is this not worth doing yet?
If the legal name is mid-rebrand, the site is not snippet-eligible, you will not fulfill the category noun, or the named company is a true peer rather than a collision or adjacent miss. Freeze identity and eligibility first — or hand true-peer gaps to the citation log instead of this loop.
Sources

Last reviewed — OpenAI ChatGPT Search help and crawler docs, schema.org Organization / sameAs / disambiguatingDescription, Google Organization structured data and AI-features guidance, FTC comparative-advertising policy, Wikipedia disambiguation, and Semrush AI-metric glossary checked 2026-09-05.

More from this lane

AI Visibility

All →
Book the audit