We built ChatGPT’s ad stack to respond to an evolving conversation, while ensuring answers stay independent. Here’s how the LLM orchestrator, retrieval, ranking and auction tools work together.

Oct 21, 2026 · 5:42 PM UTC

109
66
27
955
70,269
RelevantRecentLikes
The orchestrator turns a conversation into multiple intents by exploring the users’ possible needs. Embedding-based search finds candidate ads, then eligibility and relevance checks narrow the pool. The auction tool handles final selection and pricing.
4
6
110
17,771
The ChatGPT frontend shows eligible ads below the answer, labeled as sponsored. If an ad arrives after the answer is fully generated, it isn’t shown for that turn. ChatGPT’s answer doesn’t wait for ads. openai.com/index/building-ch…
1
3
81
11,924
Starting each session with racist slur to cut ads eligibility
3
110
Separating the answer path from the auction is the hard product promise. If retrieval for ads and retrieval for truth share too much state, “independence” becomes a branding claim enterprises won’t trust.
5
The hard eval here isn't ad relevance, it's independence. I'd want a standing test: same prompts with and without ads in the candidate pool, answer text diffed. If the answers drift, the wall leaks.
9
stronger models evaluating results and helping train smaller, cheaper models, nice 🔥
5
320
so basically the model grades its own homework and then sells ad space next to the grade
41
the separation looks clean on the diagram. curious how the ad eligibility and placement decisions are audited though, especially when the conversation changes halfway through. someone has to own those logs
9
dropping any ad that lands after the answer finishes means the answer path has zero dependency on the ad path. ad service degradation shows up as lower fill, and nothing in the answer path can observe it.
3
I don't even care that paying customers skip the ads. OpenAI is a $2 trillion company that promised AI would better humanity. Not sell ads.
42
While making sure all researches usually put openai products at the top of the list. 👈
56
The stateful session makes intent reversal an interesting test: 'help me choose shoes' → 'actually, I repaired my old pair.' Does that cancel in-flight candidates too? Getting to no ad after a clear change of mind seems as important as finding a relevant one initially.
7
"Answers stay independent" is about to be the most tested sentence on the internet 🍿
5
633
your own diagram shows conversation updates feeding the ads eligibility check, so independence here means the ad can't edit the answer — the targeting still reads the same conversation. the falsifiable test: same prompt with ads on and off, diff the answers.
31
This is great, NOW STOP TRYING TO MAKE ME SPEND MONEY ON YOUR FUCKING AD PLATFORM IN CONVERSATIONS COMPLETELY UNRELATED TO ADVERTISING!!
Dude if they don't stop trying to get me to spend money on fucking ads. This shit is so annoying and completely irrelevant to what my conversation is about. I'm talking about prompt caching, stop trying to make me spend money on your stupid ad platform.
1
304
The 'answers stay independent' claim is begging for an eval: same queries with ads on vs off, scored for answer drift. That's exactly the kind of thing that's assumed fine until someone measures it — would love to see the test set published.
1
131
The part most people will care about is answers staying separate from ads. A simple habit for users: if a reply suggests a product, ask it to list two other options and why. That makes it easy to tell whether you're getting advice or a pitch.
62
Keeping answers independent while still serving ads is the hard part. Most ad systems just insert them and hope the model doesn’t start leaning on them. Have you seen any cases where the ads actually change what the model says, or has it stayed clean so far?
24
Nice detail: ads get conversation updates, but nothing flows back into answer generation. Clean on paper. What the diagram can't show is training. Will OpenAI commit publicly that ad performance never feeds model tuning?
36
Ads that arrive after the answer is done just get dropped for that turn. That puts the auction on a hard latency budget: a slow ad loses money instead of making the answer wait. Good call.
22
how do you eval that answers don't drift toward whatever ad won the auction
1
1
1
69
independence is a testable claim, not an architecture diagram. run the same prompts ads on vs off and publish the drift numbers, otherwise that wall is just a promise with an auction behind it
9
the orchestrator guessing every possible need the user has is basically the same job as writing a good answer, keeping those two from merging into one model is going to be the hard part
65
the day codex recommends a sponsored npm package i'm out lol
45
Meta ads: we'll guess what you want from how long you paused on a reel. ChatGPT ads: you literally typed what you want in full sentences. Media buyers who learn to write for intent instead of interruption are about to have a very good year.
166
Building an entire auction system and then promising it won't touch the answers is the most PM sentence I've read this year. Sales will be asking about that toggle by Friday.
223
Is it in the context after the add is sent to the chat? How’s it from there with the next message?
56
Spent all year trying to get my agents to coordinate on one bug fix Theirs are running an auction
41
How do you actually test that answers stay independent? In medicine we'd do a double read. Same convo with and without the ad stack, publish how often the answer changes
22
Keeping the auction separate from the answer is the whole trust question. How do you verify ranking never leaks back into what the model says?
14
Ads that fit the conversation could actually be useful if they're clearly labeled. The labels will decide how people feel about this
84
“You probably don’t need to buy anything” is an answer worth protecting. Especially when the system beside it is running an auction.
128
the independence claim is interesting but i’d still test whether ranking signals leak into the final answer when the conversation is long
78
ad selection here is a serial chain: llm orchestrator call, embedding search, eligibility and relevance checks, then the auction. generation runs in parallel and any ad that lands after the answer finishes gets dropped, so answer completion becomes the deadline for the whole chain. that means fill rate depends on how long the answer takes to generate. a one-line reply from a fast model closes the window early while a long reasoning answer keeps it open. so fill rate should climb with output length, and i'd want to see miss rate bucketed by output tokens.
33