Technical report · 2026-08-29

Closing the Loop on AI Search

AI search optimization is a control problem. This report states the plant, the measurement, and the control law, and it is explicit about which half is running in production and which half is still in beta.

Nine sentencesTwo registersEight diagramsObservability shippedControl in beta

The whole argument, on one screen.

Nine sentences carry this report. Each one is a section. The rail keeps them beside you for the rest of the document, and hovering a row shows the full sentence.

1AIO has legit engineering roots. 2The thing we're controlling is a big hidden pipeline. 3Closed-loop control, observability first. 4Measuring visibility is hard, and it is a design problem. 5We built the observability half and it is running in production. 6MPC on web diffs is the move. 7Autonomous loop needs good MPC and human guardrails. 8The data flywheel is the contribution and the engine. 8.5Massive nascent industry. First unicorn already exists. 9This is humanity's ODM gear for the information singularity.
Status of the work

The observability half of the loop is built and has been in production for several months. The control half is in limited beta with a small number of enterprise design partners. The full loop runs autonomously only on internal test domains we own. Every section keeps that line visible.

01

Legit Roots

AIO has legit engineering roots.

LineageD1
Lineage: classical control, SEO, and LLM systems theory converge into AI search optimization 1960s1998 20232026 Classical control Search engine optimization LLM systems theory AI search optimization Observability, controllability, receding horizon A language model as a system with state, input, and output
Three engineering traditions converge into AI search optimization.

They gave me one question to start with, and it seemed too small to matter.

Ask ChatGPT who makes the best running shoes. Then ask it again from Frankfurt.

The answers were different. Not slightly. Different brands, different order, one company present in the first and absent in the second. Same question, same second, same model. The only thing I had changed was where I appeared to be standing.

I want to be precise about what surprised me. It was not that the system had a bias. Every system has a bias. It was that the bias was a function of an input I could set. That makes it a knob. And a knob you can turn is the beginning of an engineering problem rather than a mystery.

There is a paper on the shelf here from 2023. It defines a language model as a control system: a state, an input you can choose, an output you can watch, and a question about which outputs are reachable from which inputs. When I read it the first time I thought it was a nice abstraction. After the running-shoe experiment I read it again and understood it was a specification.

The people who did search engine optimization for twenty years were running control loops. They just never called them that. They changed a page, they waited three weeks, they looked at where they ranked. Slow loop, noisy plant, no formalism. The formalism is what changed.

02

The Plant

The thing we're controlling is a big hidden pipeline.

The plantD2
The plant: web content flows through crawler, index, retrieval and harness to output tokens, with the middle stages hidden HIDDEN Web content Crawler Index Retrieval Harness Output tokens Actuator: edits to any page on the web you can change Disturbances: link graphs, traffic signals, side information Observable
What is actually being controlled, and which part of it you cannot see.

I drew the thing on a whiteboard to see how big it was.

On the left, the web. Every page anyone has written. On the right, a stream of tokens someone reads on a phone and believes. Between them: a crawler, an index, a retriever, a harness that decides what to search for and how many times, and finally a model doing inference on whatever context got assembled.

My first mistake was thinking the model was the system. It is the last stage. By the time anything reaches it, the interesting decisions have already happened. Whether your page was crawled. Whether it entered the index. Whether the retriever picked it out of the index for this particular rewritten query. Whether the harness even ran a search at all.

The second thing I got wrong took longer to see. I assumed the input was the customer's website. It is not. The input is any page on the web you can legitimately change. Your documentation. Your listing on someone else's directory. The comparison article that ranks for your category. If you only edit your own domain you have voluntarily given up most of your control authority, and you will spend months wondering why the loop is sluggish.

There are also things pushing on the plant that I cannot push on. Link graphs. Traffic signals. Whatever else feeds ranking. In the control vocabulary these are disturbances. They matter because if you ignore them you will credit your own edits for changes they did not cause, and then you will have a confident model that is wrong.

03

Why Closed Loop

Closed-loop control, observability first.

