Skip to content

OpenAI

OpenAI’s ChatGPT ads hit a $1B run rate in under 200 days

7 min read

Written by an AI model from the linked sources and checked against them by a second model. How we work

All about: OpenAI models and products →
Image: openai.com

A post-trained LLM picks the ads in ChatGPT. OpenAI calls it the orchestrator, and it runs the whole ad flow as an agent loop, calling retrieval, ranking, relevance scoring and the auction as tools. It sits in a service of its own, apart from the model writing the answer, and if its ad isn’t ready by the time the answer is, nothing is shown for that turn.

OpenAI laid out the design on October 21 in OpenAI’s engineering post on the ad stack. The business behind it is young. OpenAI announced ChatGPT ads on January 16, and they went live on February 9 for logged-in US adults on the free tiers, with health, mental health and politics excluded. Self-serve buying through the Ads Manager beta opened to all US businesses with no minimum spend on May 5. Japan and South Korea followed on June 22, Brazil and Mexico on August 11 brought the count to nine markets, and on August 18 OpenAI said ads would reach 31 European countries within a week. The company now says 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 since.

A year ago, OpenAI writes, it had no ads system and “only a few people thinking about this problem space.” The team used Codex from the start to build the system, with guardrails for shipping code and data-infrastructure plugins that shorten the path from spotting a problem to landing a fix.

Why a chat isn’t a search query

A conventional ad request starts with a discrete event: someone types a search query or opens a page, the ad server receives it, retrieves candidates, ranks them, runs an auction and shows the winner. ChatGPT doesn’t produce that moment. People arrive with goals such as planning a trip, choosing business software or furnishing a home, and they narrow those goals over several turns. In OpenAI’s own example, an engineer starts with a general question about training for a race and only several turns later asks about shoes. A system that acted on the first message could have retrieved the wrong intent entirely.

OpenAI lists four risks it saw in turning every message into a standalone request: oversimplifying the user’s goal, starting the ad flow before the real need is clear, showing ads that get in the way, and rerunning the whole flow every time the request shifts, which adds noise and cost. So the ads system keeps a stateful session that remembers information across turns and conversations and updates it as the exchange develops. ChatGPT sends the initial context to the ads server. When newer context arrives, the orchestrator can run a fresh set of tool calls and return better ads, and the client uses them if they arrive in time.

Reading a conversation incrementally makes retrieval harder, because current intent has to be separated from stale context. The orchestrator has to resolve references to earlier messages, notice when a user is speaking hypothetically, and not treat every mention of a product as a wish to buy it. If a user opts into personalized ads, it also weighs available nonsensitive information from their past conversations. In August, users were told that ads would at first not be personalized, with selection based on the current topic plus general location and device type, and no past chats or memories.

From conversation to auction

The flow starts with the orchestrator writing one or more queries that capture the commercial intent, rewriting the conversation to go beyond a literal one-to-one search string. Take a user who asks what to cover on a two-day trip to Yosemite, then whether it will be cold next week, then about a shoe brand’s new product lines. The user never links the brand to the trip, but the system might form two queries: [shoes appropriate for hiking trip] and [new [brand] product lines good for travel]. That may be only the first attempt, since the orchestrator iterates on these queries until it finds inventory it judges valuable to the user. Several queries also let one conversation keep separate needs apart: a trip can mean transport, lodging and activities at once.

Those short text summaries are turned into embeddings, numeric representations of meaning that can be compared quickly, and matched against several indices built for different products and constraints. The index for product feed ads, for instance, takes positive or negative product reviews into account, which other ad types don’t have. Each index runs a variant of approximate nearest-neighbor search, which trades a guaranteed best match for speed while keeping most relevant candidates. Retrieval is meant to be broad.

Filtering then strips out candidates that fail on basics: inactive campaigns or creatives, locale targeting, policy restrictions, exhausted budget, pacing (whether a campaign should spend now or later in the day), compatibility with the kind of conversation, and per-advertiser deduplication so more businesses get a fair share. Survivors are scored through further tool calls for semantic relevance, predicted engagement (views, clicks and conversions) and historical performance, and the orchestrator applies its own relevance and safety filter before the auction.

The orchestrator doesn’t pick the winner or set the price. It nominates candidates plausible enough for the conversation, and the auction tool does the rest: a minimum threshold of relevance and value for admission, pacing, bid computation, quality-adjusted ranking, pricing and final selection.

No ad is a normal result

Ad selection runs alongside ChatGPT’s answer generation, in different services with separate models and separate code. ChatGPT doesn’t depend on the ads system and the two share no content generation model, so if the ad server is down or slow, the organic answer goes out unaffected. OpenAI says the boundary exists to keep ads from influencing answers and to keep ChatGPT’s voice neutral. It also calls returning no ad “an ordinary, successful outcome.”

Even after the auction, an ad can fail in two ways. It may feel wrong in a given conversation even though integrity models judged the conversation safe for ads and the ad itself is policy-compliant, and in that case the orchestrator blocks it. Or it may simply be late: ChatGPT’s response time varies, OpenAI doesn’t delay answers to wait for ads, and the request times out.

An ad that clears both goes to the frontend as a bundle: the advertiser’s creative (title, description, destination link, call to action) plus a short model-generated preamble explaining how the ad relates to the conversation. The preamble is kept separate so the advertiser’s message stays intact. If the bundle arrives before the answer finishes generating, it appears below the response with a sponsored label. If it arrives later, it’s dropped for that turn. A delivery counts only after ChatGPT approves and displays the placement and the display is acknowledged, so a server-side delivery and an impression are two different events. Next, OpenAI plans to test more dynamic formats, including letting users talk directly to businesses through ads.

Models grading models

Behind the serving path sit conventional logging and data pipelines, which also let advertisers plug in their existing systems and use the reporting. The logs record each way a turn can end, for example:

  • 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 says each failure point needs different evidence to fix, so opportunity detection, retrieval, candidate quality, auction participation and delivery reliability can be improved one at a time. Privacy-controlled processing decides which of this data may be used for measurement and model training.

On top of that, OpenAI’s strongest high-reasoning models judge the system’s output and train the post-trained orchestrator to do better. That setup lets smaller or lower-reasoning models handle orchestration or retrieval, with the big model gathering feedback and training them. Human signals come from clicks and hides, user surveys and advertiser feedback through Ads Manager, and OpenAI says these steer its direction more than the model-generated feedback does. In OpenAI’s words: “The model may be able to understand user intent and think critically to deliver something valuable, but people shape taste.”

No comments yet. Be the first.

Join the conversation

Sign in to leave a comment. It appears after moderation.