SYNAPSE
RU
Explainers

ChatGPT Ad Stack: Sessions, a Tool-Calling LLM, and a Separate Service

On October 23, 2026, OpenAI described how advertising in ChatGPT works: a fine-tuned LLM with tool calls, stateful sessions, and a separate ads service not connected to answer generation.

On October 23, 2026, OpenAI published a description of the ChatGPT ad stack. A conventional advertising system waits for a separate event—a search query or a page view. In chat, such an event may not exist: the user's intent takes shape over the course of the conversation.

Why search advertising could not simply be moved into chat

Traditional systems are designed around discrete units of user intent. A person searches for something or opens a page. The system receives the query or view as an event and selects an ad for that event.

The difference is visible in an example. In search, a person enters "backpack for carry-on"—this is a ready, complete signal, and there is something to show for it. In chat, they first ask about carriage rules, then about size restrictions, then about a specific model. In the first messages there is no advertising moment at all.

OpenAI formulates it this way: intent develops over the course of the dialogue and shifts over several turns. Sometimes no suitable moment is found. That is why the ads delivery system was built for this scenario rather than adapting the search one.

Practical takeaway: the unit of work here is not a query but a conversation. The system must be able both to show an ad on the fifth turn and to stay silent if there is nothing to show.

A fine-tuned LLM calls tools: retrieval, ranking, relevance, auction

The core of the system is a custom fine-tuned frontier LLM (a model additionally trained for a specific task). It makes tool calls—calls to tools.

Дообученная LLM вызывает инструменты: подбор, ранжирование, релевантность, аукцион

There are four tools. Retrieval—selecting top ad candidates. Ranking—predicting engagement, that is, how much the ad will interest the user. Relevance—assessing the usefulness of the ad for a specific conversation. Auction—the final selection of the ad and its price.

Example. The model reads the current turn and the conversation history, calls retrieval, and receives a list of candidates. It then ranks them by predicted engagement, filters them by usefulness, and hands selection and price to the auction. The entire sequence is orchestration by the model, not a pipeline of hard-coded rules.

OpenAI writes that the model orchestrates the entire ad flow and decides which ad to show and at what moment, relying on the current turn and history. There is no data on which signals go into the engagement prediction or how usefulness is calculated exactly.

Stateful sessions: memory between turns and between conversations

The first of the three principles is stateful ads sessions. Information is remembered between turns of one conversation and between different conversations.

Example. On Monday a person discussed a trip and requirements for a backpack; on Wednesday they returned with a clarification about weight. The system sees the connection between these conversations and does not start from scratch.

There is no data on what exactly is stored, how long it lives, and how the user can see it. The source text describes only the principle itself.

Stateful-сессии: память между ходами и между диалогами

Advertising lives in a separate service, not in answer generation

The third principle is that the ad selection process runs separately from ChatGPT's answer generation, in its own service. The stated goal: advertising should not influence answers, and ChatGPT's voice should remain neutral.

This is an architectural decision, not a quality guarantee. Independence cannot be verified from the outside: there is no data on how the service is structured internally or whether there is an external audit.

Example. The answer to a question about choosing a backpack is formed independently of the ad flow. A separate service with its own selection and pricing logic inserts the ad.

On scale, OpenAI gives one figure: ChatGPT Ads reached a $1 billion annualized revenue run rate (annual revenue recalculated at the current pace) in less than 200 days after launch. There is no data on how many advertisers are in the system.

What to do about this

  • Design ad logic around the session, not around a single query. Store context and return to it after several turns.
  • Separate answer generation and ad selection into distinct services. Then you can explain where the ad came from.
  • Log at which turn, because of which signal, and at what price an ad was shown. Without this, the auction remains a black box.
  • Do not transfer search advertising metrics one-to-one. In chat, some impressions will be without explicit intent, and this is a normal mode of operation.
  • If you are an advertiser, prepare the ad for a clarifying question, not for a keyword phrase.
↗ Primary source: OpenAI