The loopD3
The control loop: reference, controller, actuator, plant, sensor, and the error junction. The sensor path is shipped; the controller path is in beta. + Business goal Controller Web edits The plant Probe network In limited beta Shipped, in production Hidden error
Which half is shipped and which half is in beta.

The thing I keep coming back to is that observability and control are the same problem seen from two sides.

If I can watch every output of a system carefully enough, I can infer its state. If I can drive every state of a system, I can reach any output. Neither half is useful alone. A blind controller is guessing. A watcher with no actuator is a spectator.

Almost everyone in this field is open loop. They read a guide about what the assistants supposedly like, they change a hundred pages, and then nothing. No measurement, or a measurement so blurry it cannot tell an improvement from a platform update. That works when the plant sits still. This plant does not sit still.

I asked why the lab spent months building the measurement half before touching the control half. The answer was not caution. It was that we did not know the shape of the system yet. We had guesses about which stage mattered. Measurement replaced the guesses with facts, and every fact narrowed what the controller needed to be. Build the controller first and you bake your guesses into it. Then the controller is wrong in precisely the places you were wrong, and it is confident about it.

04

Measurement Is the Hard Part

Measuring visibility is hard, and it is a design problem.

The output spaceD4
A single visibility score compared against the high dimensional distribution it projects from 0.73 One number Weights undisclosed The distribution it projects from support = vocabulary size ^ context length projects
Why one number is not a measurement.

The first number I produced was a single percentage. I was pleased with it for about a day.

Then someone asked me what would happen to the number if they added twenty more prompts. I said it would get more accurate. They asked what would happen if the twenty prompts were all purchase-intent questions instead of general category questions. I ran it. The number moved eleven points.

The number was not measuring the brand. It was measuring my choice of questions.

I understand now why this is structural rather than a bug I introduced. What we actually want to know is the full distribution over things the system might say, across every question, every asker, every place. That object has a support of vocabulary size raised to the context length. Nobody will ever hold it. Every measurement anyone takes is a projection of it, and the projection is chosen, not given.

So the projection has to be designed on purpose. We build the prompt set as a stratified sample rather than a keyword list. We build personas, because the same question from a procurement lead and from a first-time buyer are not the same question to the system. Then we cross personas against prompts all-to-all rather than pairing them, because the interesting failures live in the interactions. A brand can look healthy in aggregate and be absent for every technical evaluator asking a comparison question, and no average will ever tell you that.

Every cell gets tagged. Intent, geography, platform, surface, persona. Tags are what let the report say something a person can act on instead of a number that went down.

And the weighting over the grid is a business decision. Two companies with identical behavior should get different visibility numbers if they want different things. That sounded wrong to me at first. It is not wrong. A measurement is defined relative to what you are trying to do, and if you skip stating what you are trying to do, you have not skipped the choice. You have only hidden it.

Some things are simply binary. Are you in the index. Can the crawler reach you. Do the required files exist and parse. Those are cheap and certain and worth checking every day. The trouble starts when someone reports a certain number about the uncertain half.

05

What Structure Buys Us

Sub-anchor of S04

I pushed back on my own framing here, because it seemed too convenient.

Control theory needs a system with state. If the insides of these models are unstructured high-dimensional noise, then all the state-estimation language is decoration and I should stop using it.

There is a reason to think it is not noise. When a predictor is trained to assign near-optimal likelihoods across an enormously broad set of tasks at once, there are results saying it cannot get away with an arbitrary internal encoding. It is pressured toward representing the underlying factors in a disentangled way. Next-token prediction over the whole web is that kind of task distribution.

What that buys is modest and I want to hold it at the right size. It says the plant has real geometry. It says its behavior comes from structure in a distribution rather than from caprice. That is enough to make the control framing honest instead of ornamental.

It does not say we can see inside. We cannot. We never observe an activation. We observe outputs and estimate. And the argument speaks to the model, which is one stage of a pipeline that also contains a crawler and an index and a harness that the theorem knows nothing about.

So: a license to analyze. Not a result. The results came from measurement.

06

The Measurement Machine

We built the observability half and it is running in production.

