How OpenAI built ChatGPT's ad stack: an LLM orchestrator, a separate auction and a $1bn run rate

How OpenAI built ChatGPT's ad stack: an LLM orchestrator, a separate auction and a $1bn run rate

AIOctober 23, 2026
By Antonio Fernandez

TL;DR

  • OpenAI engineers Ritendra Datta and Karthik Gopalratnam published the ad-stack post on 21 Oct 2026.
  • ChatGPT Ads hit a $1bn annualised revenue run rate in under 200 days; 100,000+ advertisers have run ads since launch.
  • The LLM orchestrator nominates candidates, but a separate auction tool sets the price and selects the winning ad.
  • Ads that arrive after ChatGPT's response is ready are dropped; OpenAI calls returning no ad an ordinary, successful outcome.
  • The product feed index is aware of positive and negative product reviews when it retrieves ads.

OpenAI published an engineering post on 21 October 2026 explaining how ChatGPT decides which ad, if any, to show. A custom post-trained LLM that OpenAI calls the "orchestrator" reads the conversation and calls tools for retrieval, scoring and an auction, and the whole process runs in a separate service from the one that writes ChatGPT's answers. In the same post OpenAI said ChatGPT Ads reached $1 billion in annualised revenue run rate less than 200 days after launch, and that more than 100,000 advertisers have run ads on ChatGPT since launch.

What OpenAI published

The post, titled "How we built ChatGPT's novel ad stack for user trust and relevance", was written by Ritendra Datta and Karthik Gopalratnam, members of OpenAI's technical staff, and appeared under the OpenAI Engineering section of openai.com.

The authors describe the system as "a bespoke ads delivery system" built on "a custom, post-trained frontier LLM that makes tool calls for retrieval (identifying the top options), ranking (predicting user engagement), relevance (evaluating the usefulness of the ad), and running auctions for final ad selection and pricing."

Why ads in a chat need a different design

OpenAI starts from the difference between search and chat. A conventional ad request begins with a single event: someone types a search query or opens a page, and the ad system retrieves candidates, ranks them, runs an auction and shows the winner. OpenAI writes that "ChatGPT does not naturally produce such a concrete moment."

In ChatGPT, the post says, people "arrive with goals rather than a one-answer search query", such as planning a trip, choosing business software or furnishing a home. Intent builds over several turns. OpenAI's example is a conversation that starts with a general question about running and, several turns later, moves to shoes for training. A system that acted on the first message "could retrieve the wrong intent entirely."

OpenAI lists four risks of treating every message as a standalone ad request: misreading the user's goal by oversimplifying it, starting the ad flow before the real need is clear, showing ads that get in the way, and rerunning the ad flow every time the request changes, which "creates noise and wastes cost."

Three design decisions

The post names three choices that shape the whole system.

  1. Stateful ads sessions. Information "is remembered across turns of a conversation and across multiple conversations." The ads session runs for the duration of an eligible turn and updates as the exchange develops, instead of relying on "a single flattened query."
  2. An LLM with a tool-call architecture. The orchestrator interprets context and intent, then selects, ranks and delivers ads by calling tools in what OpenAI calls an agentic loop.
  3. Separation from answers. Ad selection runs "separately from ChatGPT's answer generation, in its own service", using "separate models and separate code", so that ads do not influence answers.

The orchestrator has to do more than spot product names. OpenAI says it "must 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 something." If a user has chosen to personalise ads, the orchestrator "also considers available nonsensitive information about the user's past conversations."

The ad selection pipeline, stage by stage

OpenAI breaks the flow into stages that the orchestrator calls in turn. The table below summarises each stage as the post describes it.

The ad selection pipeline, stage by stage
StageWhat happens, per OpenAI
Query preparationThe orchestrator distils the conversation into one or more short text queries that capture commercial intent
RetrievalQueries become semantic embeddings; approximate-nearest-neighbour search across several indices builds a broad candidate pool
FilteringRemoves candidates that fail checks such as campaign status, locale targeting, policy, budget, pacing and placement compatibility
ScoringRates semantic relevance, predicted view, click and conversion, and historical performance
AuctionThe orchestrator nominates candidates; the auction tool handles admission, pacing, quality-adjusted ranking, pricing and selection

Query preparation

