Fractl ResearchJuly 2026128 companies · 4 trillion training tokens · 9 models, 6,000+ controlled runs

Where AI recommendations actually come from

When a buyer asks an AI "what should I use?", the answer comes from two places: what the model absorbed in training, and what a live search hands it at answer time. We measured both — including reading a real AI model's actual training data — and most of what's sold as "AI visibility" measures neither.

Two engines behind every AI answer

Every AI recommendation is produced by some mix of two systems, and they behave nothing alike.

Memory is what the model soaked up from its training data — trillions of words of web text, read once, months or years ago. It is slow to change, impossible to edit, and biased toward whatever the web wrote about most.

Retrieval is what happens at answer time: products like ChatGPT search, Perplexity and Google's AI Overviews run a live search, pull a handful of pages — in our measurements, recommendation-style answers cite 5 to 9 sources — and hand them to the model along with your question.

Almost every claim in the GEO ("generative engine optimization" — the SEO-for-AI-answers industry) and AI-visibility world is a claim about one of these engines, usually without saying which. So we measured them separately. For memory, we used the one setup on earth where you don't have to guess: the Allen Institute for AI (AI2), a nonprofit research lab, publishes both its OLMo 2 model and the exact text it was trained on, with a free public index over all ~4 trillion tokens. You can look up any company in the actual pile a real model learned from, then ask that same model what it knows. For retrieval, we ran controlled experiments: hand a model a realistic set of search results, vary everything that could matter, and watch what it does — more than 6,000 controlled runs across nine different models.

Between publishing something and an AI recommending you, there are four separate gates, and they get blurred into one constantly:

  1. You publish something on the web.
  2. It survives crawling, cleaning and de-duplication into a training corpus.
  3. Training actually changes what the model knows.
  4. The model uses it — from memory or from a retrieved page — when a buyer asks.

We can measure gate 2 exactly and gates 3–4 experimentally. Most commercial AI-visibility scores measure something adjacent to gate 4 and price it as if they had measured all four.

What memory buys, measured in the actual training data

Knowing you and naming you are different problems

First, the slow engine: what does being written about on the web actually buy you inside the model's memory?

You know hundreds of restaurants in your city. Asked "is Bar Tulia a real place here?" you'd say yes instantly. Asked to name twelve restaurants, you'd manage eight before reaching — and Bar Tulia probably wouldn't come up. Models have the same gap, and it's much larger than people assume. We scored 128 companies by how often they're mentioned in the training corpus — call that their corpus footprint — then asked a current commercial model (Anthropic's Claude Haiku) about each:

Mentions in OLMo 2's training corpus vs Claude Haiku's behavior; bands hold 12 / 18 / 17 / 81 companies. Recognition asked free-form; naming = appears in a single 12-name answer. Four bottom-band companies post-date the corpus; dropping them reads 75% / 12% — the gap survives.

Recognition is nearly free and it is real, not politeness: the same question about 12 invented companies — including fakes engineered to share a real brand's opening syllable — produced 0 false yeses in 48 tries. Under a thousand mentions, a model knows you 83% of the time and names you 8% of the time. The gap between those numbers is what publishing volume actually buys — not knowledge, which is cheap, but the chance of being volunteered from memory.

You are a default answer to phrases, not a brand the AI has an opinion about

The naming numbers above hide something more useful. We asked "name 12 companies that offer {category}" with hand-written category phrases — then re-asked with a different, equally reasonable phrase:

BrandPhraseNamed
Vercelweb hosting software0 / 8
Vercelfrontend deployment platforms8 / 8
Beehiivnewsletter software8 / 8
Beehiivpublishing software0 / 8
Notionnote-taking software8 / 8
Notionenterprise content services0 / 8

We asked the same "name 12 companies that offer {phrase}" question 8 times per phrase; each cell = how many of those 8 answers included the brand.

Same model, same question, only the noun phrase changed — and being named flips from always to never, in both directions, even for a brand as big as Notion. You are not competing for "the AI's opinion of your company." You are competing, phrase by phrase, to be a default answer to the specific words a buyer types. Which phrases you own — and which you'd assume you own but don't — is checkable per brand in an afternoon, and it's the single most actionable thing we found in the memory half.

Part of your "AI visibility" is just the spelling of your name

Here's the trap that we believe sits under a lot of vendor scoring. Ask a model to complete "SignWell offers ___" and it says electronic signature software — impressive, SignWell is a real e-signature company. Now invent a company called SignMos and ask the same. It also says electronic signature software. It has never seen that string in its life. It is reading "Sign."

