shamrai.ai

How ChatGPT Actually Works: 14 Stages and What I Saw in 2,000 Recorded Answers

One question, one answer, ten to sixty seconds. A lot happens behind that screen. While you type, the page is already getting a machine ready to answer. Before it reads a single search result, the model may already know which brands it will name. Its searches go out in rounds of queries you never see. Of the dozens of links in Sources, only some reach the model, and fewer still get cited. The answer arrives as a small web page your browser puts together, and after it the page keeps reporting what you saw. I recorded all of it from both ends: the browser and my test site's server logs. Below is how it works, step by step, with what I saw at each one.

Published 7 November 2026Data dated Nov 2026~14 min

TL;DR: 7 things I saw

  1. ChatGPT gets ready before you press Enter: logged in, the first letter you type leaves the browser in a warm-up; pasted text gets an empty warm-up just before the request.
  2. Brands come before search, on two tracks: InstantInstant and Thinking The two models in ChatGPT's model picker: Instant answers right away, Thinking reasons first. wrote its whole brand list before the first search; Thinking put the main brands into its first queries and added more after the results.
  3. The model searches with its own queries, not your question: it adds the year, review sites, brand names and site: operators; longer prompts get more queries, and later rounds hide theirs.
  4. In my tests, only the crawler got pages into search: on a new test site, pages ChatGPT-User opened on request never showed up in search; pages OAI-SearchBot visited did, within about an hour.
  5. Being in Sources is not being in the answer: of a median 28 links in the Sources panelSources panel The side panel that lists the pages found for an answer., 12 reached the model and 4 were cited; the first result was cited in more than half of cases.
  6. Page reads go through a shared copy: four opens out of five never reached my site.
  7. Facts get citations, brand choices don't: citation pills (the small source links after a sentence) went to prices and rules; the choice of brands never had one.

Chapter 1

Getting ready to answer

What ChatGPT does before you type

When you open a new chat, the page places you in OpenAI's A/B testsA/B tests OpenAI runs many experiments at once. Each browser is put into variants, and they decide which features and layout of ChatGPT you get., which decide the version of ChatGPT you see. Logged in, it also asks the server for this conversation's settings and quotas; as a guest, it sends a first warm-upwarm-up A small request the page sends ahead of your question: it tells the server a question is coming, so a machine is picked and prepared and the first words of the answer arrive sooner. with no text.

What I noticed

  • Logged in, the settings call goes out again around your request, and the page logs a location-permission check.
  • As a guest, if this browser was ever signed in, the page reports how long ago you last signed in and out, and how that session ended: you logged out, it expired, or you switched accounts.
  • Clicking into the message box is logged too.
Ask ChatGPT
All you see at this point. Everything in this stage happens behind this empty box.

What ChatGPT sees while you type

Logged in, ChatGPT sees what you type before you send it, if you type it: the first letter goes to the server, which books and warms the machine that will answer you. Pasted text never leaves early: its warm-up goes out empty, just before the request. Guests get the warm-up from page load; their text stays local until Enter.

What I noticed

  • The first warm-up carries the first letter with your model choice and time zone. Switching the model sends a new warm-up at once, with everything typed so far.
  • The server answers with a routing ticketrouting ticket A short-lived token from the server that names the machine which will stream your answer., valid for one minute, that names the machine that will stream your answer, and tries to warm it up.
  • As a guest, only a "typing started" event leaves the browser while you type; the guest warm-up repeats after the answer.
Best robot vacuum under 500 dollars

behind the screen, logged in→ to server · ← from server

→ 1st letterA warm-up carries the letter you typed
← replyA routing ticket, valid 60 s
Logged in and typing, your first letter leaves the browser long before you press Enter.

How ChatGPT checks your browser

Before your question is accepted, the browser passes a check of about half a second: a small computational puzzle, a fingerprint of its environment (time zone, language, screen, timings) and Cloudflare's browser challenge. Everyone is checked once per question. Guests are checked after pressing Enter and wait for it; logged in, the check was done in advance, so there is no wait.

What I noticed

  • As a guest, the check is part of the short pause before "Thinking…" (about 0.65 s), and the page keeps pinging it while it is open.
  • Logged in, the renewal runs in the background right after each request (about 0.8 s later), ready for the next question.
Best robot vacuum under 500 dollars

behind the screen, as a guest→ to server · ← from server

→ puzzlesolved by your browser
→ fingerprinttime zone, language, screen, timings
→ challengeCloudflare's browser check
← accepted"Thinking…" appears
What happens as a guest after you press Enter, before "Thinking…" appears.

What your request carries besides the prompt

Your question never travels alone. Logged in, the browser adds the model you picked, your time zone, how long your earlier answers took, and a list of the interactive blocks your ChatGPT can display, such as cards and app widgets.

