ChatGPT's source selection lives in an editable prompt OpenAI can rewrite overnight

Source: Suganthan Mohanadasan's ChatGPT source-selection teardown, dated 14 to 22 July 2026.

The short version

  • ChatGPT's source selection runs on editable server-side policy, so OpenAI can change how it picks sources without retraining a model or announcing anything.
  • A network-traffic teardown found two hidden system messages in every ChatGPT conversation, including a sources-and-filters prompt whose content is stripped server-side and unreadable even though its presence is provable.
  • OpenAI deleted the field a public teardown had just documented within eight days of publication, on 21 and 22 July 2026, confirming the underlying mechanics can move faster than any analysis of them.
  • A newly populated field exposes, per cited claim, which pages lost the citation, turning competitive analysis of ChatGPT visibility into something a site owner can read directly from their own conversation history.
Watch: ChatGPT's runner-up layer: how source selection really works

ChatGPT does not rank sources the way Google Search ranks pages. A network-traffic teardown by SEO practitioner Suganthan Mohanadasan, posted 14 July 2026 and updated 22 July 2026, traces source selection to a hidden server-side instruction and a set of named retrieval pipes that OpenAI can edit at will.1 Eight days after that post went live, OpenAI deleted the field the teardown’s evidence hung on and reshaped the payload around it, proving the underlying point before most readers had finished the article: the selection mechanism is a policy someone at OpenAI can rewrite overnight, with no retraining and no announcement. Anyone selling a checklist of “ChatGPT ranking factors” is selling something that expires before the invoice clears; durable work has to plan for that instability instead of fighting it.

OpenAI deleted the field an entire teardown’s evidence hung on, and reshaped the payload around it, eight days after the teardown published: on 21 and 22 July 2026.

Does ChatGPT have “ranking factors” you can optimize for?

No. ChatGPT does not run a stable ranking algorithm that assigns scores to competing pages the way Google Search’s ranking systems do. A network-traffic teardown by SEO practitioner Suganthan Mohanadasan, first published 14 July 2026 and updated 22 July 2026, traces source selection instead to a server-side instruction and a set of retrieval pipes, both of which OpenAI can edit without retraining any model.1

Suganthan states the implication directly: “Source selection is a policy, not a behaviour. It lives in an instruction OpenAI can rewrite any day, without retraining a model or telling anyone.”1 That matters for anyone selling a checklist of “ChatGPT ranking factors”: a policy can flip between two requests to the same account, and across his ten days of testing it did, repeatedly. My read: the durable question worth asking is what kind of lever produced a given win. The specific page that wins today is replaceable by definition; the mechanism behind the win is the part still standing after the next deploy.

The instinct to search for ranking factors is inherited from a decade of Google SEO, where crawling, indexing and ranking are genuinely separable, documented systems with a research and patent trail behind them. ChatGPT’s architecture does not offer that separation. A prompt and a set of retrieval pipes are configuration, editable by whoever owns the deploy pipeline in the time it takes to merge a pull request, which calls for different scrutiny: ask what would have to be true for a given pattern to still hold next month, before building a strategy on it.

Where does ChatGPT’s source selection actually live?

Source selection lives in two hidden system messages that ChatGPT injects into every conversation before it answers, tagged in the underlying metadata as identity_prompt and sources_and_filters_prompt. Suganthan’s teardown, dated 14 to 22 July 2026, confirmed the second message’s slot is present 64 times across a 30-conversation sample, though its actual text is stripped server-side and never reaches the browser in either the live stream or the stored conversation JSON.1

The second half of the mechanism is the retrieval layer: named pipes that fetch and cache the pages a conversation cites. Suganthan’s July 2026 capture, taken before the schema changed, shows three established pipes, bright (Bright Data’s scraper), labrador (a licensed-content pipe) and serp, plus a newly spotted fifth pipe, bing, gated to a subset of accounts.1 Across his own 30-conversation sample the census read bright 558 times, labrador 21, serp 16, and bing exactly zero, a distribution he confirmed by grepping his own 1.2MB of cached feature-flag configuration for anything Bing-related and finding nothing. The same cohort-gating pattern was documented by a separate GEO researcher, David Konitzny, and reported in Suganthan’s teardown: bing had already fired on Konitzny’s own account, on the same bobvila.com lawn-mower review page that reached Suganthan through bright, in the same week.1 Same URL, same seven days, two different pipes serving two different accounts: cohort-gating in the plainest terms available, OpenAI switching a fetch mechanism on for some users and not others, without telling either of them.

Worth flagging plainly: the census above (558/21/16/0) describes one practitioner’s own account over 30 conversations in mid-July 2026, a single-account sample. It proves that multiple named pipes and account-level cohort-gating exist. It is too small to generalize into a platform-wide ratio, and Suganthan does not present it as one.

Why did the mechanics change within days of being documented?

ChatGPT’s source-selection fields changed because OpenAI edited server-side configuration, not because any model retrained. Eight days after Suganthan Mohanadasan published his 14 July 2026 teardown, OpenAI deleted result_source, the field every pipe label had hung off, from the payload on 21 July 2026; the next day, sources regrouped under a new field, search_result_groups, with the reference id switching from a string to an object.1