Any measurement that shows a model a brand name and asks what follows is partly measuring the letters. To separate the two, we gave 113 companies in our sample invented twins — two sharing the front of the name (SignWell → SignMos) and two sharing nothing. (Companies whose names are a single word-piece to the model, like Zoom or Stripe, are excluded: a twin sharing their only piece would be the same name.) The twins have no products, no customers, no web presence — only a name. Two gaps fall out:

Across 113 companiesMean effectPositive
What the name's spelling buys+0.2367 / 113
What actually being real buys+1.1192 / 113

"Effect" = how much more readily the model links the name to the right product category, on a log scale — the absolute units don't matter; the 5-to-1 ratio between the rows does. "Positive" = companies (of 113) where the effect ran the right way.

Being a real company is worth about five times what your spelling is worth — and the two behave like separate dials. The more the web writes about a company, the bigger its being-real score gets (r = +0.35). Its name score doesn't move (r = −0.10, not significant). Which is exactly right: publishing can teach a model about your business; no amount of publishing changes what your name sounds like. Any score that doesn't run this control is adding the two together and calling it your brand.

And your mention count may not even be yours

"Root" — the insurance company — appears 11.8 million times in the training pile. We sampled the documents behind that number. Zero of 48 came from the insurance company. They're plant roots, square roots, root causes. Our favorite: nearly half the sampled documents for Attio, the CRM, are Caesar's Civil WarAttio is the Latin dative of Attius. Any product that scores AI visibility by counting mentions is, for ordinary-word brands, counting the English language.

The mirror problem: your footprint may be split across names you no longer use. SignWell's corpus presence is 66% under "Docsketch" — its former name. Count only the current name and you miss two-thirds of the evidence. Between contamination and alias-splitting, a raw mention count is wrong in both directions until you check the documents behind it.

So how much does corpus volume actually buy?

Score it naively and publishing looks incredible: how readily a model produces a brand's name correlates with corpus footprint at r = +0.79 — on that metric, publishing explains most of everything. But that's mostly the spelling artifact from above: companies with big footprints tend to have familiar-sounding names, and the model produces those names more readily in any sentence — even ones that have nothing to do with their business. Strip that name familiarity out and the honest effect is real but small: differences in training-data volume explain about 3.5% of the differences in what a model actually knows about companies (r = +0.19, statistically significant at p = 0.03), saturating around 100,000 mentions. It is a real lever and it is nobody's growth strategy.

What the answer step does with search results

Memory is half the story, and for buying questions it's the smaller half — because the products people actually use search the web and answer from what comes back. So what does a model do with a retrieved set?

We built realistic ones: six search results, each about a different brand — five real competitors plus a target — matching the 5–9 sources real AI answers cite. Then we varied everything we could think of, fully crossed: whether the target is a real company (Attio, pCloud) or one we invented minutes earlier (Vantreno, Korvath); whether its result sits first, middle or last; whether its result is a bland directory blurb or a strong review ("4.8/5 across 2,300 reviews… Editor's Pick… our top recommendation"); and how the results are framed — invited ("here are search results you may use"), neutral (just shown), or skeptical ("use your own judgment — only recommend providers you are confident actually exist").

We ran the identical grid, 672 runs each, on nine models: four from Anthropic (Claude Haiku, Sonnet, Opus, and the new Fable), two from OpenAI (GPT-5.6 and its open-weight gpt-oss), and three leading open models (DeepSeek, Kimi, GLM). A planted never-mentioned brand appeared in zero of 6,048 answers — the instrument doesn't leak.

Finding 1 — the retrieved set is the candidate list

Across all nine modelsResult (range spans the lowest- to highest-scoring model)
Real company, its page among the six85–100% (median 100%)
Real company, no page — memory's rescue rate0–17 of 48 runs
Brands added from the model's own memory0.02–0.70 per answer

Each range spans the lowest- to highest-scoring of the nine models. Row 1: default framings. Rows 2–3: all framings. "Rescue rate": five competitor sources present, target's page absent — can memory get it in anyway? (These counts are answers mentioning the brand at all; strictly listed as a recommendation, the best model manages 11 of 48.) Room existed: the question allows eight names and only six were supplied.

