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
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.
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…
It simply does not work. At least not for B2B ads. digitrans.lu/blog/chatgpt-ad…
This is great, NOW STOP TRYING TO MAKE ME SPEND MONEY ON YOUR FUCKING AD PLATFORM IN CONVERSATIONS COMPLETELY UNRELATED TO ADVERTISING!!
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.








