The orchestrator first writes one or more queries representing the commercial intent, sometimes "rewriting conversation context to broaden the commercial possibilities beyond 1:1 search queries." Several queries can keep separate needs apart. OpenAI's example is a three-message conversation: what to cover on a two-day trip to Yosemite, whether it will be cold next week, and a question about a brand's new product lines. Although the user never linked the brand question to the trip, the system might represent the conversation as two queries, "[shoes appropriate for hiking trip]" and "[new [brand] product lines good for travel]". OpenAI adds that the orchestrator "is designed to iterate on these representations" until it finds suitable ads.

Retrieval

Retrieval is "deliberately broad". OpenAI builds multiple indices for different constraints, each using a form of approximate-nearest-neighbour (ANN) search over embeddings of the user's intent. One detail stands out for retailers: "the index for product feed ads is designed to be aware of positive or negative product reviews as it fetches the best possible ads." OpenAI notes this does not apply to ads that have no reviews attached.

Filtering

Filtering removes candidates that do not meet the bar on relevance, bids and budget. OpenAI lists the checks: whether the campaign and creative are active, campaign targeting such as "which locales a campaign is allowed to operate in", policy restrictions, remaining budget, pacing, placement compatibility ("what kinds of conversations this advertisement is eligible for") and deduplication at advertiser and campaign level to "ensure fair participation across businesses."

Scoring

Survivors are scored for semantic relevance ("is the ad relevant to the user's goal?"), predicted engagement ("is the ad likely to get viewed, clicked, and converted into the advertiser's desired outcome?") and historical performance ("has the ad performed well when shown to users so far?"). The orchestrator also filters for relevance and safety before the auction.

Auction

The language model does not pick the winner. OpenAI states that the orchestrator "doesn't directly decide which ad will be served, nor does it set a price." It nominates contextually appropriate candidates, and the auction tool applies "auction admission (passing a minimum threshold of relevance and value), pacing (spending ad budget more evenly), bid and auction-feature computation, quality-adjusted ranking, pricing, and final selection."

Why "no ad" is a normal result

The separation between ads and answers has a practical side. OpenAI writes that "ChatGPT has no dependency on the ads system", so if ad serving is slow or unavailable, the organic answer continues unaffected. The post puts it plainly: "Returning no ad is an ordinary, successful outcome."

Even after an auction, an ad can still fail to appear for two reasons OpenAI calls specific to chat. First, an ad can feel inappropriate in a particular conversation even when the conversation passed the integrity models and the ad passed policy review; the orchestrator blocks these. Second, the ad can arrive too late. "If the ChatGPT model is ready to respond, but the ad is not yet ready to place, the ad request times out and the ad doesn't get delivered." OpenAI says it does not delay chat responses to wait for ads.

This produces a distinction advertisers should keep in mind when reading delivery data. OpenAI separates "server-side ad delivery" from "a user-facing ad impression": an ad can be selected and sent to the front end and still not be displayed if it misses the turn. In OpenAI's words, "Winner selection and delivery are separate events."

What the ad looks like when it appears

The ad creative contains the title, description, destination link and any call to action. Alongside it, the ads system returns a model-generated "preamble", which OpenAI describes as "a short, neutral introduction explaining how the ad relates to the conversation." The two travel as a bundle, but OpenAI keeps the preamble apart from the creative to preserve "the advertiser's message while keeping ChatGPT's voice neutral." If the bundle arrives before the response finishes, the ad appears below ChatGPT's answer, "clearly labeled as sponsored."

How OpenAI measures and improves the system

The stack uses conventional logging and data pipelines, which OpenAI says help advertisers connect existing systems, use reporting data and let the team find weak points. The logs record granular outcomes, including:

  • the turn was not eligible for advertising;
  • an ads session started but no retrieval was requested;
  • retrieval returned no candidates;
  • candidates were retrieved but failed hydration or eligibility;
  • an ad was delivered and later received an interaction.

OpenAI also uses its "strongest, highest-reasoning models" to judge the system's results, and says this lets it use smaller, more efficient models for orchestration or retrieval that the strongest model trains. Human feedback sits on top: clicks and hides from users, user surveys and advertiser feedback through Ads Manager. The post says this human input "informs our direction even more than the model's observational feedback." OpenAI credits Codex, its coding agent, as "a fundamental force multiplier" in building the system.

The numbers OpenAI disclosed

Two figures appear in the engineering post. The first is not new: OpenAI's 23 September Southeast Asia announcement said the $1 billion run rate had been announced at the end of August. 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." On the same day, in a separate product announcement, OpenAI said it was expanding ChatGPT Ads to 26 more countries, bringing availability to 89 countries, and that ads appear only on the Free and Go plans.

