Search ads respond to a single query. ChatGPT conversations do not work like that: someone asks about running, several messages later asks about shoes, and a week later mentions a hiking trip. OpenAI has published a technical account of how it built an ad system for that kind of drifting intent, and it is one of the more detailed looks any AI company has given at how its ads are chosen.
The core is a custom, post-trained language model that OpenAI calls the orchestrator. It runs the whole ad flow as an agent, calling tools in a loop. It summarises the conversation into one or more commercial queries, turns them into embeddings, retrieves a deliberately broad pool of candidate ads from several indexes, filters out those that fail on targeting, policy, budget or pacing, and sends the rest to scoring systems for relevance and predicted engagement. It then nominates plausible candidates to a separate auction tool, which sets the price and picks the winner; the orchestrator itself does not choose the final ad or its price. If an ad still seems out of place, or is not ready before ChatGPT's answer is, it is not shown, and OpenAI stresses that returning no ad counts as success.
Two design choices matter most to users. Ad sessions are stateful: they remember context across turns and across conversations, and for people who opt into personalised ads, the orchestrator can use non-sensitive information from past chats. And ad selection runs in its own service, with separate models and code, alongside answer generation rather than inside it. OpenAI says this keeps ads from influencing answers and means an ad outage cannot slow ChatGPT down. The system has helped ChatGPT Ads pass a $1 billion annualised revenue run rate less than 200 days after launch.
For readers weighing ChatGPT's free and Go plans against paid ones, the separation is the right architecture, and it is more than most ad-funded products disclose.
The limits are about trust rather than engineering. There is no independent audit of the boundary between ads and answers; users have to take OpenAI's word that the two never meet. Memory across conversations is a real privacy trade, and the post does not define what counts as non-sensitive. OpenAI also describes a self-improvement loop in which models evaluate deliveries and train other ad models, which will make the system's behaviour harder for outsiders to follow over time.