A guest's browser sends no model and no list; it adds your screen size, dark mode, the time since the page opened, and a saved copy of the conversation so far, which it keeps itself and sends back with every question.

What I noticed

  • The list decides which interactive blocks, such as app widgets, you can get. This is also why "just call ChatGPT" scrapers see something different from what users get.
  • Guests declare no blocks and still get cards and maps.

Which ChatGPT answers you

Once per turn the server decides and records three things you never see: what kind of turn this is, which data centre handles it, and which model answers: the one you picked or, on a free account past its limit, a smaller one. Your IP picks a group of data centres; inside it, OpenAI's balancerbalancer The system that spreads requests across OpenAI's data centres. picks one, and its choice changes from run to run.

What I noticed

  • A US address always landed in the US. In Europe there are two separate groups: Dutch and Spanish addresses went to one set of data centres, French, Polish, German and Latvian addresses to another.
  • The turn record also names your plan and the model you asked for. The kinds I saw: search (in two variants), shopping, local.
  • In my captures, only the local turn got its places from map and review feeds, and only a shopping turn got prices and stores from a product feed, though one of two identical shopping questions got none. Plain search answers showed cards too, so a card alone doesn't give the kind away.
  • On a free account the model quietly switches to a smaller one once a counter of full-model turns hits zero, even in the middle of a run of questions.

IP in US475 runs

  • Central US45%
  • East US 316%
  • East US 210%
  • South Central US8%
  • East US6%
  • West US 36%
  • North Central US6%
  • West Central US3%
  • West US<1%

IP in Netherlands, Spain560 runs

  • Germany North37%
  • Belgium27%
  • Spain16%
  • Netherlands16%
  • UK South3%

IP in France, Poland, Germany, Latvia426 runs

  • Denmark33%
  • Poland22%
  • Switzerland West17%
  • Switzerland North15%
  • Italy8%
  • Sweden6%

IP in Brazil139 runs

  • Brazil100%
Where 1,600 guest runs were answered, by the country of the IP address.

Chapter 2

Gathering the data: web search

Web search is one way ChatGPT gathers what it answers from, and the one this chapter follows. Places, products, weather and prices arrive through separate feeds and live services, outside this chapter.

How ChatGPT picks brands: two tracks

The same question without brand names goes down one of two tracks. Instant writes the brand list from memory and searches only to add details. Thinking searches for a few brands first and adds more after reading the results. The two lists overlap but differ.

What I noticed

  • Instant named every brand before any search result: the list was on screen at 2.6–3.8 s, the first round of searching at 5.0–5.9 s. Search added none, logged in or as a guest.
  • Thinking put six brands into its first round of queries and added four more after the results; two brands it searched for never reached the answer. An earlier run, worded differently, followed the same pattern.
  • A second round of searching can start mid-answer. Its queries are hidden, and on screen it is still one answer.
  • What you measure decides what you see: J shows up only in Thinking. Test both models, with a question that names no brands.
  • Instant rewards being in the model's memory; Thinking starts there, then weighs outside signals.
ABCDEFGHIJKL
Instantlogged inABCDEFGH····
InstantguestABCDEF··I···
Thinkinglogged inABCDEFGHIJKL

A named before any search resultJ first named after the resultsK searched for, never in the answer

The same question with no brand names, three answers. Each letter is one brand.

What ChatGPT actually searches for

ChatGPT does not search for your question: it writes its own queries, the fan-outfan-out One question becomes several search queries, written by the model., which you never see on screen. When a turn runs more than one round of searching, the later rounds hide their queries.

What I noticed

  • Longer prompts get more fan-out: about 3 queries in the first round for a short prompt, 3–4 for a long one, and a long one more often needs a second round.
  • Up to six queries in one round in my captures. In my questions about one category of B2B tools, the model added the year to three queries in four, "pricing/cost" to over half and "official" to a third, and sends site: queries to vendor domains, on short prompts too.
  • With one round of searching, all its queries are visible. With more, the later rounds bring results but no query text: not in the streamstream One long response the server keeps writing to while the model works. The answer and the search results arrive this way, piece by piece., not in the saved conversation, not in the telemetry.
  • So query counts cover only the first round; treat them as a lower bound.
Your questionWhat the model searched, first roundWhat it added
Best robot vacuum under 500 dollars
  1. best robot vacuums under $500 2026 reviews RTINGS Vacuum Wars Wirecutter
the year, three review sites
Best ramen restaurants in Berlin Mitte
  1. best ramen Berlin Mitte 2026 Cocolo Ramen Hako Ramen Buya Takumi Mitte
the year, four restaurants by name
best wireless headphones under 300 usd
  1. best wireless headphones under $300 2026 reviews rtings soundguys November 2026
  2. Sony WH-1000XM5 Bose QuietComfort Sennheiser Momentum 4 JBL Tour One M3 current US price