The rename retired real evidence from Suganthan’s own post: the pipe labels are gone from fresh traffic, deleted rather than renamed, which moves the bright/labrador/serp/bing census and the cohort-gating test from active experiment to historical record.1 The runner-up layer, covered below, survived the move but changed address, from riding on retrieval entries to riding on citation items instead: same underlying data, new location in the payload. Suganthan tracks the churn with a browser extension he built for the purpose, FanoutFox, which reads all three generations of the format so its changelog becomes the running record between teardowns.1 His own framing of the lesson: everything in his post carrying a proper noun has a shelf life measured in days, a warning that proved out eight days after he published it. The mechanism he described, server-side, policy-driven source selection, did not stop existing when the field names shipped under new labels. Only the vocabulary for describing it did.

There is a broader lesson here for anyone writing or reading about AI-platform mechanics generally: a specific, named technical detail is evidence about a moment in time, useful for exactly as long as that moment lasts. Suganthan’s own practice, dating every claim including his own, is the discipline this article follows too: every field name above is tied to a July 2026 date because by the time this is read, OpenAI may have moved the schema again, and the pipe census and field names are already confirmed stale as of 21 to 22 July 2026.

What is the runner-up layer, and why does it matter competitively?

The runner-up layer is a field, called supporting_websites in Suganthan’s July 2026 capture, that ChatGPT attaches to every cited claim, listing the other pages that supported the same claim but did not win the visible citation slot. It sat empty in his June 2026 captures; by his 14 July 2026 teardown it was populated and, in his words, “quietly the most useful thing in the whole payload.”1

It surfaces in two distinct shapes. The first is what Suganthan calls the domain fold made visible: when a query pulls in several pages from the same domain, ChatGPT folds them into one citation slot, and the runner-up layer now shows exactly which sibling pages lost. He watched a cited emirates.com baggage-rules page carry other emirates.com pages beneath it, including a German-locale duplicate of the identical page, and a Range Rover overview page win a spec claim with the brand’s own /electric-range page demoted to support underneath it.1 His conclusion: if twenty thin pages cover one topic, nineteen of them are losing to the twentieth, which turns consolidating near-duplicate pages from SEO folklore into something visible, page by page, inside a single conversation.

The second shape is cross-domain competition, and it is the more consequential one for GEO work. In a thread about crawler verification, the cited page was ahrefs.com/robot; sitting beneath it as unseen support were semrush.com/bot and mj12bot.com, all three fetched through the same bright pipe.1 In a separate thread, bhg.com won a lawn-mower citation through the licensed labrador pipe while protoolreviews.com supported the same claim through the scraped bright pipe: a licensed source beating a scraped one for the same sentence. Elsewhere a Cloudflare blog post won its citation with The Verge’s coverage of the same story sitting beneath it, the pairing reversed.1 Suganthan calls this a genuinely new instrument for competitive GEO work: a per-claim record of who won a citation and who came second, visible only to someone willing to open their own conversation JSON and read it. No paid visibility tool surfaces this today, as of his July 2026 teardown. My synthesis: once one does, “second place per claim” becomes a metric worth tracking the way share-of-voice already is, and the earliest movers will be whoever is already pulling this data by hand.

This also complicates any assumption that a licensed-content deal guarantees a citation over a scraped competitor. Suganthan’s examples run both directions in the same payload: labrador beat bright in the lawn-mower thread, and a scraped Cloudflare post beat a licensed Verge story elsewhere.1 My inference, which the teardown does not measure directly: the deciding factor sits somewhere else in the retrieval layer, most plausibly relevance and freshness signals rather than which pipe fetched the page. Suganthan’s data shows the pattern; it does not isolate the cause.

How should you work against a source-selection policy you can’t read?

You cannot read ChatGPT’s sources_and_filters_prompt directly, the hidden system instruction that governs which sources it selects, since OpenAI strips its text server-side before it reaches the browser. You can still watch the instruction’s effects: Suganthan’s teardown found ChatGPT appending the qualifier “official” to fan-out queries seventeen times across a 30-conversation census, on factual lookups like “Emirates official” and “AhrefsBot official.”1

That is the sealed instruction executing in the open, and it points to practical moves. My synthesis, built on what the teardown documents: date every claim you make about ChatGPT’s source mechanics, the way this article does, because the underlying field names moved twice in the ten days between Suganthan’s two posts. Consolidate near-duplicate pages instead of publishing variants, since the domain-fold evidence shows siblings competing against each other for the same slot rather than against outside competitors. Treat cohort-gated pipes like the bing pipe as a watch item rather than a fire drill: if an account lands in that cohort, plain Bing indexation (Bing Webmaster Tools plus a working sitemap) becomes directly relevant to ChatGPT visibility, and costs nothing to have in place regardless of cohort. Pull your own runner-up data on the queries that matter to your business: open a stored conversation, find the citation for your highest-value query, and read what the page that beat you says, in the words that won. That is a per-claim competitive audit, and as of this teardown’s July 2026 snapshot, nothing else on the market offers it.

None of this is stable ground. The field names in this article are already dated the moment they are published, by design of the argument they support: source selection is policy, and policy changes when someone with commit access decides it should. The only durable move is the one Suganthan makes explicit: treat every specific as a snapshot, keep re-checking your own traffic, and build the underlying practice, consolidation, official-source credibility, cross-tier citation strength, on the mechanism rather than on this week’s field name for it.

Terms defined here

  • The runner-up layer. The per-claim record ChatGPT attaches to a cited claim, called supporting_websites in Suganthan Mohanadasan's July 2026 network-traffic capture, listing the other pages that supported the same claim but did not win the visible citation slot; read as a per-claim competitive signal for which pages a citation was won or lost against.

Sources

  1. Suganthan Mohanadasan: ChatGPT Changed How It Picks Sources While You Were Reading My Last Post