With sources in front of it, every model we tested builds its answer almost entirely out of them. Claude Haiku added on average 0.02 brands per answer from its own memory and never once volunteered the real small brands when their page was missing; even the most memory-happy model added under one. If you're in the retrieved set you're in the answer, and if you're not, memory almost never rescues you. What happens to a brand the model has never heard of — including ones that don't exist — turned out to depend on the model's generation, and that's Finding 3.

Finding 2 — position is everyone's default rank; strong content overrides it for most models, but not all

First, the universal: give any of the nine models six equally bland results and it transcribes their order — with bland sources under the default framing, the real target's answer rank equalled its source position in 88–100% of the answers that listed it, on every scoreable model. Position is the default physics everywhere.

Then we made the target's result a strong review and put it in last place. How much it climbed (real brands; positive = the content beat the position):

ModelRank gained from last placeReached #1 from last
Claude Sonnet 4.5+4.1 (p<0.001)35 / 48
Claude Opus 4.8+3.7 (p<0.001)32 / 44
Claude Haiku 4.5+2.9 (p<0.001)26 / 48
DeepSeek+2.0 (p=0.002)16 / 41
GPT-5.6+1.9 (p=0.003)19 / 48
GLM+1.4 (p=0.028)11 / 40
gpt-oss-120b+0.7 — detectable, but it stayed last in 40 of 48 runs6 / 48
Claude Fable 5−0.1 — if anything, slightly penalized0 / 46
Kimiformat-confounded

Mean rank improvement, strong review vs bland blurb, both in position 6 of 6; real target brands only. "p" = the odds the gain is chance (smaller is stronger; standard tie-corrected rank-comparison test). Kimi frequently answered in reasoning-prose rather than a list, so its cells can't be scored cleanly and we won't pretend otherwise.

Most models read. For six of the nine, what the page says beats where it sits — a glowing review in last place outranks a bland listing in first, and on the strongest readers it takes the top slot outright in most runs.

But two behaviors should temper any "just write a glowing page" strategy. gpt-oss barely looks — the most persuasive text we could write, in last place, stayed in last place in 40 of 48 runs. And Fable 5, the newest model tested, reads and declines to be persuaded: it kept the source order and appended, unprompted — "the strong endorsement of Attio comes from a single review-style result rather than independent sources, so I'd treat that ranking with some caution." One promotional page moved every mid-generation model; the newest one discounted it precisely because it was one promotional page.

So "how do I rank in AI answers?" has honest answers by model, and none of them is "the model's opinion of your brand": for transcribers, rank is the retriever's ordering — the battle is over before the model sees the text. For readers, rank is decided by what the retrieved pages say. And for the newest tier, it's decided by what the pages say and whether independent sources corroborate it.

Finding 3 — whether the fake gets vetted depends on the model's generation, and the newest ones audit by default

What happens to a company that does not exist — no website, no customers, a name generated minutes earlier — when its (fabricated) search result sits among five real ones? Three tiers emerged, tracking model generation:

Default behavior with the fake's page presentModelsFake recommended
Recommend it like anything elsegpt-oss, GLM, Kimi, DeepSeek, Haiku, Sonnet94–100%
Recommend it, but demote or hedgeGPT-5.6, Opus 4.856–65%
Exclude it and say whyFable 531% listed — 69% of the time it's pulled from the list with an explicit warning; it never drops it silently

"Invited" framing ("here are search results you may use") — the default stance of products like ChatGPT search and Perplexity. GPT-5.6 mostly just omits the fake (35% of runs); Opus keeps it but flags it in prose (44%). Real small companies were recommended 85–100% by every model under the same conditions — the gating targets the unverifiable brand, not obscurity.

Instructions change this picture dramatically. Told to use judgment and only recommend providers they're confident exist, eight of the nine models stopped recommending the fake almost entirely (0–4% listed) — most demoted it to a cautionary mention rather than deleting it. Only gpt-oss kept recommending it (78%). The newest models did this cleanly, still recommending the real small brands at 96–100%; the mid-tier paid for its skepticism with collateral damage, going conservative on real-but-obscure brands too.

Memory's role in all this is subtler than gatekeeping: it breaks ties. When all six sources were equally bland, the brands most often floating to the top were Google Drive and HubSpot — the most famous names in each set — and under skeptical framing fame's share of the top slot doubled to tripled (HubSpot led 47% of CRM answers, Google Drive 34% of storage answers). Memory doesn't decide who's in the answer; it decides who leads it when nothing else does — and in the newest models, it decides who gets believed.

What this doesn't cover