Five streamsD5
Five measurement input streams feeding the observability layer Observability layer Consumer surface probes Site capture, both renders Search backends Classical SEO telemetry Sandboxed agent traces geographyrender mode retrieval stageserver side counterfactual Attributed persona by prompt grid, plus binary readiness checks
What the observability layer measures, and along which axis each one varies.
Site state treeD6
A Git style graph where each node is a rendered observation, branching by geography, variant and render mode deploy geo Ageo B variant 1variant 2 variant 2 what a crawler saw on Tuesday merge
A website is a distribution over renderings, and the crawler sampled one path.

The measurement machine has five mouths.

The first drinks from the assistants themselves. It asks the consumer apps and websites the designed prompt grid, from many places, through a residential proxy network that spans hundreds of markets. We probe the consumer surfaces rather than the developer APIs because the consumer surfaces are where the tokens reach people.

The second drinks from the sites. Both versions of each page: the one the server sends, and the one that exists only after the browser has run the JavaScript. These are frequently not the same page, and different crawlers see different ones. Every capture goes into a history tree that works like a Git repo, so that when something changes we can say exactly what changed and when. That sounds like bookkeeping. It is the entire basis of attribution.

The third drinks from the search backends underneath the assistants, where they are identifiable. This is the only way to tell whether a page failed to be cited because retrieval never surfaced it or because the model had it and passed it over.

The fourth drinks from the old SEO instruments. Search Console, Lighthouse, Analytics, HTTP logs. People call these legacy. They are the only stream that reports from the server side, which means they are the only stream that can tell you a bot actually arrived.

The fifth is the strange one. We stand up a candidate version of a site on our own infrastructure, point agents at it, and record the whole trace of how they move through it. That gives us data about an edit before the edit exists anywhere real.

I asked about the rules, because a globally distributed probing system is the kind of thing that should have rules. It reads only what is publicly accessible. It respects rate limits and honors what sites declare about crawling. It does not try to look like something it is not in order to get past a bot check. The load is spread and shaped to stay inside normal parameters everywhere it touches. The geography exists because the plant behaves differently by geography and we have to measure that, not to hide where a request came from. The agent experiments run against copies we host ourselves.

One more thing, and it is the part I would want stated first if I were reading this cold. This machine is shipped. It has been running for months with real customers. It is the observability half. It is not the loop.

07

Reverse-Engineering the Stack

Sub-anchor of S06

Four things we learned by watching, none of which are written down anywhere official.

The assistants do not share a search backend, and you can tell which one an assistant is using without anyone telling you. The evidence is in the outputs. Which domains get cited and in what proportion. How fresh results behave. What comes back for queries with an unusual retrieval fingerprint. Run enough of those and the backend identifies itself.

In at least one case a major assistant's web results come from a third-party index. I want to say why that mattered more than it sounded like it should. If you know which index is underneath, you can check whether a page is in it. Directly. Using that provider's own public tools. And in some cases you can ask for a page to be included, through the documented path the provider already offers. That converts a large piece of a fuzzy problem into a checkbox. It appears to be underused in current practice, and I do not have a good explanation for that.

Third, the consumer app and the developer API are not the same system, even when they name the same model. Different search tooling, different harness. Work that you validated against an API may not transfer to the app, and the app is where the people are.

Fourth, the geography thing I started with. Same prompt, different apparent location, different brands and different order and different sources. Which means any statement about what an AI says that does not name a place is incomplete. I had assumed that was an edge case. It is a dimension.

08

MPC on Diffs

MPC on web diffs is the move.

Receding horizonD7
Model predictive control: at each step a fan of candidate edit sequences is forecast over a horizon, only the first edit is applied, then the state is re-measured t0 apply this edit only forecast horizon t1 re-measured state The horizon slides forward. The model is corrected every step.
Plan far, commit one edit, measure, replan.

The control side is where I expected the clever part to be, and it turned out to be the sober part.