the month, review sites, a second query of five models
What does Reddit think about the Framework Laptop 16?
  1. site:reddit.com/r/framework Framework Laptop 16 owner review 2025 2026 worth it
  2. site:reddit.com/r/framework Framework 16 problems trackpad keyboard flex fan noise battery GPU reddit
  3. site:reddit.com/r/framework Framework Laptop 16 2026 RTX 5070 Ryzen AI 300 owner impressions
one subreddit, known problems, current parts
Latest news about the European Space Agency
  1. European Space Agency ESA latest news November 5 2026
  2. site:esa.int/Newsroom November 2026 ESA latest news
  3. European Space Agency latest mission launches news November 2026
today's date, the official newsroom
Find me flights from Berlin to Barcelona next Friday
  1. Berlin Barcelona flights Friday November 13 2026 BER BCN nonstop schedule price
  2. Google Flights Berlin Barcelona Nov 13 2026 one way
  3. BER BCN 13 Nov 2026 Vueling Ryanair easyJet flights
the actual date, airport codes, airlines
Who is Lionel Messi?
  1. Lionel Messi current club November 2026 Inter Miami contract
the month, his current club
Seven questions I asked ChatGPT, and what it actually searched for. Not once did it search my question as I typed it.

How ChatGPT builds its web index

OpenAI lists four bots. Two of them matter for search. ChatGPT-User opens a page when an answer needs it, for example when you paste a link. OAI-SearchBot, the crawlercrawler A bot that fetches pages on its own schedule to build an index. Here: OAI-SearchBot., visits sites on its own and adds pages to the index that ChatGPT searches. The other two are GPTBot, which collects pages for training, and OAI-AdsBot, which checks pages submitted as ads. OpenAI says ChatGPT-User does not decide what appears in search, and in my tests it didn't: only OAI-SearchBot got pages into search.

What I noticed

  • I tested this on a brand-new site. For some pages I pasted the link and asked ChatGPT to open and summarize it; my logs showed ChatGPT-User visiting them, yet they never showed up in its search. Pages OAI-SearchBot visited showed up within about an hour. It was one young site, so take it as an observation, not a rule.
  • Some fresh pages I never touched at all: no prompts, no links pasted. OAI-SearchBot found them on its own through links from other pages of the site, and two of those pages showed up in search about an hour after its visit (66 and 69 minutes).
  • I am still testing how this index relates to Bing's. So far, my test domain was missing from Bing when I checked and still showed up in ChatGPT, which suggests ChatGPT does not rely on Bing alone. ChatGPT's index holds web pages only.
  • To check whether a page is indexed, look for OAI-SearchBot in verified-bot logs and run a site: search in ChatGPT. A ChatGPT-User visit proves nothing.
A dashboard of bot visits to my test site, 1 to 7 November, one row per bot and one cell per day, darker for more hits. Week totals: OAI-SearchBot 325, ChatGPT-User 280, GPTBot 9, PerplexityBot 600, ClaudeBot 92, Googlebot 310, Bingbot 49, Amazonbot 160, YouBot 149, YandexBot 83, Bytespider 49, 7 other bots 43.
Who visited my test site in the first week of November. OpenAI's bots in blue, everyone else in grey.

What the model gets from the results

For every query the model gets a list of results, already ranked, each a link with a short snippet. The Sources panel shows everything that came back, but only part of it reached the model, and only part of that got cited. Getting into Sources is the easy part; getting into the answer is much harder.

What I noticed

  • In 123 answers I captured logged in, the Sources panel listed a median of 28 links. The model received 12 of them and cited 4.
  • The higher a result sat in the model's list, the more often it was cited: a result in first place was cited in more than half of cases, the third one in a third, those from 6th place down in fewer than one in five.
  • Guests get no Sources panel, only the links left in the answer, so for them the gap between Sources and citations is invisible.

Per answer, median

In Sources28
Reached the model12
Cited4

How often a result was cited, by its place in the model's list

1st56%
2nd46%
3rd32%
4th–5th27%
6th–10th18%
11th–20th19%
Counted over 123 of my own ChatGPT answers, almost 2,000 search results in total.

How ChatGPT reads your page

When the model wants the whole page, it asks to open it. Most of the time that page comes from a shared copy, not from your server: in my test, four opens out of five never reached the site. The rest arrive as visits from ChatGPT-User. The answer looks the same either way.

What I noticed

  • In the stream an opened page shows up only as its line count. That is the only sign in the browser that the page was actually opened, not just seen in the results.
  • On your server a live visit is an ordinary HTML request with no referer, from a Microsoft network address in the region that handles the conversation.
  • One conversation's visit fills the copy for everyone: after a page had been fetched, the same page was never fetched again for at least half an hour, even when the question came from a different account, and nothing on screen tells you which it was.

