OpenAI details how its ChatGPT ad stack keeps ads apart from answers
OpenAI has published a technical account of how it built the ads system behind ChatGPT, built around a post-trained LLM that orchestrates retrieval, ranking, relevance checks and auctions. According to OpenAI, ChatGPT Ads reached $1 billion in annualized revenue run rate less than 200 days after launch, and more than 100,000 advertisers have run ads on ChatGPT since launch.
- OpenAI built a bespoke ads stack for ChatGPT around a post-trained LLM called the orchestrator that makes tool calls for retrieval, ranking, relevance and auctions.
- Ads sessions are stateful, remembering information across turns and across multiple conversations.
- Ad selection runs in a separate service with separate models and code, so ads do not influence ChatGPT answers and cannot delay them.
- According to OpenAI, ChatGPT Ads reached $1 billion in annualized revenue run rate less than 200 days after launch, with more than 100,000 advertisers since launch.
- Returning no ad is treated as a normal, successful outcome.
Why a conventional ad system did not fit
OpenAI says traditional advertising systems respond to discrete events. A user searches for something or opens a page, the system receives that request, retrieves candidate ads, ranks them, runs an auction to price the opportunity and shows the result.
ChatGPT does not produce such a concrete moment, according to the company. People arrive with goals such as planning a trip, choosing business software, furnishing a home or learning a hobby, and the meaning of the conversation shifts over several turns. OpenAI gives an example from its own engineers: a conversation starts with a general question about running and, several turns later, moves to shoes for training. A system acting on the first message could retrieve the wrong intent and get in the user's way.
OpenAI lists four risks of treating each message as a standalone request: misreading the user's goal, starting the advertising flow too early, showing ads that obstruct the user journey, and wastefully rerunning the flow whenever the request changes. It says this forced the team to build an ads stack from scratch.
Stateful sessions and a separate service
The company names three key design decisions. The first is stateful ads sessions, in which information is remembered across turns of a conversation and across multiple conversations. The second is a custom, post-trained LLM that uses a tool call architecture to interpret context and intent, then select, rank and deliver ads. The third is running ad selection separately from ChatGPT's answer generation, in its own service, to keep ads from influencing answers and to maintain ChatGPT's neutral voice.
According to OpenAI, the ads selection process runs alongside normal response generation, using separate models and separate code. ChatGPT sends the initial request context to the ads server, and the ads system adapts as the exchange develops.
The company points to practical consequences of this split:
- ChatGPT has no dependency on the ads system, so if ads serving is unavailable or slow, the organic response continues unaffected.
- The ads system cannot take down or delay the ChatGPT product.
- Returning no ad is described as an ordinary, successful outcome. The system only delivers an ad if it is clearly beneficial to users and advertisers.
The orchestrator LLM and its tools
OpenAI calls the post-trained LLM the orchestrator. It runs the entire ads flow in an agentic loop, making tool calls for retrieval, ranking, relevance and auction before delivery. Its stated goal is to find the most appropriate ad, one that balances high user value and high advertiser value, while always putting users first.
The company says the orchestrator has to interpret references to earlier messages, recognize when a user is speaking hypothetically, and avoid treating every mention of a product or service as a request to buy. If the user chooses to personalize ads, it also considers available nonsensitive information about past conversations. As the conversation progresses, it can run a fresh set of tool calls with updated context and return better ads to the client, which can use them if they arrive in time.
At a high level, OpenAI describes the steps as follows: the orchestrator turns conversations into brief text summaries, converts them into semantic embeddings, retrieves ad candidates with those embeddings, filters them for eligibility based on budget, user settings and other preliminary checks, assesses quality and relevance, and does a final ranking for placement at the end of a chat response.
The first step is preparing retrieval queries. The orchestrator can rewrite conversation context to broaden commercial possibilities beyond one-to-one search queries. Multiple queries can preserve different aspects of intent, for example transportation, lodging and activities in a trip-planning conversation.
What it means for users and advertisers
The post describes the architecture rather than product terms, but it signals how OpenAI wants ads in ChatGPT to be judged: by whether they stay out of the answer and appear only when intent is clear. For users, the stated safeguards are the separation from answer generation, the option to choose personalization, and a system designed to show no ad when none fits. For advertisers, OpenAI's pitch is that placements appear only with a deep understanding of intent, which it says benefits both sides.
The source text provided ends partway through the description of retrieval, so details of later stages such as ranking and auction mechanics are not covered here.


