# Why the Agent Skipped Your Best Product ### An information-retrieval look at how agents choose tools — and why your funnel quietly became the reason you lose *A note before the equations. Some of what follows is textbook information retrieval. Some of it is a model I'm proposing to make the dynamics legible — useful fiction, in George Box's sense, not a theorem. I mark which is which as I go, because I'd rather be right than impressive, and because I don't want either of us embarrassed in the comments. Every section leads with the plain-English version; the math is underneath it, for whoever wants it.* --- Picture a clawdbot — an agent — handed a mundane task: *take these 500 leads and enrich them with company data.* Before it can do anything, it has to pick a tool. There's ZoomInfo, with arguably the deepest B2B dataset on the planet. There's Exa and Parallel, newer, API-first. The clawdbot reads, ranks, and acts, all inside a session measured in seconds. ZoomInfo's front door says *Request a Demo.* Guess who doesn't get the job. I spent two decades building protocol plumbing, and the thing I keep relearning is that the loud changes are rarely the ones that matter. The quiet one here is that the reader of your product is no longer a person with eyes and patience. It's a retrieval system with a clock. That single substitution rewrites which of your design decisions survive. So let me write the model down — because the model is what tells you which decisions are survivable and which ones silently zero you out. ## Both sides are solving an argmax > **Explanation for those who hate math** > The clawdbot is doing exactly what you'd do if you picked a tool for a friend *and* promised to set it up for them: weigh how well it fits, subtract the odds you'll get stuck, subtract the hassle of wiring it in. ZoomInfo has the deepest data. But the bot also has to *finish* — today, alone, now. Your job, as one of those tools, is to be the one it picks. And getting picked isn't one hurdle. It's four in a row: get found, get used in the answer, get chosen, and let the bot finish. Formally, the agent is choosing one product to recommend and operate. In decision-theoretic terms — and this part is bedrock expected-utility maximization — it wants $$d^\star=\arg\max_{d}\;\Big[\,P(\text{good}\mid d,u)\cdot V(d)\;-\;\rho(d)\;-\;c_{\text{act}}(d)\,\Big]$$ where $u$ is the user's latent intent, $P(\text{good}\mid d,u)$ is fit, $V(d)$ is value, $\rho(d)$ is the probability the agent *can't finish the job* with you, and $c_{\text{act}}(d)$ is the effort to act through you. The frame is standard; the decomposition is mine, and the last two terms are the ones classical retrieval never had to carry. They're the whole essay. You're solving the dual: be that $\arg\max$, across every way a human might phrase the need. Which means maximizing this, integrated over intents: $$\text{AgentShare}(d)=P_{\text{ret}}\cdot P_{\text{used}\mid\text{ret}}\cdot P_{\text{sel}\mid\text{used}}\cdot P_{\text{act}\mid\text{sel}}$$ ## Why it's a product, not a sum > **Explanation for those who hate math** > Here's the trap. ZoomInfo probably wins on raw data — call that hurdle a 9 out of 10. But its only door is "Request a Demo," so the "can the bot finish today" hurdle is a 0. Because the four hurdles *multiply*, 9 × 9 × 9 × 0 is still 0. Exa might be a 7 on data but nonzero everywhere — and 7 × 8 × 8 × 9 beats anything times zero. The deepest dataset on earth loses to the one the bot can use before lunch. A chain is only as strong as its worst link, and most companies are spending to polish one link while another sits at zero. Look at the shape before the terms. AgentShare is four probabilities **multiplied** — not me being cute, but the chain rule of probability applied to the journey "got retrieved, *then* used, *then* selected, *then* the action completed." It's exact. And a product has the arithmetic of a series circuit. The weakest factor governs the whole, and any one factor near zero drags it to zero no matter how heroic the other three are. You can have the best fit in the category, the most legible page on the internet, and a first-place finish in every retrieval pass — and if $P_{\text{act}}\approx 0$ because setup dead-ends at "talk to sales," your AgentShare is approximately zero. This is why "improve our AI visibility" misses. Visibility is one link of four, and it's the cheap one. ## You don't rank for the question they typed > **Explanation for those who hate math** > The clawdbot never searches "profile enrichment tool." It quietly breaks the job into a dozen smaller questions — "API to get employee headcount," "look up a company by its domain," "find funding stage," "what are the rate limits and price." Exa's and Parallel's docs have a clean page answering each one. ZoomInfo's site answers none of them in a form a bot can read; they're behind "talk to sales." So Exa is holding a fistful of lottery tickets and ZoomInfo isn't even in the drawing. You don't have to win the big question. You have to plainly answer one of the small ones. When a user types something, the agent doesn't search that string. It fans the prompt into sub-queries $\{q_1,\dots,q_m\}$ and retrieves for each. The per-passage score, in a modern hybrid retriever, blends a lexical signal and a semantic one — both decades old and rock-solid: $$s(d,q_i)=\lambda\,\widetilde{\text{BM25}}(d,q_i)+(1-\lambda)\,\cos\!\big(\mathbf{e}_d,\mathbf{e}_{q_i}\big)$$ The tilde is a reminder the two scores get normalized before they're combined, and that real systems often fuse with reciprocal-rank methods rather than a raw weighted sum. The detail that matters: $\mathbf{e}_d$ is the embedding of a **passage**, not the page. Retrieval chops you into chunks and scores the chunks. You make the candidate set if one passage lands in the top-$k$ for one sub-query. So your odds of getting into the room are coverage across the fan, not a single match: $$P_{\text{ret}}(d)=1-\prod_{i=1}^{m}\big(1-p_i\big),\qquad p_i=P\big(d\in\text{top-}k\mid q_i\big)$$ That's the plain "probability at least one of several things happens" formula — exact *if* the retrievals are independent. In reality the sub-queries overlap, so the events are positively correlated and this is an optimistic ceiling. The lesson stands either way: write self-contained passages, each a complete answer to a probable sub-question, each readable without running your JavaScript. The SPA whose content paints in after three round trips hands the bot a spinner to embed, scores near zero on every sub-query, and never makes the room. ## The model won't put its name on your adjectives > **Explanation for those who hate math** > Imagine an editor who gets fired every time they print something they can't back up. The clawdbot is that editor. ZoomInfo's page says "the most accurate B2B data in the industry" — the bot can't repeat that, can't source it, so it skips it. Exa's docs give it a real latency number, the endpoint, the request schema — the bot will quote those with its name attached. One page is all adjectives; the other is all evidence. The thing doing the recommending grounds itself in evidence, because evidence is what it can defend. Most product pages are all adjectives. Say you made the candidate set. Now a language model re-ranks and decides which passages to ground its answer in. I'll model that choice as a softmax over a utility — a Boltzmann / discrete-choice form that's standard in choice modeling and is, not incidentally, the exact shape listwise learning-to-rank already uses: $$P_{\text{used}}(d\mid q,C)=\frac{\exp\!\big(\beta\,v(d,q)\big)}{\sum_{d'\in C}\exp\!\big(\beta\,v(d',q)\big)}$$ Two honest caveats. The model isn't literally computing this; it's a behavioral fit, wrong in the way all models are wrong and useful anyway. And the competition lives in the denominator — you're scored against everyone in the room, which is why being *commensurable* matters as much as being good. Now the part that's a hypothesis, not a result — my proposed decomposition of the utility, motivated by what the GEO studies actually measured: $$v(d,q)=\underbrace{\text{rel}(d,q)}_{\text{semantic match}}+\underbrace{\gamma\,g(d)}_{\text{groundedness}}+\underbrace{\delta\,r(d)}_{\text{recency}}-\underbrace{\eta\,h(d)}_{\text{can't-cite-it risk}}$$ The last term is why visceral marketing copy went from asset to liability. The reranker is punished — by training, by users, by its own hedging reflex — for asserting what it can't support, so it routes around sources it can't repeat. Marketing copy is the worst possible profile: relevance high (full of your category's nouns), groundedness near zero, can't-cite-it risk high. The relevance lifts $v$; the $-\eta h$ term hauls it back below the dull competitor who put a sourced number on the page. This is the mechanism under the finding — from the GEO paper out of Princeton and Georgia Tech, across ten thousand queries — that statistics, citations, and verifiable specifics lift inclusion by as much as forty percent, while keyword stuffing does nothing. Push $g$ up, push $h$ down: adjectives into numbers, numbers into sourced numbers, in the same units your competitors use so you land inside the comparable set instead of being discarded as noise. And keep it fresh; recency is real, and updated pages are reported to surface markedly more often in AI answers than ones left to rot. ## Cited isn't chosen > **Explanation for those who hate math** > Even if the clawdbot mentions ZoomInfo in passing — "the market leader here is ZoomInfo" — that isn't using it. When it's time to actually run the enrichment, the bot reaches for the tool with an API it can call in the next ten seconds. Being named in the answer is a participation trophy. Being the thing that gets *called* is the win. Selection goes back to the agent's objective, and to the two terms classical retrieval never had: $\rho(d)$, the chance the agent gets stuck operating you, and $c_{\text{act}}(d)$, the effort to act at all. A product the agent has learned is flaky to run — checkout that fails on the third call, an API that needs a human to bless a sandbox key, a path that dead-ends at "contact us" — carries a high $\rho$, and high $\rho$ comes straight off the top of the selection score even when fit is perfect. **Operability is a ranking signal now.** The agent isn't recommending something for a person to read about. It's recommending something it will have to drive, and it remembers what drives cleanly. ## The agent will not wait for your SDR > **Explanation for those who hate math** > The clawdbot opens ZoomInfo looking for an API key. It finds a form: "Request a demo — a member of our team will reach out." There's no key it can get in the next thirty seconds. So it backs out, signs up for Exa or Parallel with a self-serve key, runs all 500 leads, and hands the human a finished CSV — all before anyone at ZoomInfo would have replied to the form. The job, and the spend, went to whoever didn't make the bot wait. ZoomInfo never knew it was in the running. The math below is just that scene, formalized. Model the session as having a latency budget $\tau$ — seconds, maybe a couple of minutes. A setup path resolving in time $t_{\text{setup}}$ completes only if it fits the budget. As a deliberately crude first cut — reality is a smooth decay, not a hard cliff; I'm caricaturing for clarity: $$P_{\text{act}}(d)\approx \mathbb{1}\!\big[\,t_{\text{setup}}<\tau\,\big]$$ A self-serve, in-band, instant setup has $t_{\text{setup}}$ in seconds, so $P_{\text{act}}\approx 1$. A sales-gated setup — request a demo, someone will reach out, fill the form so an SDR can size your persona and email back — has $t_{\text{setup}}$ in *days*, and it isn't even synchronous; it's a callback to a human who isn't in the loop. So $t_{\text{setup}}\gg\tau$, and $$P_{\text{act}}(\text{sales-gated})\approx 0.$$ Drop that into the chain. AgentShare is a product, and one zero is contagious: $$\text{AgentShare}=P_{\text{ret}}\cdot P_{\text{used}}\cdot P_{\text{sel}}\cdot \underbrace{P_{\text{act}}}_{\approx\,0}\;\approx\;0.$$ This is the death of the qualify-by-friction funnel, written as arithmetic. The funnel was *built* to make people wait — the form, the gated PDF, the demo request, the "let's hop on a call" — because waiting filtered humans by intent and let you price-discriminate by persona. It worked precisely because it cost the buyer something. The agent breaks it from both ends: infinite patience for reading, zero patience for waiting. A gate that used to qualify your leads now disqualifies *you*, in favor of whoever the user's agent could finish with. The lead-gen form stopped being a filter on your buyers. It became a filter on you. You can't keep a gate-everything motion and bolt "agent-ready" on top. The motion *is* the disqualifier. ## Setup is unresolved entropy > **Explanation for those who hate math** > By the time the clawdbot reaches setup, it already knows most of what matters — from the conversation it knows the leads are US SaaS companies, that the human wants firmographics, that the output should be a CSV. Good setup asks only for what it *doesn't* already know, the way a sharp round of 20 Questions does: each question chosen to cut the remaining uncertainty in half. A bad setup re-asks what the bot already told you (company, role, use case), demands things that don't change the job at all, then routes it to a human. Three kinds of waste, all on a clock. Setup is a search through configuration space. There's a space of valid configs, the user has a target $c^\star$ they couldn't fully describe if asked, and onboarding pins it down. The cost of pinning it is the number of bits the *human* must supply — and by the time an agent arrives, it's already carrying most of them in its context $\Gamma$. What you still need is the residual, $$H\big(c^\star \mid \Gamma\big)$$ the Shannon conditional entropy of the target given everything the agent already knows. A precise quantity, not a metaphor. And the right next question, when you need one, is the one that buys the most bits: $$\text{ask }\;\arg\max_{j}\;I\big(c^\star;\,a_j \mid \Gamma\big)=H(c^\star\mid\Gamma)-\mathbb{E}\big[H(c^\star\mid\Gamma,a_j)\big]$$ That's expected information gain — the same criterion a decision tree uses to choose a split. Maximize bits per question, infer the rest, never ask what the context answers. By Shannon's source-coding logic the best you can do approaches the entropy itself; a good setup flow is a Huffman code over likely intents, the common case resolving in one step. Most of the time, for a first agent-driven setup, the honest answer is *zero* questions and one provisioning call: the agent fills the config from context, you mint a scoped credential, the thing is live before the user looks up. > **Explanation for those who hate math** > The first time the clawdbot sets up a US-SaaS-CSV enrichment job, it's a little work. Save that solution and replay it for the next user who looks the same — but save only the *thinking*, never the steps that mint keys or charge cards; redo those live. You get onboarding that feels hand-tailored and costs almost nothing, and you never had to build a clunky step-by-step wizard. The paths that recur should crystallize — invisibly, as your own amortization. The first time a context-signature comes through, the system may explore to find $c^\star$; the trace it leaves becomes a deterministic, replayable flow so the next similar user pays nothing. Crystallize a path when $$p > \frac{V}{R}$$ — when the probability of reuse $p$ times the recompute cost $R$ beats the cost of caching it $V$. The one rule: cache only the side-effect-free reasoning; the steps that touch live state stay live every time. The user's *first* run is instant because the agent front-loaded the bits; your *hundredth* setup is cheap because the path crystallized. The fit of a bespoke onboarding at the marginal cost of a canned one, and nobody hand-authored a wizard. ## Lower the denominator Put the chain back together. AgentShare is a product of four probabilities, governed by its weakest. You earn the first by covering the sub-question fan with extractable passages. The second by being groundable instead of glossy, because the reranker prices your can't-cite-it risk and routes around copy it can't defend. The third by being something the agent can drive without getting stuck. The fourth by collapsing setup to the residual bits, in-band — which means ripping out the gate your sales motion is built around. One quantity sits underneath all four. The agent's real objective isn't relevance, and it isn't even satisfaction. It's **expected satisfaction per unit of agent effort**. You can't touch the numerator — the user's need is the user's need. The whole game is the denominator: how cheaply an agent can turn intent into a finished outcome through you. Call it resolvability. Every sourced number, every action sitting next to the claim that motivates it, every setup bit you infer instead of demand, every gate you delete, lowers it. The web we built optimized for attention, and attention rewarded the gate — the gradient, the gated PDF, the form you wanted past badly enough to wait. The agentic web optimizes for resolvability, and resolvability treats the gate as a tax it won't pay. ZoomInfo still has the best data. It just isn't in the running, because a clawdbot with a CSV to fill ran the whole job on whoever opened the door first. The funnel was a machine for qualifying leads by making them wait. The agent fails that test on purpose, and walks its user over to whoever didn't ask it to.