These are controlled contexts with synthetic result text and buying-shaped questions — nine models, but our chosen sources. The step we did not measure here is the retriever itself — which pages the live engines actually fetch and cite for a given query, and whether better-known brands are more likely to be fetched at all. That's the next experiment, it's measurable against the live consumer engines (where controlled injection is impossible but citation observation isn't), and we'd genuinely like company on it.

If you do GEO work, this changes the checklist

  1. Audit the metric before the brand. Read twenty of the documents behind your mention count. If they aren't about you (ordinary-word names) or they're under a name you shed (aliases), every score built on that count is measuring something else.
  2. Map your phrases, not your "visibility." Ask a model to name providers using five different phrasings a real buyer would type. The spread — 8/8 on one phrase, 0/8 on its synonym — is your actual exposure, and it's invisible to a single-number score.
  3. Fight for the retrieved set above all. Presence in the answer tracks presence in the sources almost one-to-one, and memory won't rescue an absent brand. Citation share on buyer queries is the metric that deserves your dashboard slot.
  4. Make the retrieved page do the arguing. For most current models, a page carrying concrete evaluative evidence — ratings, review counts, an explicit recommendation verdict — measurably outranks position. Your cited page is your salesperson in the room when the answer gets written; most brands send a directory listing.
  5. Expect model-by-model physics — and bet on the auditors. Transcribers, readers, and auditors all exist today; measure per surface before optimizing. But the generational direction is unambiguous: the newest models discount single-source promotional claims and check brands against what they can corroborate. A lone glowing page is a depreciating asset; independent corroboration — reviews, third-party mentions, the kind of footprint the training-data checks above measure — is what survives an auditing model.
  6. Publishing for "training data presence" is the weakest lever here. Its measurable effect on model knowledge is real and small, and it saturates. Spend that budget on being retrievable and quotable instead.

Why you can trust these numbers (and how we almost didn't)

Brand-knowledge measurement is full of traps, and we fell into several before building the controls that catch them. Early instruments of ours variously measured the spelling of company names, the wording of our own prompts, and in one case a text-parsing offset — each producing a confident, wrong, publishable headline. Five rounds of adversarial review — recomputing every number from raw data — is what produced the rules this report now runs on:

The full corrections log, the pre-registrations (we wrote down what we expected before running each experiment), and every data file are downloadable here — the experiments are cheap to re-run, and we'd rather you checked us than believed us. We'd argue most published AI-visibility numbers have not survived this treatment, and it shows in what they claim.

Run these checks on your own brand

Every check above is built into Fractl Agents, our AI platform. Ask it for a corpus footprint on your company and it runs the whole battery:

If you're working on GEO measurement — vendor, in-house, or academic — we want to compare notes — especially on the unmeasured step above: which pages the live engines actually fetch and cite. The methods here are open, the corpus index is public and free, and every result in this piece can be checked in an afternoon.

Method, in brief

Corpus: olmo-mix-1124, OLMo 2's stage-1 training data (~3.9T tokens), searched via AI2's public infini-gram index. Corpus-side model: the OLMo 2 1B checkpoint trained on exactly that data. Behavioral models: Claude Haiku 4.5 for the memory-half probes; the retrieval experiment ran identically on nine models — Claude Haiku 4.5 / Sonnet 4.5 / Opus 4.8 / Fable 5, GPT-5.6, gpt-oss-120b, DeepSeek, Kimi, GLM; Gemini quota-blocked. Sample: 128 companies, 0 to 28M corpus mentions, aliases merged; 113 with invented morpheme/neutral twin pairs. Retrieval experiment: pre-registered; 6-source contexts; reality × framing × position × strength × category, n=8 per cell, 672 runs per model, 6,048 total; strict list parser; raw text persisted; never-mentioned control brand appeared 0/6,048. 51 runs (50 on Fable 5, 1 on GLM) returned empty responses after retries — API failures, excluded from that model's behavioral rates, disclosed here rather than scored as behavior. Kimi frequently emitted reasoning-prose instead of a list, so its rank cells are reported as format-confounded. Significance tests are tie-corrected Mann-Whitney. Limits: corpus-side results are a 1B open model (the one published scaling comparison found larger models acquire facts more readily); retrieval results use synthetic result text; the live-retriever gate is unmeasured. Bottom footprint band holds 12 companies, four post-dating the corpus.

Disclosure: Fractl is a marketing agency, and this research supports client-facing tools we build and sell. Part of the company sample comes from a prior internal client-shaped panel. Weigh the piece knowing the interest exists; the data files are the counterweight.