<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Shan Valleru&#39;s Blog</title>
    <link>https://svalle.ru/tags/startups/</link>
    <description>Technical blog by Shan Valleru covering Kubernetes, distributed systems, AI, and business strategy. Deep dives into platform engineering, agentic coding, emergence, disruption theory, and infrastructure economics.</description>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Jul 2026 23:21:14 -0700</lastBuildDate>
    <atom:link href="https://svalle.ru/tags/startups/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>One Pattern Behind Every Vertical AI Startup</title>
      <link>https://svalle.ru/posts/ai/anatomy-of-a-vertical-ai-agent/</link>
      <guid isPermaLink="true">https://svalle.ru/posts/ai/anatomy-of-a-vertical-ai-agent/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 &#43;0000</pubDate>
      <description>Giga, Salient, F2, and Kanu look like four different companies. Under the hood they&#39;ve all converged on one pattern. A component-by-component walk through the generic architecture every vertical AI agent ships—and the startups selling each piece.</description>
      <content:encoded><![CDATA[<p>Giga sells voice agents for enterprise customer support. Salient runs collections calls for auto lenders. F2 turns private-market data rooms into investment memos. Kanu ships infrastructure code inside your AWS account. Four products, four industries, four pitches.</p>
<p>Lift the hood and it&rsquo;s one machine.</p>
<p>Strip the domain logic away and every production vertical agent is the same architecture: <strong>a workflow engine that delegates bounded decisions to LLMs, assembles fresh context every turn, treats every model output as an unverified proposal, and logs everything into a trace stream that feeds evals and training.</strong> The <a href="/posts/ai/agent-building-for-engineers/" >agent loop itself is mostly a while loop</a>—I&rsquo;ve written about that. This post is about everything production wraps around the loop, and the interesting part: almost every wrapper is now a purchasable component. Walk the machine once, end to end, and you get two things at the same time—the generic pattern, and a map of the startup landscape that sells it.</p>
<p>Here&rsquo;s the pattern. Everything below is a tour of it, one box at a time.</p>
<div class="d2-diagram"><img src="https://svalle.ru/d2/ef7fed4267555829.svg" alt="The full vertical AI agent architecture: channels and voice I/O flow into intent and routing, then into context assembly which is also fed by the knowledge pipeline and by session and memory; context feeds the orchestrator running a bounded agent loop; the orchestrator sends proposed actions through a policy gate to tools and sandboxed execution, whose results return to the loop; the orchestrator&#39;s output passes a verifier which either commits and writes back or hands off to a human; both outcomes write into the trace stream that drives evals and updates" loading="lazy"></div><p>For each component: what it does, why it exists, and who sells it.</p>

<h2 id="1-channels-and-voice-io" class="anchor-link"><a href="#1-channels-and-voice-io">1. Channels and voice I/O<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>Everything enters through a channel adapter—web chat, SMS, email, API, phone. Text channels are easy. Voice is where this stage becomes a product category, because a natural conversation gives you roughly 800 milliseconds per turn, and that budget has to cover speech-to-text, deciding the caller has actually finished talking (endpointing—genuinely hard), the model, and text-to-speech, all streaming.</p>
<p>The landscape splits into layers people routinely conflate. STT: Deepgram, AssemblyAI. TTS: ElevenLabs, Cartesia. And a layer <em>above</em> both: the voice pipeline—Vapi, Retell, LiveKit, Pipecat—which wires STT, LLM, and TTS together with interruption handling and telephony. Vapi is not a speech model; it&rsquo;s the plumbing that makes speech models conversational. Holding that budget while the agent reasons mid-turn is precisely why Giga rebuilt this stage instead of buying it.</p>

<h2 id="2-intent-extraction-and-routing" class="anchor-link"><a href="#2-intent-extraction-and-routing">2. Intent extraction and routing<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>Before the expensive model wakes up, a small fast one decides what this request <em>is</em>: classify the intent, verify the caller, pick the workflow. This is almost always an in-house fine-tune—the latency budget demands a small model, and the training labels are your own production traffic, so there&rsquo;s little to buy.</p>
<p>The adjacent buyable layer is model routing—OpenRouter, LiteLLM, Martian—deciding which model serves which call. When a company says its platform is &ldquo;LLM-agnostic,&rdquo; this component is what they mean: the architecture owns the routing, so no single model is load-bearing.</p>

<h2 id="3-session-state-and-memory" class="anchor-link"><a href="#3-session-state-and-memory">3. Session, state, and memory<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>The agent needs three kinds of state, and collapsing them causes most memory confusion. <strong>Conversation state</strong>: this session&rsquo;s transcript, which must survive disconnects and channel hops—the same borrower on a call, then SMS. <strong>Entity state</strong>: the order, the borrower, the deal—read live from your system of record, never cached in the model&rsquo;s head. <strong>Long-term memory</strong>: what previous sessions taught, retrieved per turn.</p>
<p>The first two are yours to build on ordinary infrastructure. The third is a product category: Letta, Zep, Mem0. Salient markets &ldquo;borrower-level memory&rdquo;—prior calls, promises, disputes informing every interaction. That&rsquo;s this component, wearing a compliance department.</p>

<h2 id="4-the-knowledge-pipeline" class="anchor-link"><a href="#4-the-knowledge-pipeline">4. The knowledge pipeline<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>RAG is three components wearing one acronym, and they run on different clocks.</p>
<div class="d2-diagram"><img src="https://svalle.ru/d2/8d854cf1f8927c5d.svg" alt="The knowledge pipeline as a linear chain: documents and systems flow into parsing and OCR, then chunking and embedding, then the index, then retrieval and reranking at request time, ending at context assembly" loading="lazy"></div><p>Offline, throughput-bound: parsing—Unstructured, LlamaParse, Reducto—turning PDFs, tables, and scans into structure; then embedding—Voyage, Cohere—into an index: Pinecone, Qdrant, Weaviate, Chroma, pgvector, Turbopuffer. Online, latency-bound: hybrid retrieval plus a reranker, inside about 100ms because it sits on the hot path.</p>
<p>The offline half is where verticals live or die. F2&rsquo;s entire wedge is parsing messy data rooms at financial-grade fidelity—the fanciest retrieval cannot fix a bad parse. One taxonomy correction worth internalizing: Exa is not a vector database. It, along with Tavily, is neural search over the <em>web</em>—which makes it a tool the agent calls, and it belongs two sections down.</p>

<h2 id="5-the-orchestrator-and-the-bounded-loop" class="anchor-link"><a href="#5-the-orchestrator-and-the-bounded-loop">5. The orchestrator and the bounded loop<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>The center of the diagram, and the part demos most misrepresent. Production vertical agents are <strong>not</strong> open-ended ReAct loops pointed at a pile of tools. The outer structure is a deterministic workflow state machine—compiled from flows that domain experts draw in builders like Giga&rsquo;s Agent Canvas or Salient&rsquo;s Agent Studio. The LLM gets <em>bounded autonomy inside each node</em>: reason, act, observe, against a whitelisted tool set, under a step cap, with a defined surrender path. Autonomy is a per-node budget, not a global property. This single design decision is why these systems pass enterprise procurement while impressive demos don&rsquo;t.</p>
<p>The buyable layer: LangGraph, CrewAI, and the labs&rsquo; own agent SDKs for the loop; Temporal underneath for durable execution, so a crash mid-loop resumes instead of restarting the phone call.</p>

<h2 id="6-tools-mcp-and-the-policy-gate" class="anchor-link"><a href="#6-tools-mcp-and-the-policy-gate">6. Tools, MCP, and the policy gate<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>The defining trust decision of the whole pattern: <strong>the model never calls anything.</strong> It emits a proposal—tool name, arguments. A declarative policy gate evaluates the proposal against your rules and approves, denies, or escalates. A separate executor with scoped credentials runs what survives.</p>
<div class="d2-diagram"><img src="https://svalle.ru/d2/337ab8d79dfdea89.svg" alt="The trust boundary around actions: the model emits a proposed action to the policy gate, which either passes it to a scoped executor whose result returns to the model, or escalates to a human when rules say no" loading="lazy"></div><p>MCP is becoming the wiring standard for the tools themselves. Composio and Arcade sell integration catalogs; Exa, Tavily, and Browserbase are tools in their own right—web search and browser automation. Guardrails vendors—Guardrails AI, NeMo Guardrails, Lakera—cover input/output screening and injection defense. But the policy engine itself (OPA/Cedar-shaped) stays in-house at every serious company, because it encodes the rules that <em>are</em> the domain: refund limits, FDCPA disclosure requirements, IAM scopes. The prompt can say &ldquo;don&rsquo;t refund over $50&rdquo;; the gate is what makes it true.</p>

<h2 id="7-sandboxed-execution" class="anchor-link"><a href="#7-sandboxed-execution">7. Sandboxed execution<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>When actions are code, blast radius becomes a component. E2B, Modal, and Daytona sell disposable isolation—Firecracker microVMs in E2B&rsquo;s case, gVisor&rsquo;s user-space kernel in Modal&rsquo;s—where an agent can execute, test, and fail without consequence. Kanu&rsquo;s variant inverts the idea: the sandbox is your <em>actual</em> AWS account, with isolation enforced by tag-scoped IAM and a battery of security checks rather than a separate VM. Either way the principle holds—the agent acts inside a boundary that was drawn before it started acting.</p>
<p>The underestimated flavor is the browser. Most verticals sit on systems of record with no API—insurer portals, government sites, legacy EHRs—so the tool call degrades to an agent driving a web UI, and that live session needs the same containment plus session persistence, auth handling, and a human-takeover path. Browserbase (already on the tools shelf), Steel, and Hyperbrowser sell the managed browser; Browser Use, Stagehand, and Skyvern sell the agent that drives it.</p>
<p>And this component is one primitive serving three demand curves, which is why the category is bigger than &ldquo;run the agent&rsquo;s Python&rdquo;:</p>
<div class="d2-diagram"><img src="https://svalle.ru/d2/ba8fe5b69d6296c9.svg" alt="One sandbox primitive serving three demand curves: inference-time execution for production agents, training-time reinforcement learning rollouts that need thousands of parallel resettable environments, and evaluation and simulation replaying traces in isolation" loading="lazy"></div><p>Inference-time execution is the visible curve. The steeper one is training: RL on agentic tasks needs thousands of parallel, resettable environments per experiment, because each trajectory is an agent trying whatever maximizes reward—side effects included—and every rollout needs a clean world to wreck. Snapshot-and-fork is the primitive vendors compete on because RL wants to branch state cheaply, and an environments market is forming on top of it (Prime Intellect&rsquo;s Environments Hub, Mechanize). The third curve belongs two sections down: the eval harness replays traces and runs simulations inside the same isolation.</p>
<p>One macro note. Sovereign AI doesn&rsquo;t add executions so much as it <em>moves</em> them—data-residency rules and national-AI programs push the execution layer inside jurisdictional or corporate boundaries, which favors isolation you can deploy (BYOC, on-prem, or the open primitives underneath: Firecracker, gVisor, Kata) over pure SaaS. Kanu&rsquo;s inversion above is the same force at company scale. Expect every sandbox vendor to grow a deployable story, or cede that demand to the open source they&rsquo;re built on.</p>

<h2 id="8-verification-and-human-handoff" class="anchor-link"><a href="#8-verification-and-human-handoff">8. Verification and human handoff<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>Guardrails constrain actions <em>before</em> they happen; verification validates outputs <em>after</em>, pre-commit. Schema checks, business invariants (the refund must not exceed the order total), grounding checks (every policy claim traces to a retrieved source), and increasingly a judge model scoring against a rubric. This stays mostly in-house for the same reason the policy gate does: the checks are the domain expertise.</p>
<p>When verification fails—or stakes exceed the autonomy budget—the handoff is engineered, not apologized for: a queue plus a context packet (transcript, retrieved policy, attempted and blocked actions) into the desk your humans already use (Zendesk, Genesys); HumanLayer sells the approval-flow primitive for agents. These are partial-autonomy systems by construction. The escalation rate is simultaneously the pricing model, the safety valve, and—because the human&rsquo;s resolution comes back as a labeled example—the training-data faucet.</p>

<h2 id="9-observability-evals-and-the-learning-loop" class="anchor-link"><a href="#9-observability-evals-and-the-learning-loop">9. Observability, evals, and the learning loop<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>Every model call, retrieval, proposal, gate decision, and execution appends to one trace stream with four consumers: debugging, audit, evals, training data. One artifact, four jobs—which is why the eval/observability shelf is the most crowded corner of the agent-infrastructure map. Tracing and evals: Langfuse, Arize, Braintrust, AgentOps, Weights &amp; Biases Weave. Voice simulation and QA—synthetic callers hammering your agent before real ones do: Hamming, Coval, Cekura (formerly Vocera).</p>
<p>The loop&rsquo;s output lands in three destinations with three latencies:</p>
<div class="d2-diagram"><img src="https://svalle.ru/d2/213117e8d54e32f8.svg" alt="The learning loop: the trace stream feeds evals and QA, which fan out to three destinations—context updates that land instantly, config updates to prompts and policies that land in minutes, and weight updates via fine-tuned edge models that land in weeks" loading="lazy"></div><p>Facts go in context. Rules go in config—versioned and rolled back like deployments, which is what makes an audit answerable. Reflexes go in weights: fine-tunes of the <em>edge</em> models—the intent classifier, the reranker, the judge—not the frontier model in the middle. OpenPipe, Fireworks, and Predibase sell that capability. The sequencing is invariant: tracing, then evals, then weights. A fine-tune without regression evals is a bet you can&rsquo;t measure.</p>

<h2 id="the-five-patterns-composed" class="anchor-link"><a href="#the-five-patterns-composed">The five patterns, composed<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>If you know the five classic agentic design patterns—reflection, tool use, ReAct, planning, multi-agent—they&rsquo;re all in the opening diagram. Not as a menu; as a fixed composition. Planning is the orchestrator&rsquo;s state machine, with most of the plan pre-compiled by domain experts as flows. ReAct is the bounded loop inside each node. Tool use is the proposal–gate–executor triple. Reflection runs at three timescales: in-loop critique, pre-commit verification, and the eval pipeline reflecting over the whole deployment. Multi-agent is the org chart—router, workers, judge—differing in model size as much as in role. The textbook teaches them as five choices. Production ships them as one machine.</p>

<h2 id="the-box-you-rebuild-is-the-business" class="anchor-link"><a href="#the-box-you-rebuild-is-the-business">The box you rebuild is the business<span class="pilcrow">&nbsp;¶</span></a></h2>
<p>Every company in this space—swap in Decagon, Sierra, Parloa, Harvey, pick your vertical—buys most of the catalog above and rebuilds exactly one box: the one the catalog can&rsquo;t satisfy. For Giga, no rented pipeline stayed sub-second once retrieval, policy, and tool calls sat inside the turn. For F2, no generic parser could read a data room. For Salient, no off-the-shelf guardrail could encode FDCPA. For Kanu, no hosted sandbox could safely ship changes to a live cloud account. The exception proves the rule: Chatbase, at the self-serve end of the market, rebuilds none of it—pure assembly of the catalog, which caps differentiation exactly as the thesis predicts: when every box is bought, the only levers left are distribution and price. The rebuilt box is the wedge; the trace stream compounds it into the moat, because the terminal asset of the learning loop is a model and a policy set that only your traffic could have produced.</p>
<p>The pattern is generic. The box you rebuild is the business.</p>

<h2 id="summary" class="anchor-link"><a href="#summary">Summary<span class="pilcrow">&nbsp;¶</span></a></h2>
<table>
  <thead>
      <tr>
          <th>Component</th>
          <th>The job</th>
          <th>Build or buy</th>
          <th>Example vendors</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Channels &amp; voice I/O</strong></td>
          <td>STT/TTS under a turn budget</td>
          <td>Buy (unless voice is the product)</td>
          <td>Deepgram, ElevenLabs, Cartesia; pipeline: Vapi, Retell, LiveKit</td>
      </tr>
      <tr>
          <td><strong>Intent &amp; routing</strong></td>
          <td>Classify, verify, route fast</td>
          <td>Build (fine-tuned small models)</td>
          <td>routing layer: OpenRouter, LiteLLM</td>
      </tr>
      <tr>
          <td><strong>Session &amp; memory</strong></td>
          <td>Conversation, entity, long-term state</td>
          <td>Build core; buy long-term memory</td>
          <td>Letta, Zep, Mem0</td>
      </tr>
      <tr>
          <td><strong>Knowledge pipeline</strong></td>
          <td>Parse → embed → index → retrieve</td>
          <td>Buy parts; own the parse quality</td>
          <td>Unstructured, Reducto; Voyage; Pinecone, Qdrant, pgvector</td>
      </tr>
      <tr>
          <td><strong>Orchestrator</strong></td>
          <td>State machine + bounded loops</td>
          <td>Buy the loop; own the flows</td>
          <td>LangGraph, CrewAI, agent SDKs; Temporal</td>
      </tr>
      <tr>
          <td><strong>Tools &amp; policy gate</strong></td>
          <td>Proposals, rules, scoped execution</td>
          <td>Buy tools; build the gate</td>
          <td>MCP, Composio, Arcade; Exa, Tavily; Guardrails AI, Lakera</td>
      </tr>
      <tr>
          <td><strong>Sandbox</strong></td>
          <td>Contain side effects; browser sessions; RL rollouts</td>
          <td>Buy</td>
          <td>E2B, Modal, Daytona; browsers: Browserbase, Steel, Hyperbrowser</td>
      </tr>
      <tr>
          <td><strong>Verification &amp; handoff</strong></td>
          <td>Validate pre-commit; escalate well</td>
          <td>Build checks; buy approval plumbing</td>
          <td>HumanLayer; Zendesk, Genesys</td>
      </tr>
      <tr>
          <td><strong>Observability &amp; evals</strong></td>
          <td>One trace stream, four consumers</td>
          <td>Buy tracing; build the eval set</td>
          <td>Langfuse, Arize, Braintrust, AgentOps; Hamming, Coval</td>
      </tr>
      <tr>
          <td><strong>Fine-tuning</strong></td>
          <td>Reflexes into edge models</td>
          <td>Buy the pipeline; own the data</td>
          <td>OpenPipe, Fireworks, Predibase</td>
      </tr>
  </tbody>
</table>
<p>Vendor names will drift—this corner of the industry reshuffles quarterly. The boxes won&rsquo;t. Learn the machine, and the landscape becomes legible: every funding announcement is somebody selling one box harder, and every vertical AI success story is somebody who rebuilt the right one.</p>
]]></content:encoded>
      <dc:creator>Shan Valleru</dc:creator>
      <category>AI</category>
      <category>agents</category>
      <category>LLM</category>
      <category>architecture</category>
      <category>infrastructure</category>
      <category>startups</category>
    </item>
  </channel>
</rss>