Note the wording of the advertiser figure: it counts advertisers who have run ads since launch, not advertisers active today. OpenAI gave no figure for current active advertisers.

What this implies for advertisers

This section is Relevant Audience analysis based on the stages OpenAI described. OpenAI did not publish optimisation advice in the post.

Product feeds and reviews

The product feed index is review-aware. For retailers running feed-based ads, positive or negative product reviews appear to be a retrieval input as well as a conversion factor on the landing page. Accurate titles, attributes and availability in the feed give the embedding search clearer material to match against summarised intent queries.

Creative clarity

Retrieval works on meaning, not keyword lists. The orchestrator writes queries such as "[shoes appropriate for hiking trip]", so creative and landing pages that state plainly what the product is, who it suits and what situation it solves give the semantic match more to work with. Vague brand slogans give it less.

Landing pages and policy

Filtering includes policy restrictions and placement compatibility, and scoring includes predicted conversion. Landing pages that match the ad's promise and comply with policy avoid being filtered out early and are likely to support the conversion prediction.

Budget, pacing and locale settings

OpenAI lists budget availability, pacing and locale targeting among the filtering checks that come before scoring. A campaign that runs out of budget, or targets the wrong locales, never reaches the auction, however relevant its creative.

Reading low impressions

Because "no ad" is normal and late ads are dropped, an auction win does not guarantee an impression. When impressions look low against spend expectations, the gap may come from conversations judged ineligible or from timeouts, not only from losing auctions.

What the post does not say

OpenAI's engineering post leaves several questions open. It gives no cost-per-acquisition, return-on-ad-spend or click-through benchmarks. It does not say how bids are weighed against quality in the quality-adjusted ranking. It does not mention languages, Thailand or any market-specific behaviour. And it does not explain how advertisers will see the granular log outcomes, such as timeouts, in their own reporting.

What this means for Thai marketers

This section is Relevant Audience analysis. ChatGPT Ads began rolling out in Thailand on 23 September 2026, as part of OpenAI's Southeast Asia and Taiwan expansion, so the system described here is the one Thai campaigns compete in. Since retrieval works on the meaning of conversations, Thai-language product pages and feeds that describe products clearly in Thai give the system the material it needs when users ask in Thai, although OpenAI did not discuss language handling in this post. Thai retailers with product feeds should also look at their review coverage, given the review-aware index. Separately, OpenAI plans to switch on automatic creative enhancements for ChatGPT Ads at the end of October 2026. Teams planning a ChatGPT Ads test can review Relevant Audience's ChatGPT Ads management service, and for the organic side of AI answers, the generative engine optimisation service covers how brands get cited in ChatGPT responses.

Frequently asked questions

How does ChatGPT choose which ad to show?

A custom post-trained LLM called the orchestrator turns the conversation into short intent queries, retrieves candidate ads by semantic search, filters and scores them, and nominates finalists for an auction. The auction tool, not the LLM, sets the price and picks the winner, according to OpenAI's 21 October 2026 engineering post.

Can ChatGPT ads influence ChatGPT's answers?

No, according to OpenAI. Ad selection runs in its own service with separate models and separate code, and ChatGPT has no dependency on the ads system.

Why might my ChatGPT ad win but not be shown?

An ad can be dropped after the auction if it arrives after ChatGPT's response is ready, or if the orchestrator judges it inappropriate for that conversation. OpenAI separates server-side delivery from a user-facing impression.

How big is ChatGPT Ads now?

OpenAI says ChatGPT Ads reached a $1 billion annualised revenue run rate less than 200 days after launch, and more than 100,000 advertisers have run ads since launch. It did not disclose current active advertisers or performance benchmarks.

Do product reviews matter for ChatGPT shopping ads?

Yes, for product feed ads. OpenAI says the product feed index is designed to be aware of positive or negative product reviews when it retrieves ads.

The practical message of OpenAI's post is consistent: relevance to the conversation decides delivery, the LLM nominates while the auction prices, and showing nothing is an accepted result. Advertisers who want to understand where their campaigns drop out of that pipeline can contact Relevant Audience for a ChatGPT Ads review.

Antonio Fernandez

Antonio Fernandez

Founder and CEO of Relevant Audience. With over 15 years of experience in digital marketing strategy, he leads teams across southeast Asia in delivering exceptional results for clients through performance-focused digital solutions.

Share to:
Copy link:

Read us often? Add Relevant Audience as a preferred source so our articles surface more in your Google results.