Chapter 3

Showing the answer and what comes after

What ChatGPT actually cites

A citation pill is the small rounded link with a site's name right after a sentence. It means the model took that sentence from a search result. A plain link to the same page is not a citation.

What I noticed

  • Pills went to facts: prices, plan details, the platform's rules. The choice of brands and their order never had a pill, even for the brands Thinking added after reading the results. Being named first is not the same as being cited.
  • Some links in an answer have nothing behind them. Once, without ever opening the page, the model repeated a link I had pasted into my question. Another time it wrote a page address that was never in its search results.

The Pro plan costs $99 a month. vendor.com

Citation pilltied to a search result; this is a citation

Full details are on vendor.com/pricing.

Plain linklooks like a source, but is not a citation

My top pick for most teams is A.

No pill at allthe choice of brands, written from memory
Three sentences from one answer. Only the first is a citation.

How ChatGPT assembles the answer

The answer you see isn't plain text. The model writes something closer to a small web page, in a format called DILDIL The name ChatGPT's own code uses for this answer format. My guess: Dynamic Interactive Library.: text plus blocks such as a product card, a map, a citation or a button that asks the next question. The server fills the blocks with data, and your browser puts the page together. Every update re-sends the whole page, so even a short answer is a heavy download.

What I noticed

  • Each block gets its data from its own source. Citations come from web search; product and place cards come from shopping and map feeds. To show up in a card, your data has to reach that feed, not just your website.
  • There are several hundred kinds of blocks in ChatGPT's code. I am putting together a gallery of the ones I have seen in real answers, with where each one gets its data.
  • If a block fails, it is simply hidden. Once, in a Pro run, the whole answer failed to show ("This response couldn't load") although it had fully arrived.
  • In one Thinking answer, about 40% of the 490 KB that arrived was this page code, re-sent about twice a second. The text itself was 6,300 characters.
site.com
Textwritten by the model; the pill links to a search result
$99
$79
$59
Product cardsprices and stores from a shopping feed
Map and placesfrom map and review feeds
Imagesfound by a separate image search
Compare the top two →
Buttonasks ChatGPT the next question for you
One answer, taken apart: each block gets its data from its own source.

What ChatGPT does after the answer

When the answer finishes, the page keeps working. Logged in, it downloads the whole conversation again and sends an empty warm-up for your next question before you have typed it. As a guest, it sends the same warm-up.

What I noticed

  • The warm-up for the next question went out after every answer in the 27 free-account runs I recorded.
  • The stream ends with a promo banner picked for the conversation. After an Instant answer, on a Pro account, it offered Thinking ("Get a more thorough answer with Thinking"). After a Thinking answer comparing tools, it advertised ChatGPT's plans for teams ("Comparing AI plans for your team?").
  • On a free account the end of the stream also updates the count of full-model answers you have left.

What ChatGPT logs about your answer

After the answer is on screen, the page keeps reporting to OpenAI. Every link is checked before it is shown, every citation pill that scrolls into view is logged as an impression, copying text is logged with its length, and so is how long the answer took. OpenAI knows how often your page was shown; you only see the people who clickedclicked I mean clicks marked with ?utm_source=chatgpt.com, which links in the answer carry. Not every ChatGPT link does: the classic search results I found inside ChatGPT come without it (blue-links note), so some of those clicks may not be marked at all..

What I noticed

  • Those impressions never reach you. That is likely one reason ChatGPT traffic looks small in analytics: you see the clicks, not how often you were shown.
  • The link checks blocked nothing in my captures: 285 checks in logged-in answers, and an empty blocked list in all 1,600 guest runs.
  • ChatGPT's page reserves a slot for an ad under the conversation and reports it, even on a Pro account.

sent to OpenAI after one answer

Model that answeredThinking
Model you asked forThinking
Kind of turnsearch
First token1.8 s
Final answer starts18.5 s
Last token60.4 s
Received917 KB
Updates to the answer177
The report about one Thinking answer, in plain words. You never see it, and one went out after every answer I recorded.

How I recorded it

In the browser, a small extension I wrote recorded and decoded everything the ChatGPT page sent and received while it answered: the answer stream and the requests around it. It only listens and changes nothing.

On the other end, I logged OpenAI's bots on a test site, checked against the IP lists OpenAI publishes, and matched the two sides by time.

What I recorded: 1,600 guest runs on 1–2 November, all about one category of B2B tools; 300 more guest runs on neutral topics; and about 150 logged-in answers on free and Pro accounts from 1–7 November.

Limitations

ChatGPT changes often and runs experiments on its users, so everything here describes what I saw in November 2026. Some things never reach the browser at all: the queries of later search rounds, how results are scored, and the full text the model gets. They are not covered here. The cache and the index each get a study of their own.