Model predictive control works like this. You hold a model of the plant. You propose a sequence of moves. You forecast what the plant does under that sequence, over a horizon. You pick the sequence that best serves your objective while respecting your constraints. Then you apply only the first move, measure what actually happened, and solve the whole thing again. The horizon slides forward every time and the model gets corrected every time.

I asked why not something simpler. Follow the gradient. Run an A/B test.

Gradient-following needs a gradient, and ours is estimated from a delayed noisy signal where every evaluation costs a real change to a real website. A/B testing needs a randomization unit, and there is no clean way to serve two versions of a page to a crawler fleet without doing precisely the thing search systems punish you for. Both also assume the plant sits still long enough to finish the experiment. It does not.

The dead time is the part I underestimated. An edit has to be crawled before it can be indexed and indexed before it can be retrieved. Days to weeks, and it varies by platform and by page. A controller that reacts to the last measurement without modeling that delay will oscillate. It pushes, sees nothing, pushes harder, and then the whole accumulated response arrives at once and it has overshot.

MPC absorbs that because the forecast covers the delay. It also takes constraints as part of the problem rather than as an afterthought, which matters, because the real constraints here are brand voice and legal review and how many pages a company can genuinely ship in a quarter.

The status, plainly: this half is in limited beta with a small number of enterprise design partners. The measurement half is shipped. The loop is not closed in production.

09

Autonomy and Its Guardrails

Autonomous loop needs good MPC and human guardrails.

I want to put the bad outcome first because it is what shapes everything else here.

A closed loop with a bad plant model does not sit still and be wrong. It edits live websites. It writes pages that read worse to humans. It thins out a page that was working. It chases an artifact in the measurement because the model believed the artifact. The damage lands on someone's real web presence, and it is not obvious for weeks.

That is why the control half is in beta and why the deployed setup keeps a person approving changes before anything ships.

Now the other side. How this actually gets done today: one team decides what should change, another team writes it, a third team ships it, and each handoff has a queue and a review. Even at organizations that are genuinely fast, the interval from decision to live change is weeks. A senior practitioner at a large consumer-technology company described that exact shape to us. It is not incompetence. Review costs time. But it means the industry's loop runs slower than the plant changes, and running a loop slower than its plant is a textbook way to lose control of it.

There is a prototype of the fast version. On test domains we own, hosting our own projects, the measurement agent talks to a site-update agent and the whole cycle runs with nobody in it. That is a lab configuration on our own infrastructure. It exists to generate closed-loop data and to build the plant model. It is not what customers run.

The guardrails are engineering, not policy theater. Predictions carry their uncertainty. Every proposed edit shows the evidence behind it and the effect it expects, so a person can argue with the reasoning instead of only with the output. Changes are reversible, which the state history makes cheap. Whole classes of change are gated by rule rather than by model confidence. And the system reports its own missed predictions, which is uncomfortable and is also the only way the next model gets better.

10

The Flywheel

The data flywheel is the contribution and the engine.

The flywheelD8
A widening spiral: probes produce outcome records, which improve model fit, which improves edit precision, which produces more observable outcomes Probes → outcome records records → model fit fit → edit precision edits → more outcomes approval the human sits on the arc radius = data
What compounds, and where the human sits.

Every probe we run and every edit we watch lands in the same place, and the shape of that place is the point.

One axis is probes. Another is platforms. Another is geographies. Another is the prompt and persona grid. Another is the edit history of the sites. And the last one is what actually happened afterward.

Any single axis is boring. The join is not. A probe on its own is a photograph. A probe tied to a specific diff, with a known crawl in between, is an observation of the plant responding to an input we chose. That is the raw material of system identification, and you cannot get it if you only run measurement or only run edits. You need both halves pointed at the same sites at the same time.

There are questions this answers that are currently answered by folklore. How long propagation actually takes and how that varies. How much of the wobble in an output is sampling noise and how much is the platform changing under us. How big the geographic effect really is and where it concentrates. Whether a missing citation was a retrieval failure or a generation choice.

And the same data trains the model that the controller depends on. The loop produces observations, observations improve the model, the better model runs a better loop. Nothing bootstraps out of thin air here. It all comes from the real plant, which is the only reason to believe any of it.

11

The Industry

Massive nascent industry. First unicorn already exists.

The market is young and it is not small.

It exists because a real problem showed up before the instruments did. Companies found that a growing share of how people discover them now runs through an assistant, and that the tools they already owned could not see it.

There is already a unicorn in the category. Profound raised a 96 million dollar Series C at a 1 billion dollar valuation in February 2026, led by Lightspeed 5.

Agencies got here first, because they hold the problem across many clients at once. Enterprises arrive later with harder requirements. What almost everyone is buying right now is measurement, and it is open loop.

What I have not found anywhere is a written account of the whole loop, end to end. That absence is the reason this document exists.

12

ODM Gear

This is humanity's ODM gear for the information singularity.

I have been thinking about the running-shoe question for the whole of this document, and I understand now why they started me there.

The answer that came back from Frankfurt was different from the one that came back from here. Nobody in the exchange could have known that. Not the person asking. Not the company that was named, and not the company that was left out. The answer existed for one second, for one reader, and then it was gone.

That is the shape of the thing. What these systems say is ephemeral, so there is nothing to point at afterward. It is targeted, so two people asking the same question receive different worlds and neither has cause to suspect it. And it is unlogged, so no record accumulates anywhere outside the operator. A company can be described inaccurately to a hundred thousand people and never learn that it happened.

I keep wanting to call this a fairness problem. It is a visibility problem, and the visibility problem comes first. You cannot argue about a thing you cannot see.

There is an image from Attack on Titan that gets used around here. Humans facing something faster and larger than themselves do not become titans. They build a harness that lets them move in the titans' medium, at a speed that makes them participants instead of prey. The gear does not make them equal. It makes the fight possible.

That is what a measurement machine is. It does not slow the systems down. It lets a person stand where the system is operating and see what it is doing there.

Here is where the work honestly stands. The measurement half is built and running with real customers. The control half is in beta. The full loop runs on our own test domains and nowhere else yet. I have tried not to blur that line anywhere in this document, because the line is the difference between a report and a brochure.

What I can say is that the loop can be closed. The plant is characterizable. The engineering for this kind of problem has existed for fifty years and it works.

And the last part is not ours. Something is going to answer the next question a person asks about your company, your work, your field. It will answer in a way you will never see, to someone you will never meet. You can decide that is somebody else's problem to watch. Or you can pick up the instrument and look.

References

  1. 1
    2025 Bad Bot ReportImperva

    Automated traffic accounted for 51% of all web traffic in 2024, surpassing human activity for the first time in a decade; Imperva measured 53% for 2025.

    www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/
  2. 2
    What’s the Magic Word? A Control Theory of LLM Prompting (2023)Bhargava, Witkowski, Shah & Thomson

    Formalizes LLM systems as a class of discrete stochastic dynamical systems; analyzes controllability of self-attention via the singular values of the parameter matrices. Caltech and University of Toronto.

    arxiv.org/abs/2310.04444
  3. 3
    Disentangling Representations through Multi-task Learning (ICLR 2025)Vafidis, Bhargava & Rangel

    Proves that optimally solving multi-task evidence-accumulation classification forces a disentangled representation of the latent state, with closed-form extraction; validated in RNNs, and finds transformers well suited to disentangling.

    arxiv.org/abs/2407.11249
  4. 4
    Anthropic appears to be using Brave to power web search for its Claude chatbotTechCrunch, 21 March 2025

    Evidence is circumstantial: Brave Search added to Anthropic’s subprocessor list, a BraveSearchParams parameter in the web-search function, and identical citations returned by both. Anthropic has not confirmed it.

    techcrunch.com/2025/03/21/anthropic-appears-to-be-using-brave-to-power-web-searches-for-its-claude-chatbot/
  5. 5
    Profound raises $96 million at a $1 billion valuationFortune, 24 February 2026

    Series C led by Lightspeed Venture Partners; total raised about $155 million.

    fortune.com/2026/02/24/exclusive-as-ai-threatens-search-profound-raises-96-million-to-help-brands-stay-visible/