You ask ChatGPT the question a buyer would ask, and it names them, not you. It feels personal. It isn't. It's a retrieval problem you can mostly fix, and a memory problem you can only move slowly.
ChatGPT doesn't search for your competitor's brand name. It fans a buyer's question into several internal searches - comparisons, use cases, pricing angles, "best for" variants - the mechanic we cover in what is query fan-out. It reads whatever pages win those searches, then writes the answer from what it found.
If every page that wins those internal searches belongs to your competitor - their comparison page, their listing on a review site, a roundup that names them and not you - the answer names them. Not because the model prefers them. Because their pages showed up in the search and yours didn't.
Engines lean on sources they already trust to be current and structured: comparison pages, review platforms, forums, and category listicles. These pages already do the work an engine needs - they name several brands, describe what each is for, and often rank or compare them directly. A page like that is easy for a model to extract from and easy to cite.
If the sources an engine reads for your category all mention your competitor and not you, the answer follows the sources. Your absence from that seen pool - not a hidden penalty, not a blocklist - is the single most fixable cause of losing the recommendation.
A page titled "best project management tool for a 10-person agency under $50/seat" answers a specific buyer question directly. A homepage that says "we're the leading project management platform" answers nothing in particular. When an engine is matching retrieved content to a specific question, the specific page wins the match almost every time - the general claim has nowhere to attach.
This is also why a generic "About us" page rarely gets cited even when it's well written. It doesn't correspond to any question a buyer actually asked.
Separate from live retrieval, models carry a prior from training data about who the recognized players in a category are - which brands got mentioned, compared, and reviewed across the web for years before this question was ever asked. That prior shapes tone and default assumptions even when the model is also reading live sources.
It moves slowly, and only in one direction: by more of the public web talking about you, consistently, over time. You can't patch it with one new page. You can only earn it, the same way your competitor did.
If your locations, pricing, or claims say different things depending on which page an engine reads - your site, your Google listing, an old directory entry - that inconsistency reads as risk. An engine building a confident recommendation has less reason to name a brand whose own facts don't agree with each other. Consistency across the sources an engine can find is a small, fixable thing that removes a real reason to skip you.
Asking ChatGPT your own question once and reading the answer is an anecdote, not a measurement. Answers vary by phrasing, by session, by which sources happened to rank that hour. The only way to know whether you're being read, named, and picked - and whether that's changing - is to ask a frozen set of real buyer questions repeatedly, across engines, and count what actually comes back. That's the discipline behind AEO, covered in how to navigate AEO.
We run a fixed set of real buyer questions against ChatGPT, Claude, Gemini, and Perplexity, on a schedule, and report exactly which brand got named, where you ranked in the answer, and which sources the engine leaned on to get there. That turns "ChatGPT likes our competitor" from a feeling into a re-derivable count - and points at the specific pages and sources worth fixing first.