<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RevOS]]></title><description><![CDATA[RevOS gives AI agents a governed semantic model and an MCP interface they can query. We write about data engineering, AI agents, MCP, and governed data.]]></description><link>https://revosai.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ac4cb3e18ede81f506a2be5/bea9d268-0c2c-4d69-abe9-16413745b093.png</url><title>RevOS</title><link>https://revosai.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:54:27 GMT</lastBuildDate><atom:link href="https://revosai.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Claude vs Gemini for AI Agents: The Pricier Model Cost Half as Much]]></title><description><![CDATA[Claude vs Gemini for AI agents, same production agent, 99 turns each: Claude was more accurate, about 3x faster at p90, and half the cost per turn.]]></description><link>https://revosai.hashnode.dev/claude-vs-gemini-for-ai-agents-the-pricier-model-cost-half-as-much</link><guid isPermaLink="true">https://revosai.hashnode.dev/claude-vs-gemini-for-ai-agents-the-pricier-model-cost-half-as-much</guid><category><![CDATA[AI]]></category><category><![CDATA[llm]]></category><category><![CDATA[agents]]></category><category><![CDATA[claude]]></category><category><![CDATA[gemini]]></category><category><![CDATA[mcp]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Wed, 11 Nov 2026 10:43:21 GMT</pubDate><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li>Same agent, same tools, same evals. Only the models differed: Gemini 3.5 Flash Lite + 3.8 Flash versus Claude Haiku 5.5 + Sonnet 5.5.</li>
<li>Claude passed 95% of the customer evals against Gemini's 82%, and had a third as many flaky evals.</li>
<li>Claude was about 3x faster at p90 (48 s versus 161 s per turn). Gemini made 2.4x more model calls per turn, mostly small routing steps that looped.</li>
<li>Gemini is cheaper per token but used 3.7x more input per turn, so it cost twice as much: $0.139 versus $0.067 per turn at real Vertex AI EU prices.</li>
<li>Prompt caching cut Claude's cost per turn by about 60%. Even without it, Claude would still have been cheaper than Gemini without caching.</li>
</ul>
<p>We run a data-analysis agent in production for our customers. It answers questions like "which deals are stuck in stage three?". Instead of writing SQL from scratch, it calls tools on an <a href="https://www.revos.ai/blog/what-is-an-mcp-server-for-data">MCP server for data</a>. Those tools read a <a href="https://www.revos.ai/product/semantic-model">semantic model</a>, the shared definition of each metric.</p>
<p>We started the agent on Gemini and kept it there for a long time. We looked at Claude, but its per-token prices were higher, and with no way to measure quality we had no reason to pay more. That changed once we had evals: automated checks that score the agent's answer to a fixed question. For the first time we could compare models on how well they do the job, not on the price list. So we ran the same agent on Claude to see. The result was not what we expected.</p>
<p>We tested Claude vs Gemini for AI agents the only way that settles it. Same agent, same tools, same evals, 99 turns per model, on 26 October 2026. Short version: for this workload Claude was more accurate, about 3x faster at p90 (the time nine turns in ten finish within), and about half the cost per turn. This post is just the results.</p>
<h2>The setup</h2>
<ul>
<li><strong>One agent, two variants.</strong> Same code, same tool set, same instructions. Each variant pairs a small model with a bigger one. The small model handles routing (the short steps that decide what the agent does next) and simple turns; the bigger model handles the rest. Gemini: 3.5 Flash Lite + 3.8 Flash. Claude: Haiku 5.5 + Sonnet 5.5. Both ran with prompt caching, which lets the model reuse the unchanged part of a long conversation instead of re-reading it at full price. The Gemini pair was our production config going into the test.</li>
<li><strong>Three eval suites, three runs each per variant.</strong> The eval system is still a proof of concept. The suites are the customer's own agent evals, a set of shared evals we run on our deployments, and questions real users had asked. A turn is one question through to the agent's final answer, and it usually takes several model calls. Three runs of every suite came to 99 turns per model.</li>
<li><strong>Writes stubbed.</strong> No run touched production data.</li>
<li><strong>Real prices.</strong> Cost comes from our LLM gateway's spend logs at real Vertex AI EU prices.</li>
</ul>
<h2>Is Claude better than Gemini for AI agents? The results</h2>
<p>For this agent, yes. Claude passed 95% of the customer evals to Gemini's 82%, ran at 48 s versus 161 s at p90, and cost $0.067 versus $0.139 per turn.</p>
<img src="https://www.revos.ai/blog-content/claude-vs-gemini-for-ai-agents/images/eval-pass-rate.svg" alt="Bar chart of eval pass rates. Customer evals: Gemini 82%, Claude 95%. Shared evals: Gemini 83%, Claude 94%. Real user questions: Gemini 100%, Claude 96%." style="display:block;margin:0 auto" />

<p><em>Pass rate across the three suites, averaged over three runs. Gemini is ahead only on the real user questions.</em></p>
<table>
<thead>
<tr>
<th>Metric, 99 turns per variant</th>
<th>Gemini (3.5 Flash Lite + 3.8 Flash)</th>
<th>Claude (Haiku 5.5 + Sonnet 5.5)</th>
</tr>
</thead>
<tbody><tr>
<td>Customer evals passed, 3 runs</td>
<td>84% / 79% / 84% (avg 82%)</td>
<td>95% / 95% / 95% (avg 95%)</td>
</tr>
<tr>
<td>Shared evals passed, 3 runs</td>
<td>83% / 83% / 83% (avg 83%)</td>
<td>83% / 100% / 100% (avg 94%)</td>
</tr>
<tr>
<td>Real user questions answered, 3 runs</td>
<td>100% / 100% / 100%</td>
<td>88% / 100% / 100% (avg 96%)</td>
</tr>
<tr>
<td>Flaky evals (pass in some runs, fail in others)</td>
<td>6</td>
<td>2</td>
</tr>
<tr>
<td>Turn latency, median / p90</td>
<td>14 s / 161 s</td>
<td>16 s / 48 s</td>
</tr>
<tr>
<td>Customer suite wall time (start to finish)</td>
<td>4.7 to 10.2 min</td>
<td>1.0 to 1.5 min</td>
</tr>
<tr>
<td>Model calls per turn (requests to the model)</td>
<td>16.6</td>
<td>7.0</td>
</tr>
<tr>
<td>Input tokens per turn (share served from cache)</td>
<td>514K (86%)</td>
<td>140K (77%)</td>
</tr>
<tr>
<td>Cost per turn</td>
<td>$0.139</td>
<td>$0.067</td>
</tr>
<tr>
<td>Cost per turn without caching</td>
<td>$0.536</td>
<td>$0.175</td>
</tr>
<tr>
<td>Total, 99 turns</td>
<td>$13.72</td>
<td>$6.62</td>
</tr>
</tbody></table>
<p>Three of the real user questions, side by side. Here we count tool calls: each time the model asks the agent to run a tool, such as a metric query.</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Gemini</th>
<th>Claude</th>
</tr>
</thead>
<tbody><tr>
<td>Customer deals, all stages</td>
<td>Correct, 94 s</td>
<td>Correct, 47 s; separates linked from name-only matches</td>
</tr>
<tr>
<td>Revenue last quarter</td>
<td>Correct, 31 s</td>
<td>Correct, 12 s</td>
</tr>
<tr>
<td>Explain a deal's progression</td>
<td>Right stage, then speculates; 209 s, 40 tool calls</td>
<td>Right stage, then asks what is meant; 51 s, 14 tool calls</td>
</tr>
</tbody></table>
<h2>Where the gap came from: accuracy, speed, cost</h2>
<p><strong>Accuracy.</strong> Gemini missed the same two checks in every run and was flaky on revenue versus order intake. Those are the exact mistakes users had reported before the test, so the evals are catching real behavior. Claude's one steady failure is an eval whose pattern match is too narrow; the answer itself is fine.</p>
<p><strong>Speed.</strong> The median turn is close (14 s versus 16 s). The tail is not. Gemini loops: 2.4x more model calls per turn, most of them tiny Flash Lite routing steps that go round again. On top of that, a single Gemini 3.8 Flash call took about 2.6x longer than a Sonnet 5.5 call in our traces. The "explain a deal's progression" row shows both effects at once: 40 tool calls and 209 s to reach the stage Claude identified in 14 tool calls and 51 s.</p>
<img src="https://www.revos.ai/blog-content/claude-vs-gemini-for-ai-agents/images/per-turn.svg" alt="Three bar charts comparing one turn on each variant. p90 latency: Gemini 161 seconds, Claude 48 seconds. Model calls per turn: Gemini 16.6, Claude 7.0. Input tokens per turn: Gemini 514K, Claude 140K." style="display:block;margin:0 auto" />

<p><em>What one turn costs in time, calls, and tokens. The extra model calls are what drive the latency tail and the token volume.</em></p>
<p><strong>Cost.</strong> Gemini is cheaper per token. It is twice as expensive per turn because it reads 3.7x more input per turn, and every extra model call re-reads the whole conversation. Caching helps both: it saved Claude about 60% and Gemini about 74%. Even so, Claude <em>without</em> caching ($0.175) came in not far above Gemini <em>with</em> caching ($0.139), and far under Gemini without it ($0.536). For an agent, cost per token is the wrong unit. Cost per finished turn is what shows up on the invoice. It is the same lesson we drew about <a href="https://www.revos.ai/blog/token-capital">token capital</a>: the budget buys answers, not tokens.</p>
<img src="https://www.revos.ai/blog-content/claude-vs-gemini-for-ai-agents/images/cost-per-turn.svg" alt="Bar chart of cost per turn. With caching: Gemini $0.139, Claude $0.067. Without caching: Gemini $0.536, Claude $0.175." style="display:block;margin:0 auto" />

<p><em>Cost per turn with and without prompt caching. Claude uncached ($0.175) lands close to Gemini cached ($0.139).</em></p>
<p><strong>No mix wins.</strong> The cost breakdown rules out a Gemini-for-routing, Claude-for-reasoning split. Haiku 5.5 is already cheaper than Gemini 3.5 Flash Lite and makes up only 6% of the Claude variant's cost. Sonnet 5.5 is the other 94%, and caching is already on. There is no cheaper piece to swap in.</p>
<h2>Caveats</h2>
<ul>
<li><strong>Claude is not spotless.</strong> In one run it sent a read query through the write tool. Writes were stubbed, so nothing happened, but we are adding a line to the tool descriptions and watching for it in production.</li>
<li><strong>Two customer evals are too strict.</strong> Their pattern matches reject answers that are correct. One of them is Claude's single steady failure, so Claude's pass rate is a little lower than its answers deserve. Both models were scored against the same checks, so the comparison holds. We are widening them.</li>
<li><strong>This is one workload.</strong> A data agent that makes many tool calls against a semantic model is not every agentic workload, and the ratios will differ elsewhere. We have argued that <a href="https://www.revos.ai/blog/agentic-data-engineering">the setup around a model matters more than the model itself</a>. On this setup the model still moved eval pass rates by 11 to 13 points, p90 latency by 3x, and cost by 2x.</li>
</ul>
<h2>What we are changing in production</h2>
<p>We are switching the agent to Claude by default: Haiku 5.5 for routing and simple turns, Sonnet 5.5 for the rest, caching on. We expected to confirm the cheaper models and move on. Instead, the smaller Claude models made fewer mistakes and needed fewer tokens to finish a task, so they were cheaper too. The test turned "we assume this is right" into numbers we can show a customer who asks why. If you are choosing a model for an agent of your own, copy the shape of the test rather than the winner: the same agent, the evals you already trust, real prices, and cost and latency per turn.</p>
<h2>Frequently asked questions</h2>
<h3>Is Claude better than Gemini for AI agents?</h3>
<p>For our agentic workload, yes. On a production data-analysis agent, Claude (Haiku 5.5 for routing, Sonnet 5.5 for the rest) was more accurate, about 3x faster at p90, and about half the cost per turn compared with Gemini 3.5 Flash Lite + 3.8 Flash. Much of the speed and cost gap came from agent behavior: Gemini looped through 2.4x more model calls per turn. Other workloads will differ, so run your own evals.</p>
<h3>Is Gemini cheaper than Claude for an AI agent?</h3>
<p>Per token, yes. Per turn, no, at least in our test. An agent's cost is tokens per turn times price per token, and Gemini used 3.7x more input tokens per turn (514K versus 140K). It made 16.6 model calls per turn against Claude's 7.0, and each call re-reads the growing context. Per-token price is the wrong unit for an agent; cost per completed turn is what you pay.</p>
<h3>How much does prompt caching save on an agentic workload?</h3>
<p>On our Claude variant, caching cut cost per turn from $0.175 to $0.067, about 60%. On the Gemini variant it cut cost from $0.536 to $0.139. Caching matters more for agents than for single prompts because every tool call re-sends the conversation so far, and most of it is unchanged.</p>
<h3>Would a mix of Gemini and Claude models be cheaper?</h3>
<p>Not in our setup. Haiku 5.5 handled routing and simple turns for only 6% of Claude's total cost, and it was already cheaper than Gemini Flash Lite. Sonnet 5.5 made up the other 94%, and caching was already on. There was no cheaper piece to swap in.</p>
<h3>Is Gemini better than Claude for AI agents?</h3>
<p>Not in our test, but it did three things well. Its median turn was slightly faster than Claude's (14 s versus 16 s). It answered every real user question in every run, where Claude missed one once. And its per-token price is lower, which is why we ran on it in the first place. Its problems were in the tail: looping tool calls that pushed p90 latency to 161 s, and two checks it missed in every run.</p>
<h3>How did you measure accuracy for the agent?</h3>
<p>With a proof-of-concept eval system: three suites, each run three times per model. One is the customer's own agent evals, one is a set of shared evals we run on our deployments, and one is built from real user questions. Writes were stubbed so no run touched production data. Cost came from our LLM gateway's spend logs at real Vertex AI EU prices.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/claude-vs-gemini-for-ai-agents?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=claude-vs-gemini-for-ai-agents"><em>RevOS blog</em></a><em>.</em></p>
<p>RevOS gives your agents one governed view of your CRM, billing and product data, served over MCP. <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=claude-vs-gemini-for-ai-agents">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Implementing the Modern Data Strategy: Microsoft Fabric Blueprint]]></title><description><![CDATA[Build a Medallion Architecture on Microsoft Fabric: 7-workspace model, Direct Lake optimization, and governance strategies for the AI era.]]></description><link>https://revosai.hashnode.dev/implementing-the-modern-data-strategy-microsoft-fabric-blueprint</link><guid isPermaLink="true">https://revosai.hashnode.dev/implementing-the-modern-data-strategy-microsoft-fabric-blueprint</guid><category><![CDATA[dataengineering]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Microsoft]]></category><category><![CDATA[architecture]]></category><category><![CDATA[microsoftfabric]]></category><category><![CDATA[#DataArchitecture]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Mon, 09 Nov 2026 10:31:29 GMT</pubDate><content:encoded><![CDATA[<p><em>Part 2 of the Modern Data Strategy series. Part 1,</em> <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai"><em>How to Build a Modern Data Strategy in the Age of AI</em></a><em>, covers the strategy behind this blueprint.</em></p>
<p>In our <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai">previous post</a>, we established that the biggest barrier to Revenue AI is not the model. It is the data mess. We introduced the <a href="https://learn.microsoft.com/en-us/fabric/onelake/onelake-medallion-lakehouse-architecture"><strong>Medallion Architecture</strong></a> not just as a technical pattern, but as an operating model to manage complexity, enforce discipline, and build trust.</p>
<p>This installment turns strategy into execution. A fundamental shift to internalize upfront is that <strong>Fabric is SaaS</strong>, while much of the classic Azure data stack is <strong>PaaS</strong>: you provision and tune far less infrastructure, but you must operate within shared-capacity and platform guardrails. In return, Fabric integrates storage, compute, governance, and BI into one managed experience, so architecture decisions move from infrastructure wiring to <strong>workspace design, contracts, and operational discipline</strong>.</p>
<img src="https://www.revos.ai/blog-content/modern-data-strategy-microsoft-fabric-blueprint/images/image-1.png" alt="The Medallion Architecture implemented on Microsoft Fabric" style="display:block;margin:0 auto" />

<p>Below is a practitioner-focused blueprint for implementing Medallion Architecture on the <a href="https://fabric.microsoft.com/"><strong>Microsoft Fabric</strong></a> stack, emphasizing environment separation, deliberate schema governance, realistic capacity planning, and an architecture that remains operable as teams and workloads grow.</p>
<h2>1. The foundation: OneLake and Delta</h2>
<p>Most data programs suffer from a "copy-storm": the same dataset is replicated across multiple workspaces, semantic models, and storage locations. Copies break lineage, create inconsistent numbers, and inflate cost.</p>
<p>Fabric's anchor is <a href="https://learn.microsoft.com/en-us/fabric/onelake/onelake-overview"><strong>OneLake</strong></a>, a tenant-wide data lake that acts as a shared storage plane for Fabric engines.</p>
<ul>
<li><strong>Unified storage plane:</strong> Store data once and access it through multiple engines (Spark, T-SQL, KQL) without creating a second physical copy for each workload.</li>
<li><strong>Delta as the default table format:</strong> Fabric standardizes on <strong>Delta Lake</strong>, providing ACID transactions, schema enforcement, and time travel. For revenue and finance reporting, these properties are not "nice to have"; they are table stakes.</li>
</ul>
<p><strong>Design implication:</strong> treat OneLake as the system-of-record storage layer, and treat semantic models and reports as <em>consumers</em> of governed tables, not as places to quietly "fix" data.</p>
<h2>2. The Medallion blueprint in Fabric</h2>
<p>Medallion Architecture is not just about three folders named Bronze/Silver/Gold. The value comes from <strong>clear contracts</strong>: what each layer guarantees, what it does <em>not</em> guarantee, and who owns it.</p>
<p>In Fabric, the layers are typically realized via <strong>separate Lakehouses and/or Warehouses</strong> (and often separate workspaces) to enforce isolation, security boundaries, and CI/CD promotion.</p>
<h3>Bronze: the raw landing zone</h3>
<p>Bronze is your audit trail. Data lands here as close as possible to what the source system emitted.</p>
<ul>
<li><strong>Core rule:</strong> Bronze is <strong>immutable and append-only</strong>. No updates-in-place, no "cleanup" that loses the ability to replay history.</li>
<li><strong>Transformations:</strong> Keep them minimal. Acceptable examples include column-name normalization for technical safety, typing of ingestion metadata, and adding load identifiers.</li>
<li><strong>Replayability:</strong> Always preserve enough metadata to reprocess (ingestion timestamp, source extraction watermark, load/run ID, source file name, record hash if needed).</li>
</ul>
<p><strong>Workspace design:</strong> a <em>single</em> Bronze workspace can become a bottleneck and a risk. In practice, consider:</p>
<ul>
<li><strong>Multiple Bronze workspaces</strong> (by domain such as CRM/ERP/Product, or by business unit), or</li>
<li><strong>Logical isolation per source/domain</strong> within a Bronze workspace (separate Lakehouses, separate folders/tables, separate security groups).</li>
</ul>
<p>This reduces blast radius and prevents a common anti-pattern: developing ingestion logic directly in a production landing zone.</p>
<h3>Silver: the trust layer</h3>
<p>Silver is where raw data becomes <strong>fit for business use</strong>. This is where you standardize entities, enforce integrity, deduplicate, and align definitions.</p>
<ul>
<li><strong>Primary goal:</strong> create governed, reusable entity tables (e.g., Customer, Deal, Invoice, Subscription) with consistent keys, typing, and history semantics.</li>
<li><strong>Data quality gates:</strong> apply deterministic checks (uniqueness, referential integrity where appropriate, nullability expectations, outlier rules) and route rejects/quarantine for investigation.</li>
</ul>
<h3>Transformation engine choices</h3>
<p>Fabric gives you multiple ways to implement Bronze → Silver:</p>
<ul>
<li><strong>Spark-based ELT (Notebooks / Spark jobs):</strong> Prefer this when you have large datasets, semi-structured data (JSON), complex joins/transformations, heavy dedup logic, or you need scalable compute patterns.</li>
<li><strong>SQL-based ELT (Warehouse T-SQL, Lakehouse SQL endpoint, views):</strong> Prefer this when transformations are mostly relational, the team is SQL-strong, and you value simplicity and governance. SQL-only pipelines are often faster to build and easier to review, but can become limiting when data volume, semi-structured content, or transformation complexity increases.</li>
</ul>
<p>A pragmatic pattern is to do heavy lifting in Spark where it is justified, and then expose clean relational tables for downstream BI.</p>
<h3>Materialized Lakeviews</h3>
<p><a href="https://learn.microsoft.com/en-us/fabric/data-engineering/materialized-lake-views/overview-materialized-lake-view"><strong>Materialized Lakeviews</strong></a> can reduce orchestration complexity by letting you declare transformation logic and have the system manage refresh. Treat them as an optimization lever, particularly useful for well-scoped, SQL-friendly transformations, but validate preview limitations and operational behavior (refresh semantics, monitoring, lineage) before standardizing on them for mission-critical pipelines.</p>
<h3>Gold: the business and consumption layer</h3>
<p>Gold is optimized for consumption: star schemas, curated marts, and metrics defined centrally.</p>
<ul>
<li><strong>Contract:</strong> Gold is the <strong>single source of truth for consumption</strong>, meaning business logic lives here, not hidden in individual Power BI files.</li>
<li><strong>Semantic model discipline:</strong> define measures once, define dimensional conformance once, and make it the shared metric layer for dashboards and downstream AI.</li>
</ul>
<h3>Gold in Fabric: Lakehouse vs Warehouse</h3>
<p>There is no universally correct choice. Use the engine that matches your workload and team.</p>
<ul>
<li><strong>Warehouse (T-SQL):</strong> strong for structured BI, governance via explicit DDL, predictable relational modeling, and tighter control over schema and permissions. A good fit when BI is dominant and SQL governance matters.</li>
<li><strong>Lakehouse (Spark + SQL endpoint):</strong> strong for data engineering flexibility, Spark-native transformations, and unified handling of structured and semi-structured data. Often a better fit when engineering workloads dominate and you want end-to-end lakehouse patterns.</li>
</ul>
<p><strong>Selection criteria:</strong></p>
<ul>
<li>Team skills (SQL-first vs Spark-first)</li>
<li>Transformation complexity and data types (strictly relational vs mixed/semi-structured)</li>
<li>Governance model (explicit DDL control vs flexible iterative modeling)</li>
<li>Consumption needs (BI-first vs broader data/ML usage)</li>
</ul>
<h2>3. Environment separation and workspace architecture</h2>
<p>A modern data strategy treats data assets like software: you need controlled change, safe testing, and predictable releases.</p>
<img src="https://www.revos.ai/blog-content/modern-data-strategy-microsoft-fabric-blueprint/images/image-2.webp" alt="Workspace architecture with Dev, Test and Prod separation on Microsoft Fabric" style="display:block;margin:0 auto" />

<h3>Dev → Test → Prod separation (minimum viable)</h3>
<p>At a minimum, implement <strong>Dev → Test → Prod</strong> for <strong>Silver and Gold</strong>.</p>
<p>This prevents:</p>
<ul>
<li><strong>Resource contention:</strong> development experiments competing with production refresh and dashboard queries.</li>
<li><strong>Accidental impact on production dashboards:</strong> a single inefficient notebook or pipeline can throttle interactive BI.</li>
<li><strong>Risky schema changes:</strong> breaking downstream consumers by evolving tables without validation.</li>
</ul>
<h3>Separating ETL workspaces from BI workspaces</h3>
<p>A strong operational baseline is to separate transformation and consumption ownership:</p>
<ul>
<li><strong>Bronze/Silver = engineering workspaces</strong> (ingestion + curation)</li>
<li><strong>Gold = consumption workspaces</strong> (marts + semantic models + reports)</li>
</ul>
<p>Benefits:</p>
<ul>
<li>Clear ownership and on-call responsibility</li>
<li>Stronger security boundaries (raw data access vs curated consumption access)</li>
<li>Reduced operational risk (changes in ETL do not directly disrupt BI artifacts)</li>
</ul>
<h3>Bronze isolation reconsidered</h3>
<p>Avoid a single "Bronze (Prod)" workspace becoming a shared playground. Instead:</p>
<ul>
<li>Keep <strong>production ingestion isolated</strong>, and</li>
<li>Provide <strong>dev ingestion patterns</strong> either in a Dev Bronze workspace or via parameterized pipelines targeting dev storage locations.</li>
</ul>
<p>A practical layout (expanded from the original 7-workspace idea) is:</p>
<ul>
<li><strong>Bronze:</strong> Prod (and optionally Dev/Test by domain) or domain-isolated Bronze Lakehouses</li>
<li><strong>Silver:</strong> Dev / Test / Prod</li>
<li><strong>Gold:</strong> Dev / Test / Prod</li>
<li><strong>Optional Self-Service:</strong> separate workspace + capped capacity for exploratory BI</li>
</ul>
<h2>4. Capacity planning and the reality of contention</h2>
<p>Fabric capacity is shared compute. Multiple engines (Spark, pipelines, SQL queries, semantic model refresh) can contend on the same capacity.</p>
<h3>Why small capacities often fail in team settings</h3>
<p>For individual experimentation, small SKUs may work. For team-based development, <strong>F2 is usually insufficient</strong> once you introduce:</p>
<ul>
<li>Spark notebooks</li>
<li>concurrent pipelines</li>
<li>multiple developers running queries and refreshes</li>
</ul>
<p>As a practical baseline, consider <strong>F4 or higher for Dev</strong>, and size upward based on concurrency and Spark usage.</p>
<h3>Understanding contention behavior</h3>
<p>Fabric uses capacity management mechanisms that can feel non-intuitive: intensive bursts can push the capacity into a state where subsequent workloads are slowed or throttled. The operational takeaway is simple:</p>
<ul>
<li><strong>Isolate Dev from Prod</strong> so experimentation cannot degrade production dashboards.</li>
<li><strong>Schedule heavy workloads</strong> (batch refresh, large Spark jobs) to avoid peak BI usage.</li>
<li><strong>Monitor and iterate sizing:</strong> treat capacity as an operational SLO, not a one-time procurement decision.</li>
</ul>
<p><strong>Cost control:</strong> Dev capacities can often be paused when not in use (nights/weekends), while Prod capacity should be sized for stable, optimized workloads.</p>
<h2>5. CI/CD, infrastructure as code, and notebooks</h2>
<p>Fabric provides native <strong>Git integration</strong> and <strong>Deployment Pipelines</strong> to promote content across environments.</p>
<ul>
<li><strong>IaC mindset:</strong> treat Lakehouses, Warehouses, notebooks, pipelines, and semantic models as versioned artifacts. Review changes in pull requests.</li>
<li><strong>Promotion discipline:</strong> use Deployment Pipelines to move from Dev → Test → Prod and to swap environment-specific parameters (connections, workspace IDs, endpoints).</li>
</ul>
<h3>Notebooks: powerful, but require discipline</h3>
<p>Notebooks are often the most productive tool for complex transformations and debugging. They also introduce operational risks if teams do not enforce software engineering discipline.</p>
<p>Best practices:</p>
<ul>
<li>Keep notebooks modular (functions/utilities, clear entry points)</li>
<li>Add basic testing/validation steps (row counts, expectations, schema checks)</li>
<li>Enforce code review through Git PRs</li>
<li>Separate exploratory notebooks from production pipelines (different folders, different policies)</li>
</ul>
<p>If your team is SQL-centric and your transformations are straightforward, a SQL-first approach can reduce operational complexity. If your datasets and transformations are complex, notebooks can be the right tool, provided you govern them like code.</p>
<h2>6. Schema evolution and contract management</h2>
<p>Schema handling is where many Fabric implementations drift into brittleness.</p>
<h3>Ingestion convenience vs governance</h3>
<ul>
<li><strong>"Merge schema" / automatic schema evolution</strong> can be convenient for ingestion, especially when sources add columns frequently.</li>
<li><strong>Explicit DDL</strong> (declared schemas, controlled changes) provides stronger governance, better predictability, and clearer contracts for downstream consumers.</li>
</ul>
<p><strong>Recommendation:</strong> choose deliberately per domain.</p>
<ul>
<li>For volatile sources, allow additive column evolution in Bronze, but stabilize in Silver with explicit schemas.</li>
<li>For governed domains (finance, revenue recognition), prefer explicit schema control earlier.</li>
</ul>
<h3>Additive-only policy (with versioning)</h3>
<p>In Silver and Gold, treat tables as <strong>data products</strong> with consumers.</p>
<ul>
<li>Prefer <strong>additive-only</strong> changes (new columns, new tables) over breaking changes.</li>
<li>If a breaking change is required, <strong>version</strong> it (e.g., <code>revenue_v2</code>, <code>customer_status_v2</code>) and run parallel for a migration window.</li>
</ul>
<p>This prevents downstream dashboards, metrics, and AI agents from silently changing behavior.</p>
<h2>7. Governance, naming, and AI readiness</h2>
<p>Governance is not just compliance. It is correctness at scale.</p>
<ul>
<li><strong>Lineage and auditability:</strong> integrate with <a href="https://learn.microsoft.com/en-us/purview/purview"><strong>Microsoft Purview</strong></a> to trace KPIs from Gold back to Bronze.</li>
<li><strong>Naming conventions:</strong> use human-readable names in Gold and semantic models (e.g., <code>Customer Name</code>, <code>Invoice Amount</code>, <code>Churn Risk Score</code>). Avoid cryptic abbreviations.</li>
<li><strong>Descriptions and metadata:</strong> add column and measure descriptions consistently.</li>
</ul>
<p>Why this matters:</p>
<ul>
<li>Better semantic naming and descriptions improve <strong>Copilot</strong> interactions, <strong>data agents</strong>, and future AI-assisted querying.</li>
<li>Clear semantics reduce the risk of misinterpretation when users (or AI) explore the model without deep tribal knowledge.</li>
</ul>
<p>This is the same governed foundation that lets an <a href="https://www.revos.ai/blog/agentic-data-engineering">agentic data engineering</a> workflow operate safely: a coding agent that inherits clear naming and lineage makes fewer wrong guesses than one pointed at an ungoverned schema.</p>
<p>A governed Gold layer is also the foundation for <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning">assessing whether your data is ready for machine learning</a>, the predictive use cases that motivate this architecture in the first place.</p>
<h2>8. Start small, scale fast (without over-engineering)</h2>
<p>You do not need a multi-year program to get value, but you also should not blindly copy a reference architecture.</p>
<h3>Avoiding over-engineering</h3>
<ul>
<li>Medallion is a pattern, not a law. Adapt it to your org size and maturity.</li>
<li>Teams migrating from SQL Server should evaluate whether Spark/lakehouse complexity is justified for the current scope.</li>
<li>If your workloads are small, relational, and BI-dominant, you may get most of the benefit with a SQL-governed Warehouse-centric approach.</li>
</ul>
<h3>A 12-week execution cadence</h3>
<ul>
<li><strong>Weeks 1-2:</strong> Select 1 to 2 high-value decisions and define metrics and contracts.</li>
<li><strong>Weeks 3-6:</strong> Implement Bronze → Silver ingestion patterns with quality gates.</li>
<li><strong>Weeks 7-9:</strong> Build Gold marts and semantic models (Direct Lake where appropriate).</li>
<li><strong>Weeks 10-12:</strong> Harden with monitoring, CI/CD, and schema governance.</li>
</ul>
<h2>Closing thought</h2>
<p>Implementing Medallion Architecture in Fabric is like organizing a professional kitchen:</p>
<ul>
<li><strong>Bronze</strong> is the delivery dock where raw ingredients arrive.</li>
<li><strong>Silver</strong> is the prep station where ingredients are cleaned and standardized.</li>
<li><strong>Gold</strong> is the pass where finished dishes are plated for customers.</li>
</ul>
<p>The point is not to overcomplicate the kitchen. The point is to enforce separation of concerns so that consumption is safe, repeatable, and trusted, while engineering can evolve the system without breaking the business.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/modern-data-strategy-microsoft-fabric-blueprint?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=modern-data-strategy-microsoft-fabric-blueprint"><em>RevOS blog</em></a><em>.</em></p>
<p>Building this on Fabric yourself? RevOS can take the revenue data layer off your plate: governed metrics, ready for your agents. <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=modern-data-strategy-microsoft-fabric-blueprint">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Enterprise AI Agents in 2026: Platforms, Deployment Services, and Why Most Projects Fail]]></title><description><![CDATA[The complete guide to enterprise AI agents: platform tiers, rollout services, pricing, and the data foundation your deployment needs.]]></description><link>https://revosai.hashnode.dev/enterprise-ai-agents-in-2026-platforms-deployment-services-and-why-most-projects-fail</link><guid isPermaLink="true">https://revosai.hashnode.dev/enterprise-ai-agents-in-2026-platforms-deployment-services-and-why-most-projects-fail</guid><category><![CDATA[AI]]></category><category><![CDATA[agents]]></category><category><![CDATA[Enterprise AI]]></category><category><![CDATA[mcp]]></category><category><![CDATA[semanticlayer]]></category><category><![CDATA[data-engineering]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Wed, 04 Nov 2026 11:49:15 GMT</pubDate><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li>Gartner predicts 40% of enterprise apps will feature AI agents by 2026, up from under 5% in 2025, while over 40% of agentic AI projects will be canceled by the end of 2027.</li>
<li>The platform landscape splits into three tiers: cloud-native suites (Salesforce Agentforce, Microsoft Copilot, ServiceNow), vertical specialists (Sierra AI), and open-source frameworks (LangGraph, CrewAI).</li>
<li>GSI deployments cost $500K to $5M+; boutique AI firms start around $150K/yr and move faster.</li>
<li>The leading failure mode is agents guessing at metric definitions, returning confident answers that don't match your official reports.</li>
<li>A semantic layer connected via an MCP server is the fix: agents query governed definitions rather than computing metrics on the fly from raw tables.</li>
</ul>
<p><a href="https://www.gartner.com/en/newsroom/press-releases/2025-08-26-gartner-predicts-40-percent-of-enterprise-apps-will-feature-task-specific-ai-agents-by-2026-up-from-less-than-5-percent-in-2025">Gartner predicts</a> 40% of enterprise applications will feature task-specific AI agents by 2026, up from under 5% in 2025. In the same window, <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027">over 40% of agentic AI projects</a> will be canceled before they deliver value. Rapid adoption and widespread failure are happening simultaneously.</p>
<p>The failure rate is the more important number. Enterprise AI agents are not failing because the models are bad. They are failing because the data infrastructure underneath them was never designed to support autonomous reasoning at scale.</p>
<p>This guide covers the enterprise AI agent landscape: the platforms, the rollout services, realistic pricing, and the data prerequisites most deployment guides skip entirely.</p>
<h2>What are enterprise AI agents?</h2>
<p>An enterprise AI agent is an autonomous software program that perceives data from business systems, reasons toward a goal, and takes multi-step actions without a human approving each step.</p>
<p>That last part is what separates agents from chatbots. A chatbot responds to a prompt. An agent pursues a goal: it breaks the goal into steps, calls the right tools in the right order, handles errors, and reports back when the work is done.</p>
<p>As an example: an agent monitoring <a href="https://www.revos.ai/blog/customer-health-score">customer health scores</a> might detect that a customer's product usage has dropped below a threshold, check the AE assigned to the account, find an open slot in their calendar, and schedule a follow-up call, all without human intervention. At scale, that loop turns lagging indicators into proactive interventions before churn happens.</p>
<p>Enterprise AI agents generally fall into four types:</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>What it does</th>
<th>Common examples</th>
</tr>
</thead>
<tbody><tr>
<td>Task agents</td>
<td>Complete a single, bounded task end-to-end</td>
<td>Auto-generate a quote, file an expense, triage a ticket</td>
</tr>
<tr>
<td>Orchestrator agents</td>
<td>Coordinate multiple sub-agents toward a larger goal</td>
<td>Sales pipeline review, onboarding workflow</td>
</tr>
<tr>
<td>Data agents</td>
<td>Query, synthesize, and report on structured data</td>
<td>Revenue attribution, cohort analysis, forecast</td>
</tr>
<tr>
<td>Process agents</td>
<td>Monitor systems and trigger actions on events</td>
<td>Churn detection, SLA breach escalation</td>
</tr>
</tbody></table>
<p>Most enterprise deployments start with task agents (lowest risk, fastest ROI) and layer in orchestrators as confidence builds.</p>
<h2>What is agentic AI?</h2>
<p>Agentic AI is AI that acts over multiple steps toward a goal, rather than just generating a response to a single prompt.</p>
<p>The three defining properties:</p>
<ol>
<li><strong>Planning:</strong> the agent breaks a goal into a sequence of steps and decides the order.</li>
<li><strong>Tool use:</strong> the agent calls external services: APIs, databases, search engines, internal systems.</li>
<li><strong>Memory:</strong> the agent tracks what happened in prior steps and adjusts its next action accordingly.</li>
</ol>
<p>The shift from generative AI (produce text) to agentic AI (take action) is why enterprises are investing heavily, and why the failure rate is high. Generating a draft proposal is low stakes; you can review it before it goes anywhere. Booking 200 follow-up calls based on a miscalculated health score is not.</p>
<h2>The enterprise AI agent platform landscape</h2>
<p>The platform market is consolidating around three tiers.</p>
<h3>Tier 1: Cloud-native suites</h3>
<p>These platforms live inside tools enterprises already use and fit existing procurement contracts.</p>
<p><strong>Salesforce Agentforce</strong> is the clearest signal of where Tier 1 is heading. <a href="https://www.stocktitan.net/news/CRM/introducing-agentforce-2-0-the-digital-labor-platform-for-building-a-o7pqlb9af9zz.html">Agentforce 2.0 achieved 83% autonomous resolution</a> of customer service queries. Salesforce reported <a href="https://www.salesforce.com/news/press-releases/2026/02/25/fy26-q4-earnings/">$800M ARR from Agentforce in its FY2026 Q4 results</a>, with <a href="https://www.cxtoday.com/customer-analytics-intelligence/salesforce-hits-8000-agentforce-deals-opens-up-on-its-informatica-acquisition/">8,000 Agentforce deals</a> closed. Pricing is Flex Credits at $0.10/action, dramatically cheaper than early per-conversation models.</p>
<p><strong>Microsoft Copilot Studio</strong> and <strong>Azure AI Foundry</strong> give enterprises an agent builder inside the Microsoft 365 stack. If your data is already in Azure, the integration lift is low. If it isn't, you are building custom connectors.</p>
<p><strong>ServiceNow</strong> embeds agents into ITSM and HR workflows. Strong for internal operations; weaker for customer-facing or revenue use cases.</p>
<h3>Tier 2: Vertical specialists</h3>
<p><strong>Sierra AI</strong> builds agents purpose-built for enterprise customer experience. The <a href="https://techcrunch.com/2026/05/04/sierra-raises-950m-as-the-race-to-own-enterprise-ai-gets-serious/">company's $950M raise at a $15B+ valuation in May 2026</a> signals that vertical depth (knowing the domain, edge cases, and compliance requirements) beats horizontal platforms for high-stakes interactions. Sierra's pricing starts around $150K/year.</p>
<h3>Tier 3: Open-source frameworks</h3>
<p><strong>LangGraph</strong>, <strong>CrewAI</strong>, <strong>AutoGen</strong>, and <strong>Semantic Kernel</strong> give engineering teams full control over agent architecture: orchestration logic, tool integrations, memory systems. No license cost. High engineering cost. Best for teams that need something Tier 1/2 platforms don't offer, or that want to avoid vendor lock-in.</p>
<p>Two self-hosted frameworks worth naming inside this tier: <strong>OpenClaw</strong>, a community-driven, edge-deployed agent gateway built for omni-channel use cases (Telegram, WhatsApp, Discord); and <strong>Hermes Agent</strong>, a terminal-native orchestrator built for engineering pipelines, with persistent memory, real Bash execution, and hierarchical sub-agent delegation. Both are fully self-hosted with no license fee, and both can connect to a governed data source over MCP rather than each requiring its own custom integration. If you plan to run Hermes in production, we wrote up <a href="https://www.revos.ai/blog/hermes-agent-kubernetes">what breaks when you run Hermes Agent on Kubernetes</a> and a setup that survives it.</p>
<p>The practical tradeoff: Tier 1 is faster to pilot and easier to govern; Tier 3 is more flexible and cheaper at scale if you have the engineering team. Most enterprises start at Tier 1 and build Tier 3 agents for custom use cases. Anthropic's own first-party surfaces (Claude Code, Claude Cowork, Claude Tag, and its several scheduled-automation "Routines") sit alongside this landscape rather than inside any one tier; see our <a href="https://www.revos.ai/blog/claude-code-cowork-tag-routines">guide to navigating the Claude ecosystem</a> if that's the specific stack you're evaluating.</p>
<h2>Enterprise AI agent rollout service providers</h2>
<p>Buying a platform is not the same as deploying it. Most enterprises engaging seriously with AI agents are also engaging a services partner for the integration work, change management, and ongoing model tuning.</p>
<h3>Global SIs: Accenture, IBM, Deloitte, Capgemini</h3>
<p>The large system integrators bring a reliable playbook: stakeholder alignment, risk assessment, integration with legacy ERP and CRM, a globally distributed delivery team, and governance frameworks for regulated industries.</p>
<p>The cost matches the scale. A full GSI-led deployment runs $500K to $5M+ depending on scope, with timelines of 6 to 18 months. That pricing reflects the overhead of the engagement model: senior partner time, change management documentation, compliance reviews, and global delivery coordination.</p>
<p>If your deployment involves deep SAP or Oracle integration, enterprise-wide change management across regions, or a regulated industry where you need a Big Four name in the liability chain, a GSI is the right fit.</p>
<h3>When should you use a global SI versus a boutique AI firm?</h3>
<p>Boutique AI firms specialize in a vertical (GTM, finance, supply chain, HR) and deliver faster pilots at lower cost. A typical boutique engagement starts around $150K/year for a managed build-and-operate model.</p>
<p>The tradeoff: boutiques move faster (6 to 8 weeks to a working pilot is common) and their domain expertise is often deeper within their vertical. The risk is capacity: a boutique that runs your pilot may not scale globally.</p>
<p>For most B2B SaaS revenue operations use cases, a boutique specialist will deliver a better outcome faster than a GSI. GSIs earn their premium in global, multi-system, regulated deployments where brand liability and delivery footprint matter.</p>
<table>
<thead>
<tr>
<th>Factor</th>
<th>Global SI</th>
<th>Boutique AI firm</th>
</tr>
</thead>
<tbody><tr>
<td>Cost</td>
<td>$500K to $5M+</td>
<td>~$150K/yr+</td>
</tr>
<tr>
<td>Speed to pilot</td>
<td>6 to 18 months</td>
<td>6 to 8 weeks</td>
</tr>
<tr>
<td>Depth</td>
<td>Multi-system, global</td>
<td>Vertical domain focus</td>
</tr>
<tr>
<td>Best for</td>
<td>SAP/Oracle integration, regulated industries</td>
<td>B2B SaaS, RevOps, customer experience</td>
</tr>
</tbody></table>
<h2>Why enterprise AI agent projects fail</h2>
<p><a href="https://www.gartner.com/en/newsroom/press-releases/2025-09-30-gartner-survey-finds-just-15-percent-of-it-application-leaders-are-considering-piloting-or-deploying-fully-autonomous-ai-agents">Just 15% of IT application leaders are considering, piloting, or deploying fully autonomous AI agents</a>, according to a September 2025 Gartner survey. Of those that do proceed, <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027">Gartner predicts over 40% will be canceled by end of 2027</a>.</p>
<p>The leading cause is not model quality. It is data.</p>
<h3>The hallucinated-metric failure mode</h3>
<p>An enterprise AI agent is given access to raw tables: CRM records, warehouse data, support tickets. A stakeholder asks: "Which accounts are at risk this quarter?"</p>
<p>Without a governed definition of "at risk," the agent computes one on the fly. It might derive churn probability from usage data using a formula it infers from the table schema. That formula will not match the formula your data team uses. The number will be fluent, confident, and wrong. The underlying mistake is letting a probabilistic model do deterministic work; <a href="https://www.revos.ai/blog/probabilistic-vs-deterministic-ai">this post explains where to draw the line</a>.</p>
<p>When this happens at scale (and it does), the result is the worst possible outcome: stakeholders who received a confident wrong answer from an expensive agent deployment. That is the project that gets canceled.</p>
<p>The fix is not a better model. It is a better <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai">modern data strategy for the AI age</a>: specifically, one that includes semantically governed data, with metric definitions and business logic that live in a shared layer agents can query, rather than locked inside individual dashboards or analyst notebooks.</p>
<h2>What data infrastructure do enterprise AI agents need?</h2>
<p>Three components are non-negotiable.</p>
<h3>1. A governed data warehouse</h3>
<p>Your agents need a structured, queryable source of truth. Schema documentation, access controls, and a version-controlled transformation layer (dbt or equivalent) are the baseline. Without this, you have nowhere stable for agents to query.</p>
<h3>2. A semantic layer</h3>
<p>A <a href="https://www.revos.ai/blog/what-is-a-semantic-layer">semantic layer</a> is a governed translation layer between raw data and business meaning. It defines your metrics (ARR, churn rate, customer health score) once, in one place, so every system (reports, dashboards, agents) uses the same formula. It's the right structure for governed metrics specifically; see our <a href="https://www.revos.ai/blog/structuring-data-for-ai-agents">comparison of semantic models, knowledge graphs, RAG, and other ways to structure data for AI agents</a> for the cases where a different approach fits better.</p>
<p>Without a semantic layer, agents make up metric definitions. With one, they query a verified library and return numbers that match your board deck. This is the single highest-leverage infrastructure investment for any enterprise AI agent deployment. It's also the governed "numbers half" of what many teams now call a <a href="https://www.revos.ai/blog/company-brain">company brain</a>: a shared context layer every agent draws on.</p>
<h3>3. An MCP server</h3>
<p>The Model Context Protocol (MCP) is an open standard that lets AI agents connect to data sources through a single interface. Instead of building a custom connector for every agent-data pair, you run one MCP server, and every compliant agent can query it.</p>
<p>The architecture:</p>
<ul>
<li>Agent (any compliant client: GPT-4o, Claude, Gemini)</li>
<li>MCP server</li>
<li>Semantic layer (Cube, RevOS, or equivalent)</li>
<li>Data warehouse (BigQuery, Snowflake, Redshift)</li>
</ul>
<p>In this stack, agents always query governed definitions rather than raw tables. The hallucinated-metric problem is structurally eliminated.</p>
<h2>How to evaluate your enterprise AI agent stack</h2>
<h3>Step 1: Audit your data readiness</h3>
<p>Before evaluating platforms, assess whether your data can support an agent. Can you produce a reliable <a href="https://www.revos.ai/blog/customer-health-score">customer health score</a> programmatically, not from a dashboard but from a query? If not, agents will fail at that task regardless of which platform you buy.</p>
<p>If the answer is no, the path forward is getting <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning">AI-ready data</a> in place first: clean schemas, governed metric definitions, and a semantic layer to expose them.</p>
<h3>Step 2: Map your use cases by risk tier</h3>
<p>Low-risk tasks (draft an email, summarize a call transcript) can run on any LLM with minimal infrastructure. High-risk tasks (update the CRM, trigger a customer communication, close a renewal) require strict semantic grounding and audit logging.</p>
<p>Start with low-risk tasks. Build confidence in your data infrastructure before putting agents on high-stakes workflows.</p>
<h3>Step 3: Evaluate platform fit, not features</h3>
<p>The feature set of Tier 1 platforms is roughly equivalent. The differentiator is fit: which platform connects cleanly to your existing stack, and which integrates with the semantic layer you need to govern agent outputs?</p>
<h3>Step 4: Choose a services model that matches your internal capacity</h3>
<p>If you have a data team that can own the semantic layer, a boutique AI firm running the agent deployment typically delivers better ROI than a full GSI engagement. If you don't have that internal capacity, choose a services partner who will build and operate the semantic layer for you.</p>
<p>RevOS agents are built on this model: the <a href="https://www.revos.ai/product/semantic-model">semantic layer</a> and MCP server are included in the platform, so agents return governed answers from day one. The RevOS semantic model handles the definition layer, so your agents don't have to guess.</p>
<h3>Step 5: Define success metrics before you deploy</h3>
<p>The most dangerous agent project is one with no failure criteria. Before deployment, define: what does a wrong answer look like, and how will you detect it? What is the acceptable error rate for autonomous actions?</p>
<p>Without a clear success definition, a project that produces 30% wrong answers gets declared a success because it automated 70% of the manual work. That 30% erodes trust over time.</p>
<h2>The bottom line</h2>
<p>Enterprise AI agents are real, they work, and the market is moving fast. The platforms are maturing, the services ecosystem is established, and pricing is more accessible than it was 18 months ago.</p>
<p>The variable that determines whether your deployment succeeds is not which LLM you pick or which platform you license. It is whether your data infrastructure can support autonomous reasoning: specifically, whether your agents can access governed metric definitions through a standard interface rather than guessing at business logic from raw tables.</p>
<p>The semantic layer plus MCP server is the architecture that makes agents trustworthy. Without it, you are building on sand.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/enterprise-ai-agents?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=enterprise-ai-agents"><em>RevOS blog</em></a><em>.</em></p>
<p>Most agent projects fail on the data, not the platform. RevOS gives your agents one governed commercial context across CRM, billing, product usage and support, with every action permissioned and audit logged. <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=enterprise-ai-agents">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[How to Build a Modern Data Strategy in the Age of AI]]></title><description><![CDATA[Most AI initiatives fail because of data chaos, not tools. The Medallion Architecture (Bronze, Silver, Gold) creates trust and unlocks revenue.]]></description><link>https://revosai.hashnode.dev/how-to-build-a-modern-data-strategy-in-the-age-of-ai</link><guid isPermaLink="true">https://revosai.hashnode.dev/how-to-build-a-modern-data-strategy-in-the-age-of-ai</guid><category><![CDATA[dataengineering]]></category><category><![CDATA[AI]]></category><category><![CDATA[architecture]]></category><category><![CDATA[analytics]]></category><category><![CDATA[data-strategy]]></category><category><![CDATA[MedallionArchitecture]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Fri, 30 Oct 2026 12:08:11 GMT</pubDate><content:encoded><![CDATA[<p>Every company today wants to be an AI company, racing to adopt the latest <a href="https://www.revos.ai/blog/ai-trends">AI trends</a>. Leaders are pushing for predictive churn models, generative agents for customer success, and automated forecasting. But there is a silent killer stalling these initiatives before they even launch: <strong>the data mess.</strong></p>
<p>Most data platforms don't fail because of the tooling. They stall because raw, messy inputs are rushed straight into analytics, teams patch problems locally in spreadsheets, and every dashboard bakes in a different "truth".</p>
<p>At RevOS, we believe that without a deliberate data strategy, your revenue operations are paying a hidden tax on speed, trust, and outcomes.</p>
<p>In this series, we break down how to build a data foundation that actually works. Implementation comes later, starting with <a href="https://www.microsoft.com/en-us/microsoft-fabric">Microsoft Fabric</a>, but first, we must establish the strategy.</p>
<p>Here is why you need to stop chasing tools and start designing your data architecture.</p>
<blockquote>
<p>🎥 Want the deeper walkthrough? Watch the on-demand webinar <a href="https://www.linkedin.com/events/turndatasilosintotrustedai-read7404448970929831937/theater/">Turn Data Silos into Trusted AI-Ready Data Products</a> for a step-by-step look at fixing this before it derails your AI roadmap.</p>
</blockquote>
<h2>The high cost of the "copy-storm"</h2>
<p>The current state of data in many scaling SaaS companies is defined by silos. Marketing has their extracts, Sales has Salesforce reports, and Finance has their spreadsheets.</p>
<p>When these teams try to collaborate, they run into the "copy-storm" anti-pattern. Datasets are replicated across multiple workspaces "for convenience," severing lineage and inflating costs. The result?</p>
<ul>
<li><strong>Trust deficit:</strong> If revenue shows three different numbers across three different departments, the only thing everyone agrees on is to question the dashboard.</li>
<li><strong>Operational drag:</strong> Every new initiative begins by re-creating the same data pipelines, stretching time-to-value from weeks to quarters.</li>
<li><strong>AI hallucinations:</strong> AI models trained on inconsistent inputs behave unpredictably. If your data foundation isn't grounded, your AI agents will hallucinate, not help. That grounding is exactly what separates a demo from a system you can trust. See our deep dive on <a href="https://www.revos.ai/blog/agentic-data-engineering">agentic data engineering</a> for how that trust actually gets built.</li>
</ul>
<p>Research suggests that:</p>
<blockquote>
<p>📢 <strong>80% of business leaders don't trust their data</strong> because it is scattered and poorly managed.</p>
</blockquote>
<p>You cannot build a revenue engine on shaky ground.</p>
<h2>The strategic fix: the Medallion Architecture</h2>
<p>To fix this, we advocate for a data strategy based on the <strong>Medallion Architecture</strong>. While often described as a technical pattern, it is actually an operating model for managing complexity at scale.</p>
<p>It forces a separation of concerns that turns a sprawling set of pipelines into a system with clear roles:</p>
<ul>
<li><strong>Bronze (the raw truth):</strong> This is where data arrives as-is. It is immutable and preserves history. If you need to audit what happened, you go here.</li>
<li><strong>Silver (the trusted layer):</strong> This is where "data from Salesforce" becomes "data fit for business use". Here, we de-duplicate, standardize types, and enforce business rules. Crucially, changes here should be <strong>additive only</strong>: we never break the contract promised to downstream users by deleting columns they rely on.</li>
<li><strong>Gold (the business layer):</strong> This is the curated zone. Data here is aligned to specific outcomes, like gross margin or churn risk, so analytics and AI lean on shared, governed definitions.</li>
</ul>
<p>By adopting this structure, you ensure that <strong>Silver</strong> guarantees trust, while <strong>Gold</strong> guarantees alignment with business outcomes.</p>
<img src="https://www.revos.ai/blog-content/modern-data-strategy-age-of-ai/images/image-1.webp" alt="The Medallion Architecture: Bronze, Silver and Gold layers" style="display:block;margin:0 auto" />

<h2>The business case: why do this now?</h2>
<p>Implementing a structured data strategy isn't just about "cleaner tables." It is about <strong>revenue productivity</strong>.</p>
<p><strong>1. The single source of truth is no longer optional.</strong> A unified semantic layer ensures that core business concepts are defined once and reused everywhere. This eliminates the variance caused by one-off transformations inside individual reports.</p>
<p><strong>2. AI readiness.</strong> Your data needs to be <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning">ready for machine learning</a>. A well-governed Gold layer shortens the last mile for ML and LLM features without turning your platform inside out. It allows you to move from noisy data to confident, real-time decisions.</p>
<p><strong>3. Cost and risk control.</strong> Uncurated, compute-heavy transformations that multiply across tools are a financial drain. A structured approach allows you to control costs by running heavy transforms once per layer, rather than re-wrangling data for every specific query. Governance also becomes embedded in the architecture, allowing for automated lineage tracking and "just-enough-access" security policies.</p>
<h2>The business case: the actual numbers</h2>
<p>When data is siloed, you aren't just losing visibility; you are losing money. Based on recent strategy assessments of mid-market SaaS organizations, we have quantified the financial impact of shifting from chaotic silos to a governed Medallion Architecture.</p>
<img src="https://www.revos.ai/blog-content/modern-data-strategy-age-of-ai/images/image-2.png" alt="The business impact of moving from data silos to a governed Medallion Architecture" style="display:block;margin:0 auto" />

<p>Here is what that impact looks like on the P&amp;L:</p>
<p><strong>1. Unlocking "hidden" revenue (top-line growth).</strong> Most SaaS companies sit on a goldmine of cross-sell opportunities they simply cannot see because product usage data is disconnected from CRM data. By unifying these sources into a Gold layer, the revenue implications are immediate:</p>
<ul>
<li><strong>The wallet share gap:</strong> In a portfolio analysis of 1.5M active users, unifying usage data with billing records allowed the company to detect subtle wallet-share declines before the contract renewal. Predictive intervention here was projected to reduce churn by <strong>1%</strong>, protecting an estimated <strong>mid-five-digit monthly recurring revenue (MRR)</strong>.</li>
<li><strong>Targeted expansion:</strong> Instead of "spray and pray" marketing, a unified data estate allowed for an outbound campaign targeting 1,000 specific customers based on actual feature usage gaps. With a conservative 10% opportunity rate and a moderate uplift, this single data-driven play generated <strong>high-four-digit net new MRR</strong> immediately.</li>
<li><strong>The RevOS impact:</strong> Organizations that align their commercial architecture in this way typically see <strong>19% faster growth</strong> and an <strong>18% increase in Net Revenue Retention (NRR)</strong>.</li>
</ul>
<p><strong>2. Eliminating the manual tax on talent (bottom-line efficiency).</strong> Data silos force high-value employees to do low-value work. Without a Silver layer to standardize data, your most expensive people waste time wrangling spreadsheets.</p>
<ul>
<li><strong>Sales productivity:</strong> When sales reps have to manually cross-reference billing systems to check for upsell eligibility, they lose selling time. Our research indicates that automating these insights saves <strong>10% of each sales rep's time</strong>, effectively unlocking <strong>2 full-time employees (FTEs)</strong> of productivity in a 20-person team.</li>
<li><strong>Engineering waste:</strong> We frequently see engineering teams bogged down by ad-hoc data requests from the business (e.g., "Can you run a query to see who used feature X?"). In one case study, automating self-service reporting eliminated 500 manual requests per year. At 2 hours per request, that is <strong>1,000 hours (0.5 FTE)</strong> of engineering time returned to product development.</li>
</ul>
<p><strong>3. Innovation and new business models.</strong> A structured data platform doesn't just optimize existing processes; it creates new products.</p>
<ul>
<li><strong>Monetization:</strong> Once your data is structured and governed in a Gold layer, it becomes a product in itself. Companies are successfully launching <strong>usage-based API monetization</strong> strategies, selling data insights back to their customers as a premium tier, a business model impossible to execute with fragmented data. That same governed Gold layer is the foundation of what's now being called <a href="https://www.revos.ai/blog/token-capital">token capital</a>: a proprietary AI asset a company owns, not just spends on.</li>
<li><strong>AI readiness:</strong> You cannot build a "revenue brain" on shaky ground. A reliable Gold layer allows you to deploy AI agents that can answer complex financial questions without guessing, driving pipeline velocity up by <strong>25%</strong>. That Gold layer is also the prerequisite for <a href="https://www.revos.ai/blog/enterprise-ai-agents">enterprise AI agent deployments</a>; without it, even the most capable agent returns unreliable answers. The connection itself usually runs over an <a href="https://www.revos.ai/blog/what-is-an-mcp-server">MCP server</a> (in practice, <a href="https://www.revos.ai/blog/what-is-an-mcp-server-for-data">an MCP server for data</a> fronted by your semantic model), so the agent queries governed metrics by name instead of guessing at raw tables.</li>
</ul>
<p><strong>4. The cost of risk.</strong> The most expensive data problem is the one that lands you in legal trouble.</p>
<ul>
<li><strong>Compliance and trust:</strong> Manual data exports are a security nightmare. We have observed cases where manual CSV handling led to data from the <strong>wrong customer</strong> being sent to an external party. A governed architecture with automated row-level security (RLS) and sensitivity labels prevents this by design, supporting compliance with strict regulations like the <strong>EU Data Act</strong>.</li>
</ul>
<p><strong>The verdict:</strong> You don't need magic to grow. You need your revenue team to see who is using the product, your engineers to stop writing ad-hoc SQL, and your AI to stop guessing. That requires a strategy.</p>
<h2>What's next?</h2>
<p>A strategy is only as good as its execution. Part 2 of this series turns it into a technical blueprint: <a href="https://www.revos.ai/blog/modern-data-strategy-microsoft-fabric-blueprint">Implementing the Modern Data Strategy: Microsoft Fabric Blueprint</a> covers how to use OneLake and Direct Lake mode for a unified setup where you don't need to move data.</p>
<p>Building a Medallion Architecture is a journey, but you don't have to walk it alone.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=modern-data-strategy-age-of-ai"><em>RevOS blog</em></a><em>.</em></p>
<p>RevOS gives revenue teams the governed data foundation this series describes, without building it from scratch. Want to see it on your own data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=modern-data-strategy-age-of-ai">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[What Is a Company Brain? 6 Approaches Compared]]></title><description><![CDATA[A company brain gives AI agents shared context about your business. Compare 6 ways to build one, from enterprise search and RAG to knowledge graphs.]]></description><link>https://revosai.hashnode.dev/what-is-a-company-brain-6-approaches-compared</link><guid isPermaLink="true">https://revosai.hashnode.dev/what-is-a-company-brain-6-approaches-compared</guid><category><![CDATA[AI]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[mcp]]></category><category><![CDATA[dataengineering]]></category><category><![CDATA[knowledge graph]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Wed, 28 Oct 2026 12:42:09 GMT</pubDate><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li>A company brain is a shared context layer that holds what your company knows, so any AI agent or teammate can use it. That includes documents, decisions, definitions, and live business data.</li>
<li>Every company brain has two halves: a knowledge half (docs, conversations, decisions) and a numbers half (metrics, entities, and records from your business systems). Most tools cover only one.</li>
<li>There are six common approaches: enterprise search, AI wikis, DIY RAG on a vector database, knowledge graphs with an ontology, AI memory layers, and a data platform with a semantic layer and MCP.</li>
<li>Search, wikis, RAG, and memory layers are built for the knowledge half. Knowledge graphs, ontologies, and semantic layers add the structure the numbers half needs to answer metric questions consistently.</li>
<li>MCP (Model Context Protocol) is becoming the common way to plug any of these approaches into Claude, ChatGPT, Copilot, or your own agents.</li>
<li>The hard part is upkeep, not setup: stale content, drifting permissions, and conflicting definitions are what make a company brain fail.</li>
</ul>
<p>A <strong>company brain</strong> is a shared context layer that holds what your company knows, so any AI agent or teammate can use it. That covers documents, conversations, decisions, definitions, and live business data. The underlying problem is an old one. In a 2023 Gartner survey, <a href="https://www.gartner.com/en/newsroom/press-releases/2023-05-10-gartner-survey-reveals-47-percent-of-digital-workers-struggle-to-find-the-information-needed-to-effectively-perform-their-jobs">47% of digital workers said they struggle to find the information or data they need to do their jobs</a>. AI agents have the same problem, and unlike a new hire they rarely know when to ask. As we argued in our guide to <a href="https://www.revos.ai/blog/enterprise-ai-agents">enterprise AI agents</a>, an agent without shared company context will guess, and guesses do not scale.</p>
<p>The term itself is new. In US search-volume data we pulled from Google Ads for this article, searches for "company brain" went from about 10 a month in January 2026 to about 590 a month by summer. Vendors now define it to fit what they sell: <a href="https://slite.com/learn/company-brain">Slite calls it a context layer</a>, <a href="https://www.sentra.app/articles/what-is-a-company-brain">Sentra calls it governed memory</a>, and <a href="https://colrows.com/blogs/company-brain-for-enterprise-ai/">Colrows says the data layer decides everything</a>. Each of them describes a real part of the problem, though none describes all of it.</p>
<p>So which kind of company brain do you actually need? This guide compares the six main ways to build one, with the same strengths-and-limits treatment for each. It also defines the related terms you will run into: context layer, knowledge graph, ontology, semantic layer, and MCP.</p>
<h2>What is a company brain?</h2>
<p>A company brain is a shared context layer that holds what your company knows, so any AI agent or teammate can use it. It answers two kinds of questions:</p>
<ul>
<li>"What do we know?" For example: what our refund policy is, why we chose this vendor, how we onboard enterprise customers.</li>
<li>"What is true right now?" For example: last quarter's net revenue retention (revenue kept from existing customers, including upgrades and churn), which accounts are at risk, how many active users a customer has.</li>
</ul>
<p>A company brain is <strong>not</strong> the same as:</p>
<ul>
<li><strong>A wiki.</strong> A wiki stores pages people write. A company brain makes those pages, and much more, usable by an AI agent.</li>
<li><strong>An AI knowledge base.</strong> A help-center or FAQ store that an AI answers from. It is one source for the knowledge half, not the whole brain.</li>
<li><strong>A search index.</strong> Search finds relevant documents. A company brain also has to know what your terms mean and which number is the right one.</li>
<li><strong>A data catalog.</strong> A catalog lists your tables and who owns them. A company brain has to answer the question, not point to where the answer might live.</li>
<li><strong>A personal "second brain".</strong> A second brain is one person's notes app (Obsidian, Notion). A company brain is shared, governed, and permission-aware. "Governed" here means each definition has an owner, there is one agreed version, and access follows your rules.</li>
</ul>
<p>Two things changed recently. Companies have learned that AI fails without good context. In 2025, Gartner predicted that <a href="https://www.gartner.com/en/newsroom/press-releases/2025-02-26-lack-of-ai-ready-data-puts-ai-projects-at-risk">organizations will abandon 60% of AI projects unsupported by AI-ready data</a> through 2026. A shared interface also exists now. The Model Context Protocol (MCP) lets one context layer serve Claude, ChatGPT, Copilot, and custom agents at the same time. (If MCP is new to you, start with <a href="https://www.revos.ai/blog/what-is-an-mcp-server">what an MCP server is</a>.)</p>
<h2>Company brain vs context layer, knowledge graph, and ontology</h2>
<p>These terms overlap, and vendors use them loosely. The table shows how they relate.</p>
<table>
<thead>
<tr>
<th>Term</th>
<th>What it is</th>
<th>Role in a company brain</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Context layer</strong></td>
<td>Everything an AI model needs to know about your business to answer correctly</td>
<td>Another name for the company brain itself, usually used by technical teams</td>
</tr>
<tr>
<td><strong>Knowledge graph</strong></td>
<td>Your business stored as connected entities: customers, contracts, products, people, and the links between them</td>
<td>A structured way to store the brain's facts and relationships</td>
</tr>
<tr>
<td><strong>Ontology</strong></td>
<td>The schema behind a knowledge graph: which types of things exist and how they may relate</td>
<td>The rulebook that keeps the graph consistent</td>
</tr>
<tr>
<td><strong>Semantic layer</strong></td>
<td>Business metrics and entities (revenue, churn, active customer) defined once on top of your data warehouse, the central database that stores your business records</td>
<td>The governed "numbers half" of the brain</td>
</tr>
<tr>
<td><strong>RAG</strong> (retrieval-augmented generation)</td>
<td>Fetching text passages that match a question and handing them to the model</td>
<td>The most common way to serve the "knowledge half"</td>
</tr>
<tr>
<td><strong>MCP</strong> (Model Context Protocol)</td>
<td>An open standard for connecting AI assistants to tools and data</td>
<td>The plug that lets agents read the brain</td>
</tr>
</tbody></table>
<p>Put simply, the context layer is the goal and MCP is how agents reach it. Knowledge graphs, ontologies, semantic layers, and RAG are different ways to build it.</p>
<p>An ontology and a semantic layer solve a similar problem from different directions. An ontology defines what things <em>are</em> ("a customer is an organization with at least one active contract"). A <a href="https://www.revos.ai/blog/what-is-a-semantic-layer">semantic layer</a> defines how things are <em>measured</em> ("net revenue retention is this calculation over these tables"). Both stop an AI model from inventing its own definitions.</p>
<h2>The two halves of a company brain</h2>
<p>Most company-brain guides focus on documents, Slack threads, and meeting notes, which covers only half the job.</p>
<p>Picture two questions a sales leader might ask an AI agent on the same morning:</p>
<ol>
<li>"What did we promise Acme in the renewal call?"</li>
<li>"What was net revenue retention for mid-market last quarter?"</li>
</ol>
<p>The first is a <strong>knowledge</strong> question. The answer lives in text: a call transcript, an email, a CRM note. Finding the right passage and summarizing it works well.</p>
<p>The second is a <strong>numbers</strong> question. The answer is a calculation over records in your CRM, billing system, and product data. There is no paragraph to retrieve. Say the agent writes its own database query against raw tables. It has to guess which table holds revenue, how to treat downgrades, and what "mid-market" means. It may get a different answer every time.</p>
<p>So a working company brain has two halves:</p>
<ul>
<li><strong>The knowledge half:</strong> docs, conversations, decisions, policies. Best served by search, wikis, RAG, and memory.</li>
<li><strong>The numbers half:</strong> metrics, entities, records. Best served by structured models: knowledge graphs, ontologies, and semantic layers over governed data.</li>
</ul>
<p>Most of the trade-offs between the six approaches below come down to which half each one serves.</p>
<img src="https://www.revos.ai/blog-content/company-brain/images/two-halves.webp" alt="The two halves of a company brain: documents, chat threads, and meeting notes on one side, charts, data tables, and records on the other, both feeding one central node that AI agents read from." style="display:block;margin:0 auto" />

<h2>Six approaches to building a company brain</h2>
<table>
<thead>
<tr>
<th>Approach</th>
<th>Example tools</th>
<th>Covers</th>
<th>Freshness</th>
<th>Governance</th>
<th>Build effort</th>
<th>MCP access</th>
</tr>
</thead>
<tbody><tr>
<td>1. Enterprise search</td>
<td>Glean, Microsoft 365 Copilot search</td>
<td>Knowledge half</td>
<td>Live connectors</td>
<td>Inherits app permissions</td>
<td>Low (buy)</td>
<td>Available in leading products</td>
</tr>
<tr>
<td>2. AI wiki / knowledge management</td>
<td>Notion AI, Confluence with Rovo, Slite</td>
<td>Knowledge half</td>
<td>As fresh as people keep pages</td>
<td>Page-level</td>
<td>Low (buy)</td>
<td>Available in leading products</td>
</tr>
<tr>
<td>3. DIY RAG on a vector database</td>
<td>Vector DB + embeddings + your own pipeline</td>
<td>Knowledge half</td>
<td>Depends on your sync jobs</td>
<td>You build it</td>
<td>High</td>
<td>You build it</td>
</tr>
<tr>
<td>4. Knowledge graph + ontology</td>
<td>Graph databases, Palantir Foundry Ontology</td>
<td>Both halves, if modeled</td>
<td>Depends on your pipelines</td>
<td>Strong, by design</td>
<td>High</td>
<td>Varies</td>
</tr>
<tr>
<td>5. AI memory layer</td>
<td>Sentra, Supermemory, cognee</td>
<td>Knowledge half, learned over time</td>
<td>Updates as agents work</td>
<td>Varies by product</td>
<td>Medium</td>
<td>Common</td>
</tr>
<tr>
<td>6. Data platform + semantic layer + MCP</td>
<td>dbt Semantic Layer, Cube, RevOS</td>
<td>Numbers half</td>
<td>Scheduled data syncs</td>
<td>Strong: governed metrics</td>
<td>Medium (needs data pipelines in shape)</td>
<td>Built into some products, plan-dependent in others</td>
</tr>
</tbody></table>
<h3>1. Enterprise search (Glean and similar)</h3>
<p><strong>What it is.</strong> Enterprise search connects to your apps (Google Drive, Slack, Jira, Salesforce, Confluence) and builds one index across them. An AI assistant on top answers questions by retrieving the most relevant documents and messages. <a href="https://www.glean.com/">Glean</a> is one of the best-known products in this category.</p>
<p><strong>Strengths.</strong> Fast to roll out, because it uses content you already have. Respects the permissions of each source app. Good at "where is the doc about X?" and "summarize what we know about Y."</p>
<p><strong>Where it breaks.</strong> Search finds text. It does not define your business terms or calculate metrics. If three dashboards show three different revenue numbers, search will happily find all three.</p>
<p><strong>Best fit.</strong> Large companies with knowledge scattered across dozens of tools, where the main pain is finding things.</p>
<h3>2. AI wiki and knowledge management (Notion AI, Confluence with Rovo)</h3>
<p><strong>What it is.</strong> Your wiki or docs tool adds an AI assistant that answers questions from the pages you have written. Notion AI, Atlassian's Rovo on top of Confluence, and Slite all take this approach. This is the core of the "AI knowledge management" category.</p>
<p><strong>Strengths.</strong> The content is curated. People wrote these pages on purpose, so quality is often higher than raw chat history. Easy to adopt if your team already lives in the wiki.</p>
<p><strong>Where it breaks.</strong> It only knows what someone wrote down, and pages go stale. Atlassian's own research found that <a href="https://www.atlassian.com/blog/state-of-teams-2025">leaders and teams waste 25% of their time just searching for answers</a>. That is a reminder that a wiki alone does not fix findability. (Atlassian sells Confluence, so read that figure as a vendor's survey.) Wikis also hold few live numbers.</p>
<p><strong>Best fit.</strong> Teams with a strong documentation habit who want AI answers over their existing pages.</p>
<h3>3. DIY RAG on a vector database</h3>
<p><strong>What it is.</strong> You build the pipeline yourself. Documents are split into chunks and turned into embeddings, which are numeric representations of meaning. The embeddings go into a vector database. When a question comes in, the closest chunks are retrieved and the model answers from them.</p>
<p><strong>Strengths.</strong> Full control over sources, models, cost, and where data lives. No vendor lock-in.</p>
<p><strong>Where it breaks.</strong> Everything a product would handle is now yours: connectors, permissions, refresh jobs, chunking strategy, and evaluation. Retrieval by similarity is weak on numbers and on questions that span records. Many DIY efforts stall. Slite surveyed 149 teams, and <a href="https://slite.com/learn/company-brain-survey-findings">of the teams that had tried to build their own company brain, 55% gave up</a>. (Slite sells a competing product, and only part of that sample had tried a DIY build, so treat this as a signal.)</p>
<p><strong>Best fit.</strong> Engineering-heavy teams with unusual data, strict hosting needs, or a product that needs RAG anyway.</p>
<p>For a deeper technical comparison of RAG with other ways to structure data, see our guide to <a href="https://www.revos.ai/blog/structuring-data-for-ai-agents">how semantic models, knowledge graphs, and RAG compare as ways to structure data for agents</a>.</p>
<h3>4. Knowledge graph with an ontology</h3>
<p><strong>What it is.</strong> You model your business as entities (customers, contracts, products, people) and the relationships between them. The <strong>ontology</strong> defines which entities and relationships are allowed. The <strong>knowledge graph</strong> stores the actual data. Palantir's Foundry, for example, is built around what it calls the <a href="https://www.palantir.com/docs/foundry/ontology/overview/">Ontology</a>, a model of an organization's objects and links.</p>
<p><strong>Strengths.</strong> Structure helps AI accuracy on business questions. In 2023, researchers at data.world, a data catalog vendor built on knowledge graphs, tested GPT-4 on business questions. It answered <a href="https://arxiv.org/abs/2311.07509">16% correctly when querying SQL tables directly, and 54% when the same data was modeled as a knowledge graph</a>. The study is small, uses older models, and comes from a vendor that sells knowledge-graph tools. Still, it suggests that explicit structure helps more than asking a model to infer it.</p>
<p><strong>Knowledge graph vs RAG.</strong> RAG retrieves text that looks similar to the question. A knowledge graph follows explicit links between records. So RAG suits "what does this document say?", while a graph suits "how does this customer connect to that contract and that support ticket?" Many teams use RAG for documents and a graph or semantic layer for connected records.</p>
<p><strong>Where it breaks.</strong> Graphs are expensive to build and maintain. Someone has to design the ontology and keep it accurate as the business changes. That is a real ongoing cost, and it is overkill for simple lookups.</p>
<p><strong>Best fit.</strong> Large organizations with complex, connected domains (supply chains, regulated industries) and the team to maintain an ontology.</p>
<h3>5. AI memory layer</h3>
<p><strong>What it is.</strong> Instead of indexing everything up front, a memory layer learns as agents and people work. It stores facts, preferences, and decisions from conversations and tasks, then feeds them back as context. Sentra, Supermemory, and the open-source cognee are examples.</p>
<p><strong>Strengths.</strong> Memory layers target a gap that MIT NANDA's July 2025 report on enterprise AI, <em>The GenAI Divide</em>, described directly: <a href="https://mlq.ai/media/quarterly_decks/v0.1_State_of_AI_in_Business_2025_Report.pdf">"most GenAI systems do not retain feedback, adapt to context, or improve over time"</a>. (The report calls its findings preliminary.)</p>
<p><strong>Where it breaks.</strong> Memory is only as good as what it captures, and it is hard to audit. When two conversations disagree, who decides which remembered "fact" is correct? Governance and permissions differ widely between products. Memory also does not calculate metrics.</p>
<p><strong>Best fit.</strong> Teams running many agents on ongoing work, where carrying context between sessions matters most.</p>
<h3>6. Data platform with a semantic layer and MCP</h3>
<p><strong>What it is.</strong> This approach builds the numbers half. Data from your CRM, billing, and product systems flows into a warehouse. A semantic layer defines your metrics and entities once (revenue, churn, active customer), so every AI agent uses the same definitions. An MCP server exposes those governed definitions to any agent. When an agent asks for net revenue retention, it picks a defined metric. It does not write its own query from scratch. Tools in this space include the dbt Semantic Layer, Cube, and RevOS.</p>
<p><strong>Strengths.</strong> Answers to numbers questions stay consistent. In 2026, dbt Labs compared its semantic layer with text-to-SQL, where the AI writes its own database query. With Claude Sonnet 4.6 and some light modeling, accuracy rose <a href="https://docs.getdbt.com/blog/semantic-layer-vs-text-to-sql-2026">from 90.0% with text-to-SQL to 98.2% with the semantic layer</a>. The authors noted a more useful difference: "With text-to-SQL, failure looks like a plausible but incorrect answer. With the Semantic Layer, failure looks like an error message." (dbt sells a semantic layer, and the test set is small.) For a company brain that difference matters, because an error gets noticed and a plausible wrong number usually doesn't.</p>
<p><strong>Where it breaks.</strong> It does not read your docs, Slack, or meeting notes. It answers "what is true in our data?", not "what did we decide and why?" It also needs your data pipelines to be in shape. In a Harvard Business Review Analytic Services survey sponsored by Cloudera, <a href="https://cloudera.com/about/news-and-blogs/press-releases/2026-03-05-only-7-percent-of-enterprises-say-their-data-is-completely-ready-for-ai-according-to-new-report-from-cloudera-and-harvard-business-review-analytic-services-reveals.html">only 7% of respondents said their organization's data was completely ready for AI</a>.</p>
<p><strong>Where RevOS fits.</strong> RevOS bundles this half into one managed platform. It syncs data from tools like HubSpot, Salesforce, and Stripe into a managed warehouse. It defines metrics once in a <a href="https://www.revos.ai/product/semantic-model?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=company-brain">semantic layer (RevOS calls it the semantic model)</a>. A built-in <a href="https://www.revos.ai/blog/what-is-an-mcp-server-for-data">MCP server for data</a> then serves those metrics to Claude, ChatGPT, or Copilot, and to <a href="https://www.revos.ai/product/agents">RevOS's own agents</a>, which run natively in your Microsoft Teams or Slack. It sits next to enterprise search or your wiki rather than replacing them.</p>
<p><strong>Best fit.</strong> B2B companies whose most important AI questions are about revenue, customers, and product usage, and who want those answers to match across every agent and dashboard.</p>
<h2>What breaks in a company brain</h2>
<p>Keeping a company brain accurate after launch is harder than setting it up. In Slite's survey, only <a href="https://slite.com/learn/company-brain-survey-findings">19.6% of respondents said they have a company brain that works flawlessly</a>. Slite itself calls that figure a ceiling. The survey also pointed to upkeep, not technology, as the main reason DIY builds were abandoned. The same failure modes show up in every approach:</p>
<ul>
<li><strong>Stale content.</strong> Pages, embeddings, and memories age. Without owners and refresh jobs, the brain confidently repeats last year's pricing.</li>
<li><strong>Permissions that drift.</strong> An agent must not show salary data to someone who could not open the source file. Every approach needs to inherit or enforce source-system permissions.</li>
<li><strong>Conflicting definitions.</strong> If "active customer" means three things in three places, no amount of retrieval fixes it. Define it once, in an ontology or a semantic layer, and make every tool use that definition.</li>
<li><strong>No evaluation.</strong> Few teams test whether answers are correct. Keep a set of real questions with known answers and rerun them after every change.</li>
<li><strong>Siloed sources.</strong> Data that never reaches the brain cannot inform it. In the same HBR Analytic Services survey, the <a href="https://cloudera.com/about/news-and-blogs/press-releases/2026-03-05-only-7-percent-of-enterprises-say-their-data-is-completely-ready-for-ai-according-to-new-report-from-cloudera-and-harvard-business-review-analytic-services-reveals.html">top obstacle to AI readiness, cited by 56% of respondents, was siloed data and difficulty integrating sources</a>.</li>
</ul>
<h2>How to build a company brain: a practical setup</h2>
<p>To build a company brain, list the questions it must answer. Then pick one tool for documents and decisions and one governed layer for business metrics. Define key terms once, and expose both through MCP so every agent reads the same context. Few products cover both halves well today, so most teams combine two.</p>
<img src="https://www.revos.ai/blog-content/company-brain/images/build-setup.webp" alt="A document store and a governed data-and-metrics store both plugging into one central MCP connector hub, which feeds context to several AI agents." style="display:block;margin:0 auto" />

<ol>
<li><strong>List the questions.</strong> Write down 30 real questions your teams and agents need answered. Sort them into knowledge questions and numbers questions. This tells you which half matters more.</li>
<li><strong>Pick a knowledge-half tool.</strong> If your content is spread across many apps, start with enterprise search such as Glean. If your team already writes good docs, use your wiki's AI, such as Notion AI or Rovo. Build RAG yourself only if you have a strong reason.</li>
<li><strong>Pick a numbers-half tool.</strong> Put your business data in one governed place and define key metrics and entities once, in a semantic layer or ontology. Options include the dbt Semantic Layer, Cube, or a bundled platform such as RevOS.</li>
<li><strong>Agree on definitions.</strong> Write down what "customer", "active", "churn", and "pipeline" mean. Use the same definitions in both halves.</li>
<li><strong>Connect everything through MCP.</strong> Expose both halves as MCP servers so Claude, ChatGPT, Copilot, and your own agents all read the same context.</li>
<li><strong>Set owners and tests.</strong> Give each source an owner. Rerun your question set on a schedule and after every change.</li>
</ol>
<p>Start with one team and its questions, cover both halves for that team, and expand once the answers hold up.</p>
<h2>Which company brain approach should you choose?</h2>
<p>Most teams will combine approaches rather than pick one. Search, wikis, RAG, and memory serve the knowledge half of a company brain. Knowledge graphs, ontologies, and semantic layers give the numbers half the structure it needs, and MCP connects both to the agents you run.</p>
<p>If your most important AI questions are about revenue, customers, and product usage, the numbers half is where to start. <a href="https://www.revos.ai/product/semantic-model?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=company-brain">See how the RevOS semantic model gives every agent one governed view of your business data</a>.</p>
<h2>Frequently asked questions</h2>
<p><strong>What is a company brain?</strong> A company brain is a shared context layer that holds what your company knows, so any AI agent or teammate can use it. It covers documents, conversations, decisions, definitions, and business data. Instead of each AI tool guessing from scratch, every agent draws on the same agreed context about how the business works.</p>
<p><strong>How do you build a company brain?</strong> List the questions it must answer. Use enterprise search, a wiki, or RAG for documents and decisions. Use a semantic layer or ontology over your business data for metrics. Define key terms once, enforce the same permissions as your source systems, and expose both halves to your AI agents through MCP. Then assign owners so the content stays current.</p>
<p><strong>What is the difference between a company brain and enterprise search?</strong> Enterprise search (for example Glean) indexes your existing apps and returns the most relevant documents and messages for a query. A company brain is broader. It is the full context layer an AI agent relies on, which can include a search index but also definitions, decisions, memory, and governed business metrics. Search is one way to build part of a company brain, not the whole thing.</p>
<p><strong>Is a company brain the same as a wiki or AI knowledge base?</strong> No. A wiki or AI knowledge base stores pages that people write, and an AI answers from those pages. A company brain uses that content as one source, but it also needs live business data, agreed definitions of terms, and permissions that follow your source systems. A wiki is one input to a company brain, not the whole brain.</p>
<p><strong>Is a company brain the same as a data catalog or semantic layer?</strong> No. A data catalog lists your tables and who owns them, but it does not answer business questions. A semantic layer defines business metrics such as revenue and churn once, so every tool calculates them the same way. A semantic layer is one part of a company brain, the part that covers numbers. The brain also needs the knowledge half: documents, conversations, and decisions.</p>
<p><strong>What is the difference between a company brain and RAG?</strong> RAG (retrieval-augmented generation) is a technique: it finds text passages that match a question and hands them to an AI model. A company brain is the whole context layer. Many company brains use RAG to serve documents, but RAG alone does not define business terms, calculate metrics, or manage permissions.</p>
<p><strong>What is a context layer?</strong> A context layer supplies the business context an AI model needs to give correct, company-specific answers. That includes what terms mean, how metrics are calculated, who can see what, and what was decided. Context layer and company brain describe the same idea. Context layer is the more technical name.</p>
<p><strong>What is the difference between a knowledge graph and an ontology?</strong> An ontology is the schema. It defines the types of things in your business (customer, contract, product), their properties, and how they may relate. A knowledge graph is the data: the actual customers, contracts, and products stored as connected nodes that follow that schema. The ontology keeps the graph consistent as it grows.</p>
<p><strong>Knowledge graph vs RAG: which is better for a company brain?</strong> RAG retrieves text passages that look similar to a question. It is quick to set up and works well for documents. A knowledge graph stores explicit entities and relationships, so it handles questions that follow connections across records. Many teams use RAG for documents and structured models for data.</p>
<p><strong>How does a company brain connect to Claude or ChatGPT?</strong> Through MCP (Model Context Protocol), the open standard for connecting AI assistants to external tools and data. Glean, Notion, Atlassian Rovo, and several memory and data platforms now offer MCP servers. Once your company brain runs one, Claude, ChatGPT, Copilot, or a custom agent can query it without a custom integration for each tool.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/company-brain?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=company-brain"><em>RevOS blog</em></a><em>.</em></p>
<p>Want to see this on your own revenue data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=company-brain">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Why I Failed the DP-700 Exam, and How I Passed It]]></title><description><![CDATA[I aced every DP-700 practice test, then failed the real exam. Here's the recognition-vs-retrieval gap that explains why, and how to fix it.]]></description><link>https://revosai.hashnode.dev/why-i-failed-the-dp-700-exam-and-how-i-passed-it</link><guid isPermaLink="true">https://revosai.hashnode.dev/why-i-failed-the-dp-700-exam-and-how-i-passed-it</guid><category><![CDATA[dataengineering]]></category><category><![CDATA[Microsoft]]></category><category><![CDATA[Career]]></category><category><![CDATA[learning]]></category><category><![CDATA[microsoft fabric]]></category><category><![CDATA[Certification]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Mon, 26 Oct 2026 10:50:02 GMT</pubDate><content:encoded><![CDATA[<p><em>By Viktor Goloubovsky, data engineer at RevOS</em></p>
<p><strong>Key takeaways</strong></p>
<ul>
<li>I passed practice exams for the DP-700 (Microsoft Fabric Data Engineer Associate) at 80-90%+ accuracy, then failed the real exam by 30 points.</li>
<li>The gap wasn't knowledge. It was studying for recognition (matching a question to a memorized answer) instead of retrieval: reasoning from requirements to a conclusion under exam-like pressure.</li>
<li>Cognitive science backs this up. Retrieval practice (being tested) builds durable, transferable knowledge better than restudying does, especially over time, a finding known as the testing effect.</li>
<li>On the retake, I changed almost nothing about what I knew and everything about how I engaged with the material: reasoning from constraints instead of matching keywords, and moving fast instead of perfecting every answer.</li>
<li>The same gap shows up in technical interviews, system design reviews, and picking up a new tool on the job. Recognizing an answer is the easy part; retrieving and applying it under pressure is the actual skill.</li>
</ul>
<p>When I joined RevOS earlier this year, part of my probation period was agreeing to get the <strong>DP-700 certification</strong>, Microsoft's Fabric Data Engineer Associate exam. I was excited. I'd passed certification exams before, I had some data engineering background, and I gave myself a month to prepare.</p>
<p>Ten weeks and dozens of practice tests later, I sat the real DP-700 exam confident I'd pass. I didn't. I found out afterward that the problem was never how much Fabric I knew. It was that I had spent ten weeks training the wrong skill.</p>
<h2>How I prepared</h2>
<p>My real gap going in was practical: I'd only recently started using Fabric, and while I had some data engineering experience, I knew how steep this learning curve could get. I lined up a mix of theory and practice:</p>
<p><strong>Theory</strong></p>
<ol>
<li>The Microsoft Learn DP-700T00-A course</li>
<li>Aleksi Partanen's DP-700 exam-prep series on YouTube</li>
<li>Fabric's official documentation</li>
</ol>
<p><strong>Practice</strong></p>
<ol>
<li>Microsoft's DP-700T00-A practice labs</li>
<li>Microsoft's practical assessments</li>
<li>Certiace's DP-700 exam practice questions</li>
</ol>
<p>I gave myself a month, then extended it by six weeks once I realized how much ground Fabric actually covers. Data engineering, real-time analytics, governance, and lifecycle management are each their own discipline with their own tools and patterns. Trying to get comfortable with all of them in four weeks had been wishful thinking.</p>
<p>I diversified my practice as I went. Microsoft's own practical assessments were reassuring (I consistently cleared the 80% pass threshold) but also a little unsettling, because the questions felt easier than what other candidates described from the real exam. So I added Certiace, a third-party practice platform with tougher, more scenario-based questions. It recalibrated me. I regularly finished Certiace mock exams above 90%, sometimes recognizing the right answer before I'd even finished reading the question.</p>
<p>By exam day, I felt ready. In hindsight, that confidence was measuring the wrong thing.</p>
<h2>The first attempt</h2>
<p>I sat the exam, worked carefully through it, and looked up anything I was unsure of. <a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-700">DP-700 is open-book to Microsoft Learn and Fabric documentation</a>, so that's allowed. But the questions were a different animal from my practice sets: long, scenario-based, with several almost-identical answer options that all sounded technically correct.</p>
<p>I answered every question. I failed anyway: <a href="https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-700">the pass threshold is 700 out of 1,000 points, 70%</a>, and I landed 30 points short.</p>
<p>Thirty points is a strange number to sit with. It's close enough to feel like bad luck, far enough to know it wasn't. I'd proven the exam was passable. I just hadn't figured out what I was actually being tested on.</p>
<h2>Why practice tests didn't prepare me</h2>
<p>Looking back at what went wrong, four things stood out:</p>
<ul>
<li><strong>Theory versus practice.</strong> I'd focused on learning Fabric's architecture and features, not on applying them to messy, real-life scenarios. Theory matters, but DP-700 tests how you'd handle a specific situation with specific constraints: the gap between watching driving tutorials and actually driving.</li>
<li><strong>Mindset.</strong> I stressed over unfamiliar questions instead of expecting them. Even experienced candidates report hitting confusing questions on DP-700. That's the nature of the exam, not a sign you're unprepared.</li>
<li><strong>The open-book trap.</strong> Being allowed to look things up in Microsoft Learn sounds like a safety net. In practice, the documentation is enormous and its search is mediocre, so leaning on it costs real exam time, and I leaned on it far more than I needed to.</li>
<li><strong>Time management.</strong> Around 40 questions in 100 minutes sounds generous. It stops feeling that way when you're 40 minutes from the end with 20 questions and a case study still to go. I spent my first 12 minutes on 3 questions before I course-corrected, and that early pace never fully recovered.</li>
</ul>
<p>Every one of those was a symptom. The actual cause was one thing: I had trained <strong>recognition</strong>, not <strong>retrieval</strong>.</p>
<p>Recognition is what a flashcard trains. You see a question about low-code transformations and your brain immediately says "Dataflow Gen2" (Fabric's low-code transformation tool), because you've matched the pattern before. That works on practice tests built around the same handful of scenarios. It falls apart on a question like:</p>
<blockquote>
<p><em>"A company has business analysts maintaining daily CSV transformations. Which approach best satisfies maintainability requirements?"</em></p>
</blockquote>
<p>Recognition alone doesn't answer that. You have to reason: "business analysts" signals a preference for low-code over hand-written pipelines, Dataflow Gen2 handles CSV sources well, so it fits the stated requirement better than the alternatives. That's <strong>retrieval</strong>: reconstructing an answer from constraints, not recalling one from memory.</p>
<p>This distinction isn't just my own theory. Cognitive scientists Henry Roediger and Jeffrey Karpicke showed in a now-canonical <a href="https://journals.sagepub.com/doi/10.1111/j.1467-9280.2006.01693.x">2006 study in <em>Psychological Science</em></a> that being tested on material (retrieval practice) produces meaningfully better long-term retention than restudying the same material, a finding they call the <strong>testing effect</strong>. The advantage grows the longer the delay before you actually need the knowledge. Their finding cuts against instinct: restudying can <em>feel</em> more effective in the moment, which is exactly the trap. Recognition feels like mastery. Only retrieval proves it. Psychologists call the gap between the two the <strong>illusion of competence</strong>.</p>
<p>My practice tests weren't teaching me to retrieve. They were teaching me to recognize a smaller set of question shapes than the real exam actually contains.</p>
<h2>What I changed for the retake</h2>
<p>I didn't relearn Fabric. I changed how I engaged with what I already knew.</p>
<p>Instead of asking <em>"What's the correct answer?"</em> while studying, I started asking: <em>"What requirement is this question actually implying? Why this answer instead of another technically valid one? What trade-off does each option make, and does it contradict the stated constraints?"</em> That single shift reshaped the rest of my preparation. I was reasoning from workload, constraints, and intended architecture instead of matching keywords to memorized labels.</p>
<p>I also changed my exam strategy. Rather than trying to perfect every answer, I moved quickly through the ones I wasn't sure about: read the scenario, identify the real requirement, weigh the trade-offs, commit, and flag it for review if genuine doubt remained. When I circled back to flagged questions, I unmarked more than half of them within seconds, a level of trust in my own reasoning I didn't have on my first attempt.</p>
<h2>The second attempt</h2>
<p>The questions weren't easier. They just weren't unfamiliar anymore. I'd already met Microsoft's style of scenario-writing once, and instead of treating every ambiguous case as something to research, I accepted the ambiguity as part of the format and reasoned my way through it.</p>
<p>I still finished the standalone questions with only about ten minutes to spare before the case study. DP-700 is genuinely time-intensive, no matter how well you manage it. But I reached the case study locked-in instead of rattled, and I still checked Microsoft Learn a few times to confirm syntax details in PySpark (Spark's Python API) and KQL (Fabric's query language for real-time data), not to discover concepts I'd never seen.</p>
<p>This time, I passed.</p>
<p>I don't think I learned dramatically more Fabric between attempts. I closed a few real knowledge gaps, but the bigger change was learning to use the knowledge I already had, under the same time pressure and ambiguity the exam actually tests.</p>
<h2>Why this matters beyond a Microsoft exam</h2>
<p>The recognition-versus-retrieval gap isn't specific to DP-700, or to certifications at all. It's the same reason a candidate who "knows" a system-design pattern cold on paper can freeze the moment an interviewer changes one constraint. Reading about a design, or recognizing it in someone else's diagram, isn't the same skill as reasoning through your own from scratch. It's why engineers can follow a tutorial confidently and still stall the first time they have to adapt it to a real, messier codebase. We lean on that same reasoning-under-constraint muscle when we design <a href="https://www.revos.ai/blog/agentic-data-engineering">agentic data pipelines that have to hold up in production</a>, not just work in a demo. Recognizing that a pattern exists somewhere is nowhere near the same as knowing when it actually applies.</p>
<p>Recognizing an answer is the first step. Being able to explain it, justify it, and apply it to a problem you haven't seen before is what actually demonstrates understanding: on an exam, in an interview, or in a <a href="https://www.revos.ai/blog/modern-data-strategy-microsoft-fabric-blueprint">Fabric deployment you're responsible for keeping correct</a>.</p>
<p>Failing my first DP-700 attempt didn't feel like progress at the time. But it's the reason I rebuilt how I study at all, and that ended up mattering a lot more than passing on the first try would have.</p>
<h2>Frequently asked questions</h2>
<h3>Why did I fail the DP-700 exam if I passed all my practice tests?</h3>
<p>Practice tests mostly reward recognition: matching a question to an answer you've seen before. The real DP-700 exam tests retrieval: reasoning from a scenario's requirements and constraints to the best answer, often among several technically valid options. Passing practice tests proves you can recognize correct answers, not that you can reason your way to one under pressure.</p>
<h3>Is the DP-700 exam hard?</h3>
<p>Yes. Most candidates describe DP-700 as moderately to significantly harder than typical certification exams, especially for anyone without hands-on Microsoft Fabric experience. The questions are longer and more scenario-based than most study guides prepare you for, and several answer options are often technically plausible, so you have to reason about which one best fits the stated requirements instead of just recalling a fact.</p>
<h3>What is the DP-700 passing score?</h3>
<p>According to Microsoft's own DP-700 study guide, you need at least 700 out of 1,000 points (70%) to pass. Microsoft doesn't publish an official pass rate, so treat any specific pass-rate number you see online as an unverified community estimate, not an official figure.</p>
<h3>How long should I study for DP-700?</h3>
<p>There's no universal number; it depends on your hands-on Fabric experience. I planned for one month, then extended to about ten weeks once I realized Fabric's breadth (data engineering, real-time analytics, governance, lifecycle management) needed more than theory to cover. Budget more time for practice and scenario reasoning than for reading documentation.</p>
<h3>What's the difference between recognition and retrieval when studying?</h3>
<p>Recognition is realizing you've seen something before: a question triggers a memorized answer, the way a flashcard does. Retrieval is reconstructing an answer from first principles: weighing requirements, constraints, and trade-offs to reason your way to a conclusion, even on a question you haven't seen phrased exactly that way. Exams and real jobs test retrieval; most casual studying only trains recognition. Learning-science research calls the resulting mismatch the illusion of competence: mistaking a familiar-feeling answer for real understanding.</p>
<h3>Do practice tests actually help you learn?</h3>
<p>Yes, but the mechanism matters. Taking a test is itself a form of retrieval practice, and cognitive science shows retrieval practice builds more durable, transferable knowledge than re-reading or restudying does. But if your practice tests are too similar to each other, or you review answers by re-reading rather than re-attempting cold, you end up training recognition instead: passing the practice test without building the reasoning skill the real exam requires.</p>
<h3>Does this recognition-versus-retrieval problem apply outside of certification exams?</h3>
<p>Yes. It's the same failure mode behind confidently-prepared candidates freezing in technical interviews or system design reviews. Reading about a topic (or recognizing it when you see it) feels like mastery, but only reasoning through unfamiliar, constrained problems under pressure actually builds and proves the skill.</p>
<hr />
<p><em>Viktor Goloubovsky is a data engineer at RevOS, where the team spends a lot of time thinking about the difference between</em> <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning"><em>data that looks right and data that's actually correct</em></a><em>, a distinction that, it turns out, applies to how you study for an exam too.</em></p>
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/dp-700-exam-recognition-vs-retrieval?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=dp-700-exam-recognition-vs-retrieval"><em>RevOS blog</em></a><em>.</em></p>
<p>Curious what Viktor's team builds? RevOS is a governed data layer that lets AI agents answer revenue questions from trusted numbers. <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=dp-700-exam-recognition-vs-retrieval">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[What Is an MCP Server? A Complete Guide to Model Context Protocol]]></title><description><![CDATA[What an MCP server is, how Model Context Protocol works, and why AI agents need one to read your business data. A plain-English guide.]]></description><link>https://revosai.hashnode.dev/what-is-an-mcp-server-a-complete-guide-to-model-context-protocol</link><guid isPermaLink="true">https://revosai.hashnode.dev/what-is-an-mcp-server-a-complete-guide-to-model-context-protocol</guid><category><![CDATA[mcp]]></category><category><![CDATA[AI]]></category><category><![CDATA[dataengineering]]></category><category><![CDATA[#agent]]></category><category><![CDATA[llm]]></category><category><![CDATA[#Semantic Layer]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Fri, 23 Oct 2026 12:01:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ac4cb3e18ede81f506a2be5/72f02e7c-43e3-422b-b8c5-e24152e310cd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li>An MCP server is a standardized connector that lets any AI agent access live data, tools, and services through the Model Context Protocol: a single open standard rather than a custom integration per tool.</li>
<li>MCP stands for Model Context Protocol, an open specification originally developed by Anthropic. It lets AI models request context, run tools, and read resources in a consistent, structured way.</li>
<li>Unlike a REST API, an MCP server speaks AI natively: it exposes tools (actions), resources (data), and prompts (reusable templates), not raw HTTP endpoints the model has to interpret.</li>
<li>For data teams, an MCP server is how you give an AI agent governed access to your warehouse, semantic model, and business metrics without writing a custom integration for every AI tool in your stack.</li>
<li>RevOS ships an MCP server as its consumption layer, so Claude, Cursor, or any MCP-compatible agent can query your certified revenue metrics by name, without building the integration yourself.</li>
<li>An MCP server acts on behalf of the user. Its access is established with either a shared secret token or a user-friendly OAuth flow, so the agent inherits the user's own permissions and can only reach data that person could already see.</li>
</ul>
<p>Your AI assistant sounds confident. It answers in complete sentences, cites figures, and explains its reasoning. The only problem: those figures came from data you pasted into the chat ten minutes ago, or from the model's training data, which ended months before your most recent quarter.</p>
<p>An MCP server is what changes that. It is the connection between an AI agent and live data: the layer that lets Claude, Cursor, or any AI tool reach into your database, query your business metrics, or trigger an action in an external system, on demand, without you lifting a clipboard.</p>
<h2>What is an MCP server?</h2>
<p>An MCP server is a program that exposes data, tools, and actions to AI agents through the Model Context Protocol. The AI agent connects to it, discovers what it can access, and issues requests. The server handles the rest: querying the underlying system, enforcing permissions, and returning results in a format the model can use.</p>
<p>In practice it works like this. An AI agent running in Claude or Cursor wants to know your pipeline coverage for Q3. Without an MCP server, it cannot look that up; it only knows what is already in its context window. With an MCP server connected to your data warehouse, it sends a request to the server, which runs the query and returns the answer directly into the agent's working memory.</p>
<blockquote>
<p>💡 <strong>In one sentence:</strong> an MCP server is the standardized interface that lets an AI agent reach beyond its context window and interact with live data, tools, and services, on its own, without a human copy-pasting or writing custom integration code.</p>
</blockquote>
<p>The protocol was designed specifically for AI agents, not for humans or traditional software. That distinction matters: an MCP server does not expose raw HTTP endpoints for a developer to call in code. It exposes things an AI model can discover and use autonomously.</p>
<h2>What does "MCP" stand for?</h2>
<p>MCP stands for <strong>Model Context Protocol</strong>. It is an open specification originally developed by Anthropic, released in late 2024, and now supported across the broader AI ecosystem, including Cursor, Windsurf, Microsoft Copilot, and dozens of open-source agent frameworks.</p>
<p>"Model context" describes exactly what it provides: context for the model. An AI model's intelligence is bounded by what is in its context window: the text, documents, and conversation history it can see. The protocol is the mechanism for expanding that window dynamically, by fetching exactly the information the agent needs at the moment it needs it.</p>
<h2>How does an MCP server work?</h2>
<p>The architecture has three components: a <strong>host</strong>, a <strong>client</strong>, and a <strong>server</strong>.</p>
<ul>
<li>The <strong>host</strong> is the AI application the user interacts with: Claude Desktop, Cursor, or a custom agent you built. It manages one or more client connections.</li>
<li>The <strong>client</strong> runs inside the host and maintains a one-to-one connection to a specific MCP server. Each tool or data source you connect gets its own client.</li>
<li>The <strong>server</strong> is the program that exposes the actual capabilities: the tools, resources, and prompts an AI agent can use.</li>
</ul>
<p>When you start a session, the client and server negotiate capabilities (each announces what it can offer), and the agent can begin using whatever is available. The transport layer for local servers is typically standard I/O, a subprocess the host spawns. Remote servers communicate over HTTP, which allows for streaming responses.</p>
<h3>The three things an MCP server can expose</h3>
<p>Every MCP server exposes capabilities through one or more of three primitives:</p>
<p><strong>Tools</strong> are actions the agent can invoke: running a query, calling an API, submitting a form. A tool has a name, a description, and a schema for its inputs and outputs. The agent reads the description and decides whether to call the tool. For example: a <code>run_metric_query</code> tool that accepts a metric name and a date range and returns the result.</p>
<p><strong>Resources</strong> are data the agent can read: documents, files, database records, live feeds. Unlike tools, resources are meant to be retrieved and placed into context, not acted on. For example: a configuration file, a record from a CRM, or a page from a knowledge base.</p>
<p><strong>Prompts</strong> are reusable templates: predefined instructions or question formats the user or agent can invoke to trigger a specific behavior. For example: a "summarize this quarter's revenue trends" prompt that the agent knows how to fill in and execute against the data.</p>
<h2>MCP server vs. API: what is the difference?</h2>
<p>The comparison comes up constantly because both connect software to external systems. They are genuinely different things, and the difference is worth understanding clearly.</p>
<table>
<thead>
<tr>
<th></th>
<th>REST API</th>
<th>MCP server</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Designed for</strong></td>
<td>Developers calling it from code</td>
<td>AI agents using it autonomously</td>
</tr>
<tr>
<td><strong>Discovery</strong></td>
<td>API docs you read; no self-description at runtime</td>
<td>Agent queries the server for its capability schema at runtime</td>
</tr>
<tr>
<td><strong>Interaction model</strong></td>
<td>Request-response, stateless per call</td>
<td>Stateful session with capability negotiation</td>
</tr>
<tr>
<td><strong>What it exposes</strong></td>
<td>HTTP endpoints (GET /users, POST /orders)</td>
<td>Tools, resources, and prompts</td>
</tr>
<tr>
<td><strong>Who decides what to call</strong></td>
<td>The developer writing the code</td>
<td>The agent, based on the task</td>
</tr>
</tbody></table>
<p>The practical consequence: connecting an AI agent to a REST API requires a developer to write integration code (parsing the response, deciding which endpoint to call for which question, handling errors). Connecting an agent to an MCP server requires configuring the server once. After that, the agent figures out what to call on its own.</p>
<p>This is why "MCP server vs. API" is slightly a false framing. Many MCP servers are thin wrappers around existing REST APIs or databases. The MCP layer is what makes those systems usable by an AI agent without custom integration work per tool.</p>
<h2>Why AI agents need MCP servers</h2>
<p>An AI agent without external connections is like a brilliant analyst in a locked room. They can reason, synthesize, and explain, but only from the materials already in the room. Every question that requires live data forces you to carry that data in from outside: by pasting, uploading, or writing custom code to fetch it.</p>
<p>MCP removes that constraint. When an agent has access to an MCP server, it can:</p>
<ul>
<li>Ask a question that requires live data and retrieve it on the spot</li>
<li>Chain multiple tool calls across a task: look up a number, compare it to last quarter, then check which segment drove the change</li>
<li>Take actions in external systems, not just read from them</li>
<li>Operate over time, with memory of what it retrieved earlier in the session</li>
</ul>
<p>The reason MCP matters more than ad-hoc custom integrations is standardization. Without a common protocol, every AI agent needs a custom integration for every tool it might use, and every tool needs to know about every agent format. With MCP, any server that speaks the protocol works with any client that speaks it. One integration per tool; one client per agent.</p>
<h2>MCP servers for business data: the use case most guides miss</h2>
<p>Most writing about MCP servers focuses on developer tools: GitHub repositories, code files, terminal commands, Slack messages. That is the first wave of adoption, and it is real. But it is not where the highest-value use case lives for most B2B SaaS companies.</p>
<p>The highest-value use case is <strong>giving an AI agent access to business data</strong>: revenue metrics, pipeline health, customer retention signals, product usage patterns. This is the data that drives decisions, and it lives in places an AI agent currently cannot reach: your data warehouse, your CRM, your billing system.</p>
<p>The problem with connecting an AI agent directly to a database is not the connection; MCP makes that technically straightforward. The problem is the layer above it.</p>
<p>If your AI agent can query your data warehouse directly, it will write its own SQL to answer your questions. Sometimes it guesses correctly. More often, it misses a filter, joins the wrong table, or defines "churn" differently than your finance team does, and returns a confident, specific, wrong answer. You have no way to tell which kind of answer you received.</p>
<p>This is where the <a href="https://www.revos.ai/blog/what-is-a-semantic-layer">semantic layer</a> comes in. A semantic layer defines your business metrics once (the exact SQL, the correct joins, the approved filters) and serves them to whatever is reading your data. When your MCP server sits on top of a semantic layer instead of raw database tables, the AI agent does not write SQL. It requests a certified metric by name: "net revenue retention, last quarter, EMEA segment." The semantic layer returns the one correct calculation. The agent cannot hallucinate a definition it never had to invent.</p>
<blockquote>
<p>📊 <strong>The pattern that works:</strong> raw warehouse tables feed a governed <a href="https://www.revos.ai/product/semantic-model">semantic model</a>, and an MCP server exposes that model to AI agents. The agent asks for metrics by name. The semantic layer enforces the definitions. The warehouse returns the data. No custom SQL, no invented business logic, no reconciliation meeting.</p>
</blockquote>
<h3>What you can actually ask an AI agent with a data MCP server</h3>
<p>With a well-structured data MCP server connected to a semantic layer, a RevOps analyst or data engineer can ask questions that previously required an analyst queue:</p>
<ul>
<li>"What is pipeline coverage for Q4 by segment, compared to this time last year?"</li>
<li>"Which accounts had a significant drop in product usage in the last 30 days?"</li>
<li>"What drove the change in net revenue retention from last quarter to this quarter?"</li>
<li>"Show me the top 20 accounts by expansion opportunity, using our current scoring model."</li>
</ul>
<p>Each of these questions requires multiple joins, specific metric definitions, and knowledge of your data model. A data MCP server with a semantic layer underneath handles that translation: the agent selects from defined metrics, not from raw columns.</p>
<p>This is what <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai">a modern data strategy for the AI era</a> looks like in practice: not a dashboard refresh cycle, but an AI agent that can answer these questions on demand, with the same definitions your best analyst would use, whenever someone needs to know.</p>
<h2>MCP vs. RAG: a quick distinction</h2>
<p>These two come up in the same conversations, and they are genuinely different.</p>
<p><strong>RAG (Retrieval-Augmented Generation)</strong> works by taking a question, searching a vector index of documents, pulling the most relevant text chunks, and loading them into the model's context window before it answers. It is a text-retrieval technique, best for unstructured content like documentation, support tickets, or contracts.</p>
<p><strong>MCP</strong> is a protocol for tool use and live data access. The agent does not search a vector index; it calls a specific tool or reads a specific resource. For structured data, MCP with a semantic layer is more accurate than RAG because you are retrieving an exact metric definition, not approximating from text.</p>
<p>In practice, many production systems use both: RAG for knowledge retrieval (documentation, policies, unstructured records) and MCP for live, structured data (metrics, operational data, actions). They are complementary, not competing.</p>
<h2>What to look for in a data MCP server</h2>
<p>Not all MCP servers for data are the same. When you are connecting an AI agent to business-critical metrics, a few things matter beyond "does it work."</p>
<p><strong>Governed metric definitions.</strong> If the MCP server exposes raw SQL access, every agent call is a potential metric definition problem. Look for servers that sit on top of a semantic layer, so the agent picks from certified metrics, not from tables.</p>
<p><strong>Row-level and column-level access control.</strong> An AI agent inherits the permissions of the person using it. If access control is not enforced at the data layer, a user can ask the agent for data they should not see. Access rules defined on the semantic model propagate to every tool that queries through it, including the agent.</p>
<p><strong>Predictable, auditable behavior.</strong> When an executive asks "where did this number come from?", you need an answer. A data MCP server that routes through a governed semantic model gives you one: the metric name, the definition version, the underlying query, all traceable. <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning">Getting your data ready for AI agents</a> starts with that kind of auditability.</p>
<p><strong>Transport and authentication.</strong> For production deployments, remote MCP servers run over HTTP. Confirm the server supports proper authentication (OAuth, API keys, or session tokens) before connecting it to sensitive data.</p>
<h2>How is an MCP server secured?</h2>
<p>Connecting an AI agent to your business data raises an obvious question: what can it actually see, and who said it could? The answer comes down to identity. A well-built MCP server never holds a blanket key to everything. It acts on behalf of a specific person, and it is bound by that person's existing permissions.</p>
<p>There are two common ways that identity gets established: a shared secret token, or an OAuth flow.</p>
<h3>Shared secret tokens</h3>
<p>The simplest approach is a static credential (an API key, a personal access token, or a bearer token) that you paste into your client's configuration. The agent presents that token on every request, and the server trusts it.</p>
<p>This is the default for local MCP servers. The Model Context Protocol authorization spec expects local (stdio) servers to read credentials from the environment rather than run a login flow, so a token in a config file or environment variable is exactly the right tool. It is fast to set up, with no redirect screens or consent prompts.</p>
<p>The tradeoff is bluntness. A shared secret identifies a connection, not a person. One key maps to one fixed set of permissions, it tends to be long-lived, and it sits in plaintext wherever you stored it. If it leaks, whoever holds it inherits whatever that key could do, with no per-user attribution and a manual rotation to clean up. For a single developer wiring up a local tool, that is fine. For a team querying sensitive revenue data, it is not enough.</p>
<h3>OAuth: acting on behalf of the user</h3>
<p>The better pattern for remote, multi-user servers is OAuth. Instead of pasting a secret, you click "Connect," authenticate with your normal login, and approve a consent screen that spells out exactly what the agent is allowed to do. The MCP server receives a short-lived, scoped access token (no long-lived secret ever lands in your config), and that grant can be refreshed or revoked at any time.</p>
<p>The MCP authorization spec is built on OAuth 2.1 for HTTP-based servers. The client requests access on behalf of the user, the server validates every token and confirms it was issued specifically for that server, and the flow uses PKCE so the authorization code cannot be intercepted and replayed. The upshot for you is simple: the agent inherits your identity. Every query it runs executes as you, so it can only ever reach data you were already allowed to see.</p>
<blockquote>
<p>🔒 This is why identity matters more than any network firewall here. If the agent runs as the user, your existing access controls (roles, row-level and column-level security defined on the data) do all the work automatically. The agent cannot become a backdoor to data the person behind it could never open themselves.</p>
</blockquote>
<p>This is the model RevOS uses. Rather than handing every user a static key, the RevOS MCP server uses a user-friendly OAuth flow: each person connects with their own identity, and the governed semantic layer enforces exactly the permissions they already have. The agent answers questions, but it answers them as you.</p>
<h3>Risks worth understanding</h3>
<p>Even with clean authentication, a handful of MCP-specific risks are worth knowing before you connect a server to sensitive data:</p>
<ul>
<li><strong>Token passthrough.</strong> The spec explicitly forbids an MCP server from forwarding the caller's token to an upstream API. If the server needs to call another service, it must obtain its own token for that service. Passing tokens through blurs the trust boundary and invites the next problem.</li>
<li><strong>The confused deputy.</strong> A server that proxies requests to other systems can be tricked into using its own privileges on behalf of an attacker. Strict redirect-URI validation, per-client consent, and verifying that a token was issued for this server are the standard mitigations.</li>
<li><strong>Prompt injection and tool poisoning.</strong> Malicious instructions hidden in a tool's description or in the data it returns can hijack the model. This is an LLM-trust problem rather than an auth problem, and it is mitigated by sanitizing inputs and pinning tool definitions so they cannot silently change after you approve them.</li>
<li><strong>Over-broad scopes.</strong> Request only the permissions the task needs. The principle of least privilege keeps the blast radius small if anything does go wrong.</li>
<li><strong>Audit logging.</strong> You need to know who asked the agent for what. A production MCP server should log authentication and every tool invocation to storage you can trust.</li>
</ul>
<p>None of this is exotic. It is the same identity-and-access discipline you already apply to dashboards and BI tools, extended to the agent that now queries on your behalf.</p>
<h2>Frequently asked questions</h2>
<h3>What is the difference between an API and an MCP server?</h3>
<p>A REST API exposes HTTP endpoints designed for a developer to call from code. An MCP server exposes tools, resources, and prompts in a structure AI agents understand natively, so the model can discover what is available, decide what to call, and handle the result autonomously. APIs are for developers. MCP servers are for AI agents.</p>
<h3>Is an MCP server a real server?</h3>
<p>Yes. An MCP server is a real process running on a machine, locally or in the cloud, communicating over a transport layer (standard I/O for local processes, HTTP for remote ones). What makes it an MCP server is the protocol it speaks: the Model Context Protocol message format, capability negotiation, and the tools, resources, and prompts it exposes.</p>
<h3>Why would I need an MCP server?</h3>
<p>When you want an AI agent to access live data or perform actions autonomously. Without one, the agent only knows what is in its context window. With an MCP server connected to your data sources, it can query your database, pull your business metrics, or trigger actions on demand. For data teams, this is how you stop manually copying numbers into chat and let the agent retrieve them itself.</p>
<h3>Does ChatGPT use MCP?</h3>
<p>Yes. ChatGPT can connect to MCP servers as custom connectors, and Claude, Cursor, Windsurf, and many open-source agent frameworks support MCP natively too. The RevOS MCP server, for example, can be added in either Claude's or ChatGPT's connector settings.</p>
<h3>What is MCP in agentic AI?</h3>
<p>In agentic AI, MCP is the communication layer between an agent and the tools and data it operates on. Agentic systems plan and act across multiple steps; MCP standardizes how they access external capabilities at each step. The agent discovers what tools are available, calls them as needed, and acts on the results, all through one protocol, without needing a custom integration for every tool.</p>
<h3>What is an MCP server in simple terms?</h3>
<p>An MCP server is a plug-in slot for AI agents. Just as a USB port lets you plug multiple devices into a computer through one standard interface, an MCP server lets an AI agent connect to multiple data sources and tools through one standardized protocol. Instead of asking you to paste in a spreadsheet, the agent queries the server directly and gets the answer itself.</p>
<h3>Can you host your own MCP server?</h3>
<p>Yes. The Model Context Protocol is an open standard with official SDKs in Python, TypeScript, and Java. You can build and host an MCP server for any data source or tool you control. Local servers run as a subprocess over standard I/O. Production servers run as HTTP services. Many teams start with an open-source MCP server for a common tool and build custom ones for proprietary data.</p>
<h3>What is the difference between MCP and RAG?</h3>
<p>RAG searches a vector index of documents and pulls relevant text into the model's context window. MCP is a protocol for live tool use and data access: the agent calls a specific tool or queries a specific resource. For unstructured content like documentation, RAG works well. For structured business data like metrics and operational records, MCP with a governed semantic layer is more accurate because the agent retrieves exact definitions instead of approximating from text.</p>
<h3>How is an MCP server secured?</h3>
<p>Through identity. An MCP server authenticates the caller, usually with one of two mechanisms: a shared secret token (an API key or bearer token you configure, the norm for local servers), or an OAuth flow (where you log in and approve scopes, the norm for remote, multi-user servers). With OAuth the server acts on behalf of you specifically, so the agent inherits your permissions and can only reach data you are already allowed to see. The Model Context Protocol authorization spec is built on OAuth 2.1 for HTTP-based servers.</p>
<h2>The bottom line</h2>
<p>An MCP server is the layer that closes the gap between an AI agent's intelligence and the live data it needs to act on. For development teams, it unlocks code-aware agents. For data teams, it unlocks something more significant: an AI that can answer business questions from your actual data, with the same metric definitions your analysts use, without a custom integration per tool.</p>
<p>The protocol is open, the ecosystem is growing fast, and the infrastructure already exists to build this, or to get it bundled. RevOS ships an MCP server as the top layer of its data platform, on top of a governed semantic model, so any MCP-compatible agent can connect and query your certified metrics by name from day one.</p>
<p>If you are evaluating what it takes to give AI agents access to your business data, <a href="https://www.revos.ai/blog/what-is-a-semantic-layer">start with the semantic layer</a>: that is the governed layer your MCP server should expose. The MCP server is the interface. The semantic layer is what makes the answers trustworthy.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/what-is-an-mcp-server?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=what-is-an-mcp-server"><em>RevOS blog</em></a><em>.</em></p>
<p>Want to see this on your own data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=what-is-an-mcp-server">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Claude Code, Cowork, Tag, and Routines: A Practitioner's Map to the Claude Ecosystem]]></title><description><![CDATA[Claude Code, Cowork, Tag and three different things called Routines: which Claude surface fits which job in 2026, and whose credentials run the work.]]></description><link>https://revosai.hashnode.dev/claude-code-cowork-tag-and-routines-a-practitioner-s-map-to-the-claude-ecosystem</link><guid isPermaLink="true">https://revosai.hashnode.dev/claude-code-cowork-tag-and-routines-a-practitioner-s-map-to-the-claude-ecosystem</guid><category><![CDATA[claude]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[AI]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[devtools]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Thu, 22 Oct 2026 10:30:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ac4cb3e18ede81f506a2be5/efff4742-b0cd-46d7-9eaf-cc0b2d0368e7.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li>Claude Code isn't one app. It's a single agent engine behind a terminal CLI, IDE extensions, a Desktop tab, and Claude Code on the web. Your <a href="http://CLAUDE.md">CLAUDE.md</a> and MCP servers travel with you across all of them.</li>
<li>Claude Cowork runs the same engine inside a sandboxed desktop (and now web/mobile beta) workspace, organized around local folders and a background planner called Dispatch, but it doesn't read your Claude Code CLI's ~/.claude setup.</li>
<li>Claude Tag puts Claude in your team's Slack channels under the organization's own shared credentials, not any one person's. That's the real difference from Cowork and Code, which stay private to you.</li>
<li>"Routines" names at least three unrelated things: cloud-run Claude Code Routines, local Desktop scheduled tasks, and Slack-native Claude Tag routines. They don't share a task list.</li>
<li>The organizing question isn't "which tool is smartest". It's whose credentials run the work, and who gets to see it.</li>
</ul>
<p>Anthropic didn't ship one Claude product this year. It shipped four, and gave three of them names that sound like they should mean the same thing. Ask a few people on your team "what's the difference between Claude Code and Claude Cowork?" and you'll get a different answer each time. Mention "the Claude routine" and you still don't know whether they mean a cron job in the cloud, a task running on their laptop, or something set up entirely inside Slack.</p>
<p>This is a <strong>Claude Cowork vs. Claude Code</strong> question, but it's bigger than those two. By the second half of 2026 there are four surfaces worth knowing apart:</p>
<ul>
<li><strong>Claude Code:</strong> a coding agent you drive from a terminal, an IDE, or a browser.</li>
<li><strong>Claude Cowork:</strong> an agentic workspace for outcome-oriented work on your files.</li>
<li><strong>Claude Tag:</strong> Claude working inside your team's Slack channels.</li>
<li><strong>Routines:</strong> a word Anthropic uses for at least three unrelated kinds of scheduled automation.</li>
</ul>
<p>None of this is a rebrand of the others. Each is a different envelope around the same underlying agent, built for a different job. Here's the map.</p>
<h2>Claude Cowork vs. Claude Code: the quick answer</h2>
<table>
<thead>
<tr>
<th>Surface</th>
<th>Runs on</th>
<th>Who sees the work</th>
<th>Best for</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Claude Code</strong></td>
<td>Your credentials, your machine or your own cloud session</td>
<td>Just you</td>
<td>Hands-on coding in an existing repository</td>
</tr>
<tr>
<td><strong>Claude Cowork</strong></td>
<td>Your credentials, a sandboxed workspace</td>
<td>Just you</td>
<td>Outcome-oriented work on local files, no terminal needed</td>
</tr>
<tr>
<td><strong>Claude Tag</strong></td>
<td>Your team's shared credentials</td>
<td>Everyone in the Slack channel</td>
<td>Shared work the team should see and steer</td>
</tr>
<tr>
<td><strong>Routines</strong> (any form)</td>
<td>Whichever surface created them</td>
<td>Depends on the form</td>
<td>Unattended, scheduled, or triggered work</td>
</tr>
</tbody></table>
<p>The row that matters most for the rest of this guide: <strong>whose credentials run the work, and who can see the result.</strong> Claude Code and Cowork stay private to you. Claude Tag is visible to a whole channel by design. Routines run unattended. Keep that distinction in mind; it explains more about which tool to reach for than "how technical is the user" does. Plenty of engineers live in Cowork, and plenty of non-engineers now trigger a Claude Code Routine without ever opening a terminal. That question also generalizes well past Claude: every agent should have an identity, but <a href="https://www.revos.ai/blog/ai-agent-identity">not every agent should have its own authority</a>.</p>
<p>Prefer video? Here's the whole map in one walkthrough:</p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=W0mzh9UCHpk">https://www.youtube.com/watch?v=W0mzh9UCHpk</a></p>

<h2>Claude Code: your terminal, your checkout</h2>
<p>Claude Code is an agent that reads your codebase, edits files, runs commands, and works with your existing dev tools. The important thing to understand is that "Claude Code" isn't a single app. It's one engine behind several surfaces: the terminal CLI, extensions for VS Code and JetBrains, a <strong>Code</strong> tab inside the Claude Desktop app, Claude Code on the web, and mobile. Your <code>CLAUDE.md</code> project memory, your settings, and your connected <a href="https://www.revos.ai/blog/what-is-an-mcp-server">MCP servers</a> (the standard way Claude reaches outside tools and data) work the same way across every one of them, because they all talk to the same underlying engine.</p>
<p>In practice, that means you can start a task in the terminal, hand it off to the web version so it keeps running after you close your laptop, or pull a cloud session back down locally when you want hands-on control again. It's designed to be extended: project memory, reusable skills, hooks that run on specific events, and a headless mode (<code>claude -p</code>) for piping output into scripts or CI pipelines.</p>
<p><strong>Who it's for:</strong> developers and engineering teams working inside an actual repository, with their own credentials and their own machine (or a cloud session tied to their own account).</p>
<p><strong>Sample use cases:</strong></p>
<ul>
<li><code>claude "write tests for the auth module, run them, and fix any failures"</code>: a self-contained coding task run start to finish.</li>
<li>Piping log output through Claude Code for anomaly triage: <code>tail -200 app.log | claude -p "flag anything unusual"</code>.</li>
<li>Starting a long refactor on Claude Code on the web, then pulling it down locally once it's ready for a closer look.</li>
</ul>
<h3>Is Claude Code just Cursor?</h3>
<p>This comes up constantly, and the answer is no. They solve overlapping problems with different shapes. Cursor is a fork of VS Code: the AI lives inside the editor, suggesting and applying changes as you work, one file at a time. Claude Code is terminal-native and session-based: you describe an outcome, and the agent plans, edits multiple files, runs commands, and reports back, with or without an editor open at all.</p>
<p>This isn't a fringe question. <a href="https://survey.stackoverflow.co/2025/ai">Stack Overflow's 2025 Developer Survey</a> found 84% of respondents were using or planning to use AI tools in their development process, up from 76% the year before, and 50.6% of professional developers already use one daily. It's the default way most teams now write code. Among developers who'd tried an autonomous coding agent specifically, the same survey found adoption split across ChatGPT (81.7%), GitHub Copilot (67.9%), and Claude Code (40.8%): evidence that most teams aren't choosing one tool and stopping, they're running several. The "Where Cursor still fits" section below covers how that plays out day to day.</p>
<p>If your team already links agentic tools to a real project, see how we <a href="https://www.revos.ai/blog/structuring-data-for-ai-agents">structure data so AI agents can query it reliably</a>. The agent is only half the story; what it can actually read matters just as much.</p>
<h2>Claude Cowork: same engine, different envelope</h2>
<p>Claude Cowork is easy to misread as "Claude Code for non-engineers," and that undersells it. Cowork runs the same agentic engine that powers Claude Code, inside the Claude Desktop app, without opening a terminal, but it's organized around a different unit of work. Instead of a git checkout, you point it at <strong>Projects</strong>: local folders paired with standing instructions and a project-scoped memory that stays on your machine. Instead of responding turn by turn, Claude works toward a described outcome and you check back once it's done.</p>
<p>The piece that makes Cowork genuinely different from "Claude Code with a nicer UI" is <strong>Dispatch</strong>, a background planner that splits a multi-step brief into subtasks and routes each one to the surface that fits: knowledge-work pieces stay in a Cowork session, coding pieces get handed to a Code session. Ask Dispatch to "summarize the open reliability-tagged issues and draft a status update," and it can pull that off from your phone while your desktop does the actual work.</p>
<p>Two things worth knowing before you reach for it:</p>
<ul>
<li><strong>It's not desktop-only anymore.</strong> Cowork is generally available on macOS and Windows via Claude Desktop, and now in beta on web and mobile for Pro, Max, and Team plans (Enterprise, where an admin turns it on). On web and mobile, local file access and connectors still run through your desktop app in the background, so your computer has to be on.</li>
<li><strong>It doesn't inherit your Claude Code CLI setup.</strong> Cowork loads skills, plugins, and connectors from your <a href="http://claude.ai">claude.ai</a> account settings, not from your terminal's <code>~/.claude</code> directory. If you've spent time tuning Claude Code locally, none of that carries over automatically. It's a genuinely separate configuration surface, and it's the single most common trap for people who assume "same engine" means "same setup."</li>
</ul>
<p><strong>Who it's for:</strong> anyone doing file-and-document-heavy work who doesn't want to open a terminal, including engineers, since Dispatch explicitly hands coding subtasks to a Code session on their behalf.</p>
<p><strong>Sample use cases:</strong></p>
<ul>
<li>Point Cowork at a folder of contracts and have it produce a comparison spreadsheet with working formulas.</li>
<li>Kick off a Dispatch request from your phone ("summarize this week's open threads and draft the team update") and find it done when you're back at your desk.</li>
<li>Have it work alongside Claude in Chrome (Claude's browser extension for driving a live website) to complete a task that needs more than local files.</li>
</ul>
<p>For the bigger idea behind letting an agent own more of a workflow end to end, see our piece on <a href="https://www.revos.ai/blog/agentic-data-engineering">agentic data engineering</a>. Cowork's Dispatch model and the "describe the outcome, review the result" pattern it uses show up there too, just applied to data pipelines instead of documents.</p>
<h2>"@Claude" in Slack: Claude Tag, not the old Slack integration</h2>
<p>If your team already has Claude working inside Slack, it's worth checking which version you're on, because there are two live right now with genuinely different account models.</p>
<p><strong>Claude Tag</strong> (currently in public beta) is Claude working in your team's Slack channels under the organization's own shared credentials, not any individual's Claude account. An admin sets it up once per channel at <code>claude.ai/admin-settings/claude-tag</code>, and after that, anyone in the channel can just tag <code>@Claude</code> with no setup of their own. Each thread spins up a fresh, sandboxed working session (built when the thread starts, released when it goes quiet) running on the same engine as Claude Code on the web. It posts a live checklist as it works, and anyone in the thread can redirect it by replying, without re-tagging it.</p>
<p>That's the real distinction from Cowork and Code: this work is visible to the whole channel by design, and it's billed against the organization's own usage balance, not any one person's plan. It's currently available on <strong>Team and Enterprise</strong> plans. Pro and Max plans still use the older, individually authenticated Slack integration, which runs under each person's own account and their own limits. Anthropic is retiring that older integration for Team and Enterprise workspaces in favor of Claude Tag. There's no public cutover date, so ask your account team rather than assuming a timeline.</p>
<p><strong>Who it's for:</strong> teams that want shared, visible work a whole channel can watch and steer: incident triage, decision threads, or status rollups that shouldn't live in one person's DMs.</p>
<p><strong>Sample use cases:</strong></p>
<ul>
<li>Tag <code>@Claude</code> in an incident channel to investigate a latency regression against the morning's deploy and open a PR.</li>
<li>Turn a sprawling decision thread into a clean doc or a tracked ticket.</li>
<li>Ask it to pull together the state of a project across a dozen open threads and a launch plan in Drive.</li>
</ul>
<p>We cover where this fits alongside other agent categories in our <a href="https://www.revos.ai/blog/enterprise-ai-agents">rundown of enterprise AI agents</a>, if you're mapping this against a broader agent rollout.</p>
<h2>"Routines" means three different things: pick the right one</h2>
<p>This is the part of the ecosystem most likely to get someone confused mid-conversation, because Anthropic uses the word "Routines" for at least three separate mechanisms, and none of them share a task list with each other.</p>
<ol>
<li><strong>Claude Code Routines (cloud, research preview):</strong> a saved Claude Code configuration (a prompt, one or more repositories, and a set of connectors) packaged once and triggered automatically. It runs on Anthropic-managed cloud infrastructure, so it keeps working with your laptop closed. Triggers combine three ways on a single routine: on a schedule (hourly up to weekly, or a custom cron), via a direct API call to the routine's own endpoint, or from a GitHub event (a pull request opening, a release publishing). This is the mechanism actually behind this post: a GitHub label triggered a Claude Code Routine that researched, drafted, and validated the draft you're reading.</li>
<li><strong>Desktop scheduled tasks (local):</strong> created from the same "Routines" panel in the Claude Desktop app, but choosing "Local" instead of "Cloud." These run on your own machine, with real local file access, only while your computer is on and the app is open.</li>
<li><strong>Claude Tag routines:</strong> a completely separate, Slack-native idea. Standing work you set up in plain English inside a channel, like "every weekday at 9am, check the linked tickets in this channel and post a one-line status." No cron syntax, no dashboard; you just ask, and manage it later by tagging Claude again.</li>
</ol>
<p><strong>Who it's for:</strong> anyone who wants Claude to do something without a person kicking it off in real time: an engineer scheduling nightly checks, or a channel that wants standing status updates with nobody assigned to remember it.</p>
<p>The practical takeaway: if a teammate says "I set up a routine," ask <em>where</em>. A cloud routine keeps running when their laptop is shut. A local one doesn't. A Slack routine only exists inside that one channel. They're three different systems that happen to share a name.</p>
<p><strong>Sample use cases:</strong></p>
<ul>
<li>A weekly GitHub-triggered routine that reviews every pull request against a house style guide before a human looks at it.</li>
<li>A nightly local task that reorganizes a folder of downloaded reports, useful only while your machine is actually on.</li>
<li>A Slack routine that watches a pull request and pings the channel the moment it merges.</li>
</ul>
<h2>Where Cursor still fits</h2>
<p>None of this makes Cursor obsolete. The "which one wins" framing that dominates most comparison posts online misses how teams actually use these tools together: most professional developers now use more than one AI coding tool, per the adoption figures above, rather than settling on a single winner. Cursor's strength is still the in-editor, keystroke-level loop: inline suggestions and quick edits while you're heads-down in one file. Claude Code's strength is the session-level agent loop: describing an outcome and letting it run across files, tests, and commands with less of your attention.</p>
<p>Worth knowing if you're evaluating either company's staying power: SpaceX fully acquired Cursor's parent company, Anysphere, in an all-stock deal finalized on August 14, 2026, per an SEC Form 8-K filing, as <a href="https://finance.yahoo.com/technology/ai/articles/spacex-completes-record-60-billion-131311785.html">reported by Yahoo Finance</a>. Cursor now operates as part of SpaceX's newly formed "SpaceXAI" division rather than as an independent startup. That's a genuinely new fact worth factoring into a build-vs-buy decision, separate from which tool writes better code today.</p>
<p>Most teams we talk to don't pick one. They keep Cursor open for fast, in-file edits and reach for Claude Code (or Cowork, for the non-coding half of the job) when a task is big enough to hand off entirely.</p>
<h2>How RevOS uses this stack</h2>
<p>We're not writing this as outside observers. RevOS's own CLI is <a href="https://www.revos.ai/product/agentic-data-engineering">built specifically to be driven by AI coding agents</a> like Claude Code and Cursor. That's a deliberate design choice, not an afterthought, because the whole point of the product is letting an agent build your data layer from plain-English intent instead of hand-written pipelines.</p>
<p>And the meta-example: this very post exists because of a Claude Code Routine. A label on a GitHub issue triggered a cloud routine that researched the keywords, pulled the competitive landscape, drafted this MDX file, and ran it through a validation pass: the same "Routines" mechanism described two sections up, running unattended against our own content pipeline. It's the clearest sample use case we have, because you're reading its output right now.</p>
<h2>Frequently asked questions</h2>
<h3>Is Claude Code just Cursor with a different name?</h3>
<p>No. Cursor is a fork of VS Code with AI features built into the editor UI. Claude Code is a terminal-native agent that can also run inside an IDE, a desktop app, or a browser tab, the same engine either way. The practical difference is where you spend most of your time: inside an editor loop (Cursor) or handing off a full task to an agent that plans, edits, and runs commands across a session (Claude Code).</p>
<h3>Who should use Claude Code?</h3>
<p>Developers and engineering teams working inside an existing repository who want to hand off a whole task, not just one line of autocomplete, and get back a plan, edited files, and a report. It fits equally well driven from a terminal, an IDE, a desktop app, or piped into a script or CI job.</p>
<h3>What is Claude Cowork?</h3>
<p>Claude Cowork is an agentic workspace built on the same engine as Claude Code, designed for outcome-oriented work on local files and folders (contracts, spreadsheets, research) rather than a git checkout. You describe the outcome you want and check back once it's done, instead of responding turn by turn.</p>
<h3>Is Claude Cowork free?</h3>
<p>No. It's available on paid Claude plans (Pro, Max, Team, Enterprise), with no separate free tier, though it's included at no extra cost once you're on one of those plans.</p>
<h3>What is an agentic workflow?</h3>
<p>An agentic workflow is a task an AI agent completes by looping through perceive, reason, act, and check steps on its own, rather than answering one prompt and stopping. In the Claude ecosystem, that loop is the same whether it runs in a terminal, a desktop workspace, a Slack thread, or on a schedule. The surface changes, the underlying agent doesn't.</p>
<h3>Can you give an example of an agentic workflow?</h3>
<p>A concrete one: "write tests for the auth module, run them, and fix any failures." The agent explores the codebase, writes the tests, runs the suite, reads the failures, edits the code, and reruns the tests, looping until they pass, without a person approving each individual step along the way. A single prompt in, a working result out.</p>
<h3>Is ChatGPT an agentic AI?</h3>
<p>It can act agentically when it uses tools, browses, or runs code across multiple steps, but its default chat mode is single-turn. "Agentic" describes a mode of operation (planning and acting toward a goal across a session), not one specific product. Claude Code, Cowork, and Claude Tag are all built around that agentic loop by default.</p>
<h3>Is Cursor AI better than Claude Code for coding?</h3>
<p>Neither wins outright. They're shaped for different moments. Cursor is strongest for in-editor, keystroke-level suggestions while you're heads-down in one file. Claude Code is strongest for session-level work: describing an outcome and letting an agent plan, edit multiple files, run commands, and report back. Most teams we see run both rather than standardizing on one.</p>
<h3>What are the most common Claude Code use cases?</h3>
<p>Writing and fixing code inside an existing repository, running and interpreting test suites, reviewing pull requests, and automating routine engineering chores like dependency bumps or log-triage scripts piped through <code>claude -p</code>. Teams also use it for tasks that don't look like coding at all (refactoring config files, writing docs from a codebase, or scripting one-off data cleanups) because the same agent that edits code can just as easily edit text.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/claude-code-cowork-tag-routines?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=claude-code-cowork-tag-routines"><em>RevOS blog</em></a><em>.</em></p>
<p>RevOS works inside Claude, ChatGPT, Slack and Teams, so agents answer from the same governed revenue data. Want to see it on your own data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=claude-code-cowork-tag-routines">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Agentic Data Engineering: How AI Agents Build Data You Can Trust]]></title><description><![CDATA[Agentic data engineering uses AI agents to build and maintain data pipelines from plain-English intent. How it works, the tools, and how to trust it.]]></description><link>https://revosai.hashnode.dev/agentic-data-engineering-how-ai-agents-build-data-you-can-trust</link><guid isPermaLink="true">https://revosai.hashnode.dev/agentic-data-engineering-how-ai-agents-build-data-you-can-trust</guid><category><![CDATA[data-engineering]]></category><category><![CDATA[AI]]></category><category><![CDATA[dbt]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[analytics]]></category><category><![CDATA[semanticlayer]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Tue, 20 Oct 2026 10:27:09 GMT</pubDate><content:encoded><![CDATA[<p><strong>Key takeaways</strong></p>
<ul>
<li><p>Agentic data engineering uses autonomous AI agents to build and maintain data pipelines from plain-English intent, not line-by-line code written by hand.</p>
</li>
<li><p>The bottleneck isn't the model's intelligence. It's the control layer around it: the grounding that tells the agent which answer is right, and the controls that catch a wrong one before it ships.</p>
</li>
<li><p>A governed semantic layer lifts text-to-SQL accuracy from about 51% to over 90%, proof that context, not capability, decides whether an agent's SQL is correct.</p>
</li>
<li><p>Trust comes from the workflow: the agent ships changes as a pull request that passes tests and CI before a human merges it. It fails at review time, not in production.</p>
</li>
<li><p>The data engineer's job shifts from writing every transformation to defining intent, reviewing diffs, and governing what the agent is allowed to do.</p>
</li>
</ul>
<p>The project has been on the roadmap for two quarters. Cohort retention. Lead scoring. LTV by channel. Every week without it costs something concrete: a board question you can't answer, a campaign you can't attribute, a churn signal you caught too late.</p>
<p>So you did what any technical operator would do in 2026: you opened ChatGPT, or Claude, and asked it to write the SQL. And it did. Beautifully. The queries ran, the numbers came back, the charts looked clean. Then someone asked whether the retention number was <em>actually</em> right, and you couldn't say. No lineage, no tests, no agreed definition of what "active" even meant. Just fluent SQL nobody had verified. Looking great and being right, it turns out, are very different things.</p>
<p>That gap, between an AI that can write data code and an AI you can trust to <em>ship</em> it, is the whole story of <strong>agentic data engineering</strong>. This guide explains what the term means, how the workflow actually works, the tools that make it possible, and the part most vendors skip: how you let an agent touch production data without getting burned.</p>
<h2>What is agentic data engineering?</h2>
<blockquote>
<p><strong>Agentic data engineering is the practice of using autonomous AI agents to design, build, and maintain data pipelines from natural-language intent, instead of an engineer writing every transformation by hand, with limited human oversight.</strong> The agent plans the work, writes the code (ingestion, SQL, tests), runs it, checks the result, and corrects itself; a human reviews and approves the final change.</p>
</blockquote>
<p>The key word is <em>agentic</em>. A plain AI assistant answers a question and stops. An <strong>agent</strong> works toward a goal across many steps on its own: it perceives the state of your data, reasons about what to do next, takes an action, reads the outcome, and loops until the goal is met. Researchers call this the <strong>perceive → reason → act → learn</strong> loop. In data engineering, that loop looks like: explore the warehouse, write a transformation, run the tests, read the failures, fix them, and present the finished change for review.</p>
<p>This is the shift from doing the <strong>"how"</strong> by hand to specifying the <strong>"what"</strong> and reviewing the result. You stop writing every line of SQL and start describing the metric you need, then the agent does the building. The promise is real, but so is the catch, which is the rest of this article.</p>
<h2>Agentic vs. traditional data engineering, and vs. automation and copilots</h2>
<p>Three things get confused with agentic data engineering. They're not the same.</p>
<table>
<thead>
<tr>
<th></th>
<th>What it does</th>
<th>Who decides the steps</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Static automation</strong> (cron, Airflow DAGs)</td>
<td>Runs a fixed sequence someone wrote in advance</td>
<td>A human, ahead of time</td>
</tr>
<tr>
<td><strong>AI copilot</strong> (autocomplete in your editor)</td>
<td>Suggests the next line or block while you drive</td>
<td>A human, line by line</td>
</tr>
<tr>
<td><strong>AI agent</strong></td>
<td>Pursues a goal across many steps, adapts to what it finds</td>
<td>The agent, within your guardrails</td>
</tr>
<tr>
<td><strong>Traditional data engineering</strong></td>
<td>A person hand-builds each pipeline, query, and test</td>
<td>A human, step by step</td>
</tr>
</tbody></table>
<p>A scheduler repeats what you already decided. A copilot autocompletes while you stay in control. An <strong>agent</strong> takes a goal ("build me a weekly cohort-retention model") and figures out the steps itself, including the ones you didn't anticipate. That autonomy is what makes it powerful, and exactly why the controls around it matter so much.</p>
<p>One more term to untangle: <strong>agentic analytics</strong>. The two are siblings, not synonyms. Agentic analytics works on the <em>serving</em> side: it asks questions of data that already exists (the BI and query layer). Agentic data engineering works one layer down: it <em>builds and maintains the pipelines and models</em> that produce that data in the first place. You need the engineering layer to be sound before the analytics layer can be trusted.</p>
<h2>How agentic data engineering works</h2>
<p>Under the hood, an agentic workflow runs your raw data through the same stages a human data team would, building an AI data pipeline driven by intent instead of tickets:</p>
<ol>
<li><p><strong>Ingestion.</strong> Source data lands in your warehouse from your apps, CRM, product database, and third-party tools. Connectors like Airbyte or Meltano handle the extract-and-load so the agent has raw tables to work from.</p>
</li>
<li><p><strong>Transformation.</strong> The agent writes the models that turn raw tables into clean, business-ready ones, typically as <a href="https://www.getdbt.com/">dbt</a> models in a layered (bronze → silver → gold) structure, with tests attached.</p>
</li>
<li><p><strong>Semantic layer.</strong> Cleaned tables still don't know what <em>your business</em> means by "active user" or "qualified lead." A semantic layer encodes those definitions once, so every query, human or agent, uses the same math. (We go deep on this in <a href="https://www.revos.ai/blog/what-is-a-semantic-layer">what a semantic layer is and why it matters</a>, and on <a href="https://www.revos.ai/blog/structuring-data-for-ai-agents">how it compares to knowledge graphs, RAG, and plain markdown + grep</a> as ways to structure data for an agent.)</p>
</li>
<li><p><strong>Serving.</strong> The finished metrics are queried by dashboards, notebooks, or, increasingly, by other AI agents over a protocol like MCP (the Model Context Protocol), which lets an agent ask your data questions in a structured, governed way.</p>
</li>
</ol>
<p>You describe the metric; the agent explores the lakehouse, writes the dbt model, builds the semantic overlay, and runs the tests. That's the happy path. Now the part that decides whether any of it is trustworthy.</p>
<h2>Why the model isn't the bottleneck: it's the control layer</h2>
<p>If you've already pointed an AI coding agent at a data problem and watched it produce confident garbage, you've met the real bottleneck. It isn't the model. It's the <strong>control layer</strong> the model works against.</p>
<p>So what is a control layer? <strong>A control layer is the software around an AI model that makes its output safe to ship in production: the <em>grounding</em> that tells the agent which answer is right (your lineage, business semantics, and access policies) and the <em>controls</em> that catch a wrong answer before it lands (validation loops, data contracts, CI/CD, and an audit trail).</strong> A model writes code; the control layer decides whether that code is safe to merge.</p>
<p>The intuition is simple: the model is only the engine. Impressive on a workbench, but useless until it's bolted into the rest of the car: a chassis, wheels, a steering wheel, pedals to control the power, and a dashboard that shows what's actually happening. The control layer is the rest of the car.</p>
<p>Put a generic agent and an agent with a control layer side by side:</p>
<table>
<thead>
<tr>
<th></th>
<th>Generic AI agent</th>
<th>Agent with a control layer</th>
</tr>
</thead>
<tbody><tr>
<td>Starts from</td>
<td>A blank file: no schema, no definitions</td>
<td>Your schema, dbt models, and business definitions</td>
</tr>
<tr>
<td>Picks the right answer by</td>
<td>Guessing, fluently</td>
<td>Grounding: your lineage, semantics, and access policies</td>
</tr>
<tr>
<td>Catches a wrong answer with</td>
<td>Nothing; it ships</td>
<td>Validation loops, PK/unique checks, data contracts, CI/CD</td>
</tr>
<tr>
<td>Mistakes surface</td>
<td>In production, in a downstream dashboard</td>
<td>At review time, as a pull-request diff</td>
</tr>
<tr>
<td>In production it acts</td>
<td>Unsupervised</td>
<td>Scoped, time-bound, human-in-the-loop, fully audit-logged</td>
</tr>
</tbody></table>
<p>That gap is measurable. <a href="https://www.snowflake.com/en/blog/engineering/cortex-analyst-text-to-sql-accuracy-bi/">Snowflake put a number on it</a>: on text-to-SQL (natural language to SQL), a general-purpose model (GPT-4o) scored just <strong>51%</strong> on their internal evaluation, while grounding the same task in a governed semantic model pushed accuracy past <strong>90%</strong> on real-world queries, nearly 2× single-shot GPT-4o. The difference between a wrong query and a right one is almost entirely context, not capability. That's also why <a href="https://www.revos.ai/blog/data-readiness-for-machine-learning">data readiness</a> (clean, tested, well-defined inputs) matters more than which model you pick.</p>
<p>The market already senses this. In <a href="https://cleanlab.ai/ai-agents-in-production-2025/">Cleanlab's 2025 survey</a> of 1,837 engineering leaders, only <strong>~5.2%</strong> run AI agents in production. <a href="https://www.getdbt.com/resources/state-of-analytics-engineering-2026">dbt's 2026 report</a> found <strong>72%</strong> of practitioners want AI-assisted coding but only <strong>24%</strong> trust it to manage pipelines. <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR's 2025 study</a> even measured experienced developers running <strong>19% slower</strong> with AI on familiar code while <em>feeling</em> faster. The appetite is real; the reliability isn't, because the control layer isn't there.</p>
<p>One principle decides everything downstream: <strong>the agent fails at review time, not in production.</strong></p>
<h2>What it looks like in practice</h2>
<p>Theory is cheap; here's a concrete worked example. At RevOS we built exactly this control layer, so the abstract pieces above have real names. What you install is a packaged offering: a set of APIs, a command-line interface, documentation, and curated agentic skills, wrapped in a dev container you open in your IDE (Visual Studio Code or similar) and drive with Claude Code (or a coding agent of your choice). There's no new UI to learn; it lives where you already write code.</p>
<img src="https://www.revos.ai/blog-content/agentic-data-engineering/images/vscode-sample-data.png" alt="The RevOS demo project open in a VS Code dev container: the dbt medallion models (bronze, silver, and gold staging and mart models) in the file explorer, with Claude Code describing the scaffolded sample datasets and data-quality stats." style="display:block;margin:0 auto" />

<p><code>revos init</code> <em>scaffolds a working project (medallion dbt models, semantic cubes, and sample data) that your agent can explore from minute one.</em></p>
<p>Under that surface, RevOS wires together a best-of-breed stack (automated data ingestion, dbt for transformation, Cube.dev for the semantic layer, Git for versioning, BigQuery as the warehouse), so your agent starts with your schema, your models, and your definitions instead of a blank file. You describe the metric you need; the agent explores your lakehouse, writes the dbt model, and builds the semantic overlay. (For the full product view, see how RevOS helps you <a href="https://www.revos.ai/product/agentic-data-engineering">build a revenue or growth data layer without hiring a data engineer</a>.)</p>
<p>Then the part that earns trust: when the agent finishes a model, the control layer doesn't accept it on faith. Validation loops run. Primary-key and unique-constraint checks fire. YAML data-contract enforcement kicks in. The change moves through the <strong>same Git CI/CD pipeline as your application code</strong> and lands on your desk as a pull request with a diff. When the agent gets it wrong (and it will), you catch it in the PR, not at 3 a.m. in a downstream dashboard.</p>
<h2>The trust problem: governing an AI agent on production data</h2>
<p>The single hardest question in agentic data engineering is the one most marketing pages dodge: <em>how do you let an autonomous agent near production without it doing something irreversible?</em></p>
<p>The answer is workflow, not faith. Three controls do the heavy lifting:</p>
<ul>
<li><p><strong>Changes ship as pull requests.</strong> The agent never writes directly to production. It proposes a diff that runs through tests and CI; a human reads it and merges it. This is the concrete meaning of "fails at review time." A wrong model is a red check on a PR, not a corrupted table.</p>
</li>
<li><p><strong>Permissions are scoped and time-bound.</strong> The agent gets exactly the access a task needs, for as long as the task takes, not standing admin rights. Mutating actions in production (schema changes, deletions, permission grants) keep a human in the loop by design. Scoping is only half the job: the agent also needs an identity distinct from the authority it borrows, so that <em>who acted</em> and <em>who permitted it</em> stay separable after the fact. See <a href="https://www.revos.ai/blog/ai-agent-identity">AI agent identity</a>.</p>
</li>
<li><p><strong>Every action is audit-logged.</strong> An immutable trail of what the agent did, when, and why means you can answer "what changed?" after the fact. That's the difference between a controlled system and a black box.</p>
</li>
</ul>
<p>Why be this strict? Because verbal guardrails don't bind an agent; technical ones do. The widely reported case of an AI agent wiping a live production database during a code freeze is the cautionary tale: it had every capability to help and none of the controls to be safe. Autonomy should scale <em>as trust accrues</em>, never the other way around.</p>
<h2>Will AI agents replace data engineers?</h2>
<p>Short answer: no. They change the job. The "AI data engineer" worth imagining is a tooling shift, not a headcount replacement. The work that agents absorb is the repetitive build work: boilerplate models, test scaffolding, documentation, the tenth slightly-different staging table. What they don't absorb is judgment: deciding what a metric <em>should</em> mean, whether a result is plausible, and what the agent is allowed to touch.</p>
<p>So the role moves up the stack. Less time typing SQL; more time defining intent, reviewing the agent's pull requests, and owning the semantic layer and governance that keep the agent correct. The scarce, valuable skill becomes knowing what "right" looks like, which is exactly the skill a generic model lacks. Put simply, an AI data engineer doesn't replace the human one; it hands the human a faster, more reviewable way to work. (For the bigger picture of how AI reshapes data work, see our take on <a href="https://www.revos.ai/blog/modern-data-strategy-age-of-ai">modern data strategy in the age of AI</a>.)</p>
<p>That same shift, from recognizing a familiar pattern to reasoning through an unfamiliar one, is why the scarce skill is so hard to fake or shortcut. One of our engineers hit this exact wall <a href="https://www.revos.ai/blog/dp-700-exam-recognition-vs-retrieval">studying for a Microsoft Fabric certification</a>: passing every practice test only taught him to recognize answers, and the real exam tested whether he could reason his way to new ones.</p>
<h2>What tools power agentic data engineering</h2>
<p>There's no single product called "agentic data engineering." It's a stack, and you can assemble it from best-of-breed parts:</p>
<ul>
<li><p><strong>Ingestion:</strong> Airbyte, Fivetran, or Meltano move raw data into the warehouse.</p>
</li>
<li><p><strong>Transformation:</strong> dbt is the de facto standard for version-controlled, tested SQL models.</p>
</li>
<li><p><strong>Semantic layer:</strong> Cube.dev (or dbt's own semantic layer) encodes business definitions so queries stay consistent.</p>
</li>
<li><p><strong>Warehouse / lakehouse:</strong> BigQuery, Snowflake, Databricks, or an open table format like Iceberg or Delta.</p>
</li>
<li><p><strong>Version control + CI/CD:</strong> Git plus a pipeline that runs tests on every change. This is what makes the PR-review safety model possible.</p>
</li>
<li><p><strong>The agent:</strong> a coding agent like Claude Code (a data engineering agent once it's pointed at your warehouse), connected to your data and tools through MCP, that actually writes and runs the work.</p>
</li>
</ul>
<p>The agent is the smallest piece. The other five are the control layer, and they're what separate a fun demo from something you'd trust with a board number. Tools that bundle these into one governed workflow (RevOS pre-wires dbt, Cube.dev, BigQuery, and Git behind a Claude Code agent) save you from stitching them together yourself, but the architecture is the same whether you buy it or build it. Claude Code itself is only one surface in a growing family. If you're also weighing Claude Cowork, Claude Tag, or one of Anthropic's several "Routines" for scheduling this kind of work, see our <a href="https://www.revos.ai/blog/claude-code-cowork-tag-routines">map of the Claude ecosystem</a>.</p>
<h2>Where agentic data engineering is headed</h2>
<p>The category is young and moving fast, and the direction is clear: data engineering is going AI-native, with pipelines built around agents from the first commit rather than retrofitted onto a hand-built stack. A few specifics worth watching:</p>
<ul>
<li><p><strong>More backends and open formats.</strong> Iceberg and Delta are pulling the warehouse and the lake together, which gives agents one consistent surface to work against.</p>
</li>
<li><p><strong>Broader warehouse support.</strong> Today many agentic tools are warehouse-specific; expect coverage to widen across Snowflake, Databricks, and Microsoft Fabric.</p>
</li>
<li><p><strong>Open connectivity and semantic standards.</strong> Frameworks like Meltano for ingestion, and competing semantic-model languages, are converging toward portability, so your definitions aren't locked to one vendor.</p>
</li>
<li><p><strong>Agents querying agents.</strong> As MCP matures, the consumer of your data layer is increasingly another AI agent, not a human in a dashboard. That raises the bar on governance, because the semantic layer is now the contract between machines. Governance is only half the picture, though. The agent also has to stay reliably <em>running</em>, and <a href="https://www.revos.ai/blog/hermes-agent-kubernetes">what breaks when you deploy a self-improving agent like Hermes Agent to Kubernetes</a> is its own reliability problem.</p>
</li>
</ul>
<p>The throughline: the model gets cheaper and smarter every quarter, but the value keeps moving to the control layer around it. Whoever owns clean, governed, well-defined data wins, which is why we've argued the <a href="https://www.revos.ai/blog/generative-ai-dilemma-opportunity-vs-monopoly">real AI advantage is your data, not the model</a>, and why that data, once captured as decision traces in a governed semantic model, becomes what's now being called <a href="https://www.revos.ai/blog/token-capital">token capital</a>.</p>
<h2>Getting started</h2>
<p>You don't need to adopt the whole category at once. The fastest way to feel the difference is to put an agent on a stack it already understands and ask for one real metric.</p>
<blockquote>
<p>The idea of giving Claude Code a structured dbt/Cube/BigQuery environment makes a lot of sense. The predefined context, conventions, and architecture should help generate more accurate and consistent results than a generic AI coding assistant.</p>
<p>What stood out to me most was the focus on combining AI with a well-defined data framework rather than just code generation. That feels like a meaningful differentiator. For teams that need a revenue or growth data layer but don't yet have a dedicated data engineer, this could significantly accelerate implementation and reduce complexity while still allowing for human oversight where needed.</p>
<p><em>Vira Slipchenko, Data Analyst, Fin-Navi GmbH</em></p>
</blockquote>
<p>The reproducible version with RevOS: install the CLI and run <code>revos init</code>. You land in a working project preloaded with sample datasets and models, so there's something real to point your agent at from minute one. Ask it to explore the sample lakehouse and build your first model. From install to a production-ready model is an afternoon, not a quarter. The full set of agent capabilities, skills, and interfaces is on the free plan (up to 1 GB of storage), so trying it costs you an afternoon and nothing more.</p>
<pre><code class="language-plaintext">npm i -g @revos/cli
revos init
</code></pre>
<p>The zero-to-scheduled-action walkthrough lives at <a href="https://cli.revos.dev">cli.revos.dev</a>. Try it out today.</p>
<h2>Frequently asked questions</h2>
<h3>What is agentic data engineering?</h3>
<p>Agentic data engineering is the practice of using autonomous AI agents to design, build, and maintain data pipelines from natural-language intent, instead of an engineer writing every transformation by hand. The agent plans the work, writes the code (ingestion, SQL, tests), runs it, checks the result, corrects itself, and a human approves the change.</p>
<h3>How is agentic data engineering different from traditional data engineering?</h3>
<p>Traditional data engineering is task-driven: a person writes each pipeline, query, and test step by step. Agentic data engineering is intent-driven and autonomous: you describe the outcome you want, an AI agent plans and executes the steps and validates its own work with limited human oversight, and you review the result. The shift is from doing the "how" by hand to specifying the "what" and approving the diff.</p>
<h3>What's the difference between an AI copilot and an AI data agent?</h3>
<p>A copilot suggests code one line at a time while you stay in the driver's seat. An agent works toward a goal across many steps on its own: it explores your data, writes a model, runs tests, reads the errors, and fixes them in a loop. A copilot autocompletes; an agent completes a task.</p>
<h3>Will AI agents replace data engineers?</h3>
<p>No. They change the job. Agents handle the repetitive build work (boilerplate models, tests, documentation), while engineers move up to defining metrics and intent, reviewing the agent's pull requests, and governing what it's allowed to touch. The scarce skill becomes judgment about what is correct, not typing SQL faster.</p>
<h3>How accurate is AI at writing SQL?</h3>
<p>A general-purpose model writing SQL from a raw schema is unreliable: GPT-4o scored about 51% on Snowflake's internal text-to-SQL evaluation. Grounding the same task in a governed semantic model pushed accuracy past 90%. The difference between a wrong query and a right one is almost entirely context, not the model's raw capability.</p>
<h3>What tools power agentic data engineering?</h3>
<p>A typical stack pairs automated ingestion (Airbyte, Meltano), a transformation framework (dbt), a semantic layer (Cube.dev), a warehouse (BigQuery, Snowflake, Databricks), version control and CI/CD (Git), and a coding agent (Claude Code) connected to your data through MCP. The agent writes and runs the transformations; the rest is the control layer that keeps its output correct and safe.</p>
<h3>Is it safe to let an AI agent work on production data?</h3>
<p>It is safe when autonomy is earned, not granted by default. Permissions should be scoped and time-bound, every action should land in an immutable audit log, and mutating actions in production (schema changes, deletions, permission grants) should keep a human in the loop. Changes arriving as a reviewable pull-request diff mean mistakes surface at review time, not in a live dashboard.</p>
<h3>Do AI data agents need a semantic layer?</h3>
<p>They work far better with one. A semantic layer encodes your business definitions (what "active user", "revenue", or "churn" actually mean) so the agent doesn't have to guess them from raw column names. It's the single biggest lever on accuracy: the same model that guesses against a raw schema becomes reliable when it queries a governed semantic model.</p>
<h3>How do I get started with agentic data engineering?</h3>
<p>Start small on a stack the agent already understands. With RevOS you install the CLI, run <code>revos init</code>, and land in a working project preloaded with sample data, dbt models, and a semantic layer, then point a coding agent at it and ask for your first metric. From install to a production-ready model is an afternoon, and the free plan (up to 1 GB) makes trying it cost nothing but time.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/agentic-data-engineering?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=agentic-data-engineering"><em>RevOS blog</em></a><em>.</em></p>
<p>Want to see this on your own data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=agentic-data-engineering">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[AI Agent Identity: Who Acted, and Under Whose Authority?]]></title><description><![CDATA[Every AI agent needs an identity, but not every agent needs its own authority. How six platforms record who acted and on whose behalf.]]></description><link>https://revosai.hashnode.dev/ai-agent-identity-who-acted-and-under-whose-authority</link><guid isPermaLink="true">https://revosai.hashnode.dev/ai-agent-identity-who-acted-and-under-whose-authority</guid><category><![CDATA[AI]]></category><category><![CDATA[Security]]></category><category><![CDATA[Identity]]></category><category><![CDATA[mcp]]></category><category><![CDATA[agents]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Fri, 16 Oct 2026 10:19:37 GMT</pubDate><content:encoded><![CDATA[<p>Suppose you tell an agent: <em>move Acme to At Risk, create a task for the account owner, and prepare a renewal plan.</em> The agent does exactly that.</p>
<p>What should your CRM say happened?</p>
<p><strong>Last modified by Alex</strong>, because you asked for it? <strong>Last modified by Renewal Agent</strong>, because the agent performed the operation? Or <strong>Renewal Agent, on behalf of Alex</strong>, because both facts matter?</p>
<p>This looks like a UX detail. It isn't. It's the question of <strong>AI agent identity</strong>, and the honest answer is the third one. Almost no enterprise system has a place to put it.</p>
<h2>What is AI agent identity?</h2>
<p>AI agent identity is the practice of giving an AI agent its own distinct, verifiable identity in your systems. That identity is separate from the human who asked it to act, and separate from the shared service account it might otherwise borrow. It exists so every action the agent takes can be attributed to it specifically.</p>
<p>The hard part is what the definition leaves out, so let's name it immediately:</p>
<ul>
<li><p><strong>Identity</strong> answers <em>who performed this operation?</em> Call that the <strong>actor</strong>.</p>
</li>
<li><p><strong>Authority</strong> answers <em>whose permissions allowed it to happen?</em> Call that the <strong>authority</strong>.</p>
</li>
</ul>
<p>A <em>principal</em>, in identity terms, is any entity a system can authenticate and grant rights to. For a human user, the actor and the authority are the same principal, so enterprise software only ever built one field. A user authenticates, the user has roles, the user performs an action, the audit log records the user. One principal, start to finish.</p>
<p>An agent breaks that. Consider two chains that produce an identical database write, both routed through the Model Context Protocol (MCP):</p>
<pre><code class="language-plaintext">Alex            -&gt;  Renewal Agent  -&gt;  MCP  -&gt;  HubSpot
Renewal policy  -&gt;  Renewal Agent  -&gt;  MCP  -&gt;  HubSpot
</code></pre>
<p>In both, the Renewal Agent is the actor. In the first, a person is the authority. In the second, running at 03:14 with nobody at a keyboard, the authority is an organizational policy and the permissions granted to the agent itself. Same actor, same write, completely different accountability. A system with one field cannot tell them apart.</p>
<p>Hence the argument of this piece: <strong>every production agent should have an identity, but not every agent should have its own authority.</strong> Those are two separate decisions. Conflating them produces both of the common failure modes: agents that vanish behind a human's name, and agents handed far more power than the job needs.</p>
<h2>Enterprise software was built for one kind of actor</h2>
<p>Identity systems have spent decades getting good at people. Then they added a second category, applications and service accounts, for machines running predefined operations. That gave us a clean two-box model: humans who decide, and software that executes.</p>
<p>The second box is now enormous. Palo Alto Networks' 2026 Identity Security Landscape surveyed 2,900+ cybersecurity decision-makers and reports that machine identities outnumber humans 109:1. Treat that as directional rather than precise, since the publisher sells identity security. The industry's name for that box is "non-human identity," and the operational concern behind it is sprawl: thousands of long-lived credentials nobody owns or rotates.</p>
<p>Agents don't fit either box. An agent can reason, choose which tools to call, decide which records to modify, and initiate a sequence nobody specified. That's the human box. It also needs machine credentials, deterministic policy, and tight privilege scoping. That's the service-account box.</p>
<h3>Should an AI agent be a service account or a user account?</h3>
<p>Neither, exactly. Treating an agent as a service account gets you credential hygiene but loses the fact that it made a choice. Treating it as a user account gets you attribution but quietly grants it a person's entire authority. Both are the one-principal model straining against a two-principal reality.</p>
<h2>Actor and authority are two different things</h2>
<p>Once you separate actor from authority, a lot of confused arguments resolve.</p>
<p>"Just let the agent use the user's OAuth token" is the most common shortcut. It's a statement about authority that accidentally destroys the actor. The agent gets the right permissions and becomes invisible in the process, because every action it takes is indistinguishable from the human's own. That's tolerable when the agent is summarizing a report. It's misleading when the agent decided something at 03:14.</p>
<p>The mechanics for keeping both facts already exist in the identity world. OAuth's on-behalf-of flow and RFC 8693 token exchange let one principal act with another's authority while remaining distinguishable, carrying a <code>subject</code> and an <code>actor</code> in the same token. What's been missing isn't cryptography. It's the enterprise convention of using it for agents, plus the fields in downstream systems to record the result.</p>
<p>Microsoft's own guidance frames this as a question any agent identity model has to answer: was the action performed on behalf of a user or by the application itself? That's the actor/authority distinction in a vendor's words, and it's a question your CRM's <code>Last Modified By</code> field structurally cannot answer.</p>
<h2>Five models of agent autonomy</h2>
<p>"AI agent" describes deployments so different that one identity policy can't cover them. Sorting by autonomy rather than architecture gives five models, and the amount of visible identity each needs rises as you go down the list.</p>
<p><strong>1. The invisible assistant.</strong> The agent searches, summarizes, or drafts using the user's permissions. From the business application's point of view the human is still the actor, and that's fine. For low-risk assistance, inventing a separate principal adds governance overhead with nothing to govern.</p>
<p><strong>2. The named capability.</strong> The organization creates a recognizable "Renewal Agent" or "Research Agent." People invoke it, and it still runs on the invoking user's authority. The agent has a product identity without becoming an independent employee. Most internal AI tooling lives here, and most of it should.</p>
<p><strong>3. The delegated agent.</strong> The agent has its own identity and acts under someone's delegated authority, so the system can record <code>subject: Alex, actor: Renewal Agent</code>. I'd expect the bulk of enterprise agent activity to land here, because it's the first rung that survives an audit: you can reconstruct both who wanted the work and what performed it.</p>
<p><strong>4. The autonomous agent.</strong> Its own identity <em>and</em> its own constrained permissions. It monitors, decides, and acts on organizational policy rather than waiting for a person to ask. Nobody is present, so borrowing a human's authority isn't just imprecise, it's a fiction.</p>
<p><strong>5. The digital coworker.</strong> The agent becomes an organizational participant with its own account and presence, and colleagues interact with it roughly as they would another team member. Identity here is not optional: the agent needs a first-class organizational account, because other people will address it, assign it work, and expect its actions to be attributable the way a colleague's are.</p>
<p>The five models aren't competing standards to pick between. They're rungs, and the useful principle is directional: <strong>the more independently an agent acts, the less acceptable it becomes for it to hide behind a human identity.</strong></p>
<h2>How six platforms handle agent identity today</h2>
<p>Here's what makes this architecture rather than opinion. Six platforms have taken up the same distinction, in different idioms, with no shared standard between them.</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>How it treats actor and authority</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Microsoft Entra Agent ID</strong></td>
<td>Ships both principals. Two explicit modes: autonomous access (rights given directly to the agent identity) and delegated access (acting on behalf of human users). For agents created in Copilot Studio, it also records the user who created the agent as its <em>sponsor</em>.</td>
</tr>
<tr>
<td><strong>Google Cloud Agent Identity</strong></td>
<td>Ships both principals, a layer lower. Each agent gets a strongly attested cryptographic identity based on the SPIFFE standard. Not a shared service account: not impersonable, no long-lived keys. Supports an agent using its own identity, and acting for a specific user.</td>
</tr>
<tr>
<td><strong>GitHub Copilot coding agent</strong></td>
<td>Ships both principals as two fields on one object: commits are authored by Copilot, with the human who started the task marked as the co-author. Neither identity disappears.</td>
</tr>
<tr>
<td><strong>Salesforce Agentforce</strong></td>
<td>Addresses authority, not attribution. Every agent is associated with a running user that determines what it can access. Whether standard audit fields name the agent is a separate, open question.</td>
</tr>
<tr>
<td><strong>ServiceNow</strong></td>
<td>Addresses authority by constraining it. Agents run as a dynamic user inheriting the invoking user's permissions, with role-masking limiting them to a subset of that user's roles. The intersection model, shipped and mandatory.</td>
</tr>
<tr>
<td><strong>Model Context Protocol</strong></td>
<td>Names both principals, and lists the work as unfinished. The spec forbids token passthrough, while the roadmap states that MCP authorization assumes a person with a browser at consent time, and calls for agents to be reachable through their own or a user-delegated identity.</td>
</tr>
</tbody></table>
<p>So the accurate scorecard is three platforms recording both principals today, two addressing the authority half, and the protocol maintainers naming both while the work is still in flight. Microsoft, Google and GitHub arrived at the same two-principal structure without coordinating on a standard, and the MCP maintainers independently named it as the gap to close. Four arrivals at one structure suggests the distinction is being forced by the problem rather than chosen as a fashion.</p>
<h2>Agent permissions are an intersection, not an inheritance</h2>
<p>Once agents are identifiable principals, a second assumption breaks: <em>if I can do it, should every agent I use also be able to do it?</em></p>
<p>Clearly not. A chief revenue officer can view every opportunity, change ownership, approve discounts, delete records, and export customer data. A pipeline-analysis agent invoked by that executive needs to read opportunities, update a few fields, and create tasks. Nothing else.</p>
<p>So the mental model isn't <code>agent permissions = user permissions</code>. It's closer to:</p>
<pre><code class="language-plaintext">effective permissions = user authority ∩ agent permissions ∩ workflow policy
</code></pre>
<p>An intersection, not an inheritance: three constraints that all have to permit an action, rather than one grant flowing downhill.</p>
<p>This isn't hypothetical. ServiceNow ships it: agents run as a "Dynamic user" which inherits the permissions of the invoking user, and role-masking minimizes the roles an agent can execute to a subset of the invoking user's roles. That's the invoking user's authority intersected with an agent-specific grant, and on current releases it's a required configuration, not advisory.</p>
<p>There's a broader shift hiding in this. Traditional role-based access control asks <em>what can this user do?</em> Agentic systems have to ask something richer: <em>what can this agent do, under this user's authority, through this tool, to this resource, in this context, right now?</em> That's a policy problem, and the policy cannot live inside the agent, because a prompt-shaped guardrail is a suggestion. Rules that live in the layer the agent has to query hold; rules that live in the prompt are one clever injection away from a leak.</p>
<h2>Why MCP authorization is now an agent identity problem</h2>
<p>The Model Context Protocol is becoming a common interface between agents and enterprise tools, which makes it where identity assumptions get tested. An agent might soon execute a chain like <code>agent -&gt; MCP server -&gt; CRM -&gt; billing system -&gt; another agent</code>.</p>
<p>The naive implementation propagates a user's bearer token down that whole chain. The specification forbids it, in normative language: clients must not send tokens to an MCP server other than ones issued by that server's authorization server, and servers must only accept tokens valid for their own resources. Tokens have to be validated as issued specifically for that server as the intended audience (RFC 8707).</p>
<p>Audience-binding is a good rule. It solves the confused-deputy problem, where a service with broad permissions is tricked into using them on a caller's behalf. It does not solve the identity problem, and the maintainers say so. Their roadmap is unusually direct: MCP authorization assumes a person with a browser at consent time, while increasingly the caller is an agent, a cloud workload with its own identity, acting for a user who isn't present, or spawning sub-agents that should get narrower authority than their parent. They call for "an opinionated way for MCP servers to be reached by agents through their own identity or a user-delegated identity."</p>
<p>That's both principals, named by the people who maintain the protocol, listed as unfinished work.</p>
<p>The practical failure is familiar to anyone who has wired one up against real data. Row-level security is the database rule that decides which rows a given user is allowed to see. Skip identity propagation and it silently stops applying, because the server never passed the calling user's identity through, so every caller sees everything. MCP doesn't eliminate the identity problem. It makes solving it unavoidable.</p>
<h2>From audit log to action graph</h2>
<p>Traditional audit logs record a fact: <em>Alex changed field X from A to B at 14:32.</em> One actor, one action, one timestamp.</p>
<p>That shape can't hold an agent's work. For an autonomous action, the questions that matter form a chain: Who triggered this? Which agent decided to act? What context did it use? Which policy authorized it? Was human approval required? Which tool did it invoke? What did it change? What happened as a result?</p>
<p>Answer those and you no longer have a log. You have a graph, with nodes for principals, agents, policies and tools, and edges for delegation and causation. This is where agent observability stops being a debugging convenience and becomes the accountability record.</p>
<p>The closest thing shipping today is GitHub's commit trail: Copilot is the author, the delegating human is the co-author, the commits are signed so they appear as "Verified," and each commit message links to the agent session logs. Actor, authority, integrity and provenance: four facts on one object, in a system nobody would describe as an identity platform.</p>
<h2>Which agents do we employ?</h2>
<p>So the question enterprises need to answer isn't <em>which AI agents do we allow?</em> It's: <strong>which agents do we employ, who is responsible for them, what authority have we delegated to them, and can we reconstruct every consequential action they take?</strong></p>
<p>We spent decades building identity systems on the assumption that meaningful business actions trace back to a human. Agents break that assumption by adding a second principal the schema never had room for. Getting this right means knowing more than which model generated a response. It means knowing who asked, which agent acted, under whose authority, what it was permitted to do, what it did, and why. That's what accountability looks like when humans and agents work the same jobs.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/ai-agent-identity?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=ai-agent-identity"><em>RevOS blog</em></a><em>.</em></p>
<p>Want to see this on your own revenue data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=ai-agent-identity">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[The Best Way to Structure Data for AI Agents]]></title><description><![CDATA[Semantic models, knowledge graphs, RAG, markdown or open formats? A practical comparison of 5 ways to structure data so AI agents get it right.]]></description><link>https://revosai.hashnode.dev/the-best-way-to-structure-data-for-ai-agents</link><guid isPermaLink="true">https://revosai.hashnode.dev/the-best-way-to-structure-data-for-ai-agents</guid><category><![CDATA[AI]]></category><category><![CDATA[RAG ]]></category><category><![CDATA[knowledge graph]]></category><category><![CDATA[dataengineering]]></category><category><![CDATA[llm]]></category><category><![CDATA[semanticlayer]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Wed, 14 Oct 2026 10:53:50 GMT</pubDate><content:encoded><![CDATA[<p>Ask five vendors how to get your data ready for an AI agent, and you'll get five different answers, and every one of them will happen to be whatever that vendor sells. The graph-database company says knowledge graph. The vector-database company says RAG. The semantic-layer company says semantic model. None of them is lying, exactly. Each one is describing the one tool in their own box.</p>
<p>The honest answer is that <strong>there is no single best way to structure data for an AI agent.</strong> Five real approaches are in production use today: semantic models, ontologies and knowledge graphs, retrieval-augmented generation (RAG), plain markdown files searched with grep, and open knowledge formats. Each one solves a different failure mode. Pick the wrong one for your question, and the agent doesn't fail loudly. It fails quietly, returning a fluent, confident, wrong answer, because the model was never the bottleneck. The data it was handed was.</p>
<p>This guide walks through all five, with the evidence for when each one works, so you can match the structure to the question instead of the vendor pitch.</p>
<h2>What "structuring data for AI agents" means</h2>
<p>Structuring data for an AI agent means organizing information so the agent can find the right fact, definition, or document reliably. The alternative is guessing from raw, unlabeled data and getting it wrong in a way that sounds right. Enterprise AI agents don't fail because the underlying model is weak. They fail because nobody told the agent what "active customer" means, or where the answer to a specific question lives.</p>
<p>This is a data problem before it's a prompting problem. A model handed a clean, governed definition of a metric will use it. A model handed a pile of raw tables and no context will invent a plausible-sounding calculation instead, and you won't find out until someone checks the number in a meeting.</p>
<h2>The five ways to structure data for an AI agent</h2>
<h3>1. Semantic models</h3>
<p>A semantic model (or semantic layer) defines your business metrics and entities once: "monthly recurring revenue," "active customer," "churn rate," with the exact tables, joins, and filters behind each one. The agent queries the metric by name instead of writing SQL against raw tables from scratch.</p>
<p>This is the highest-leverage fix for a specific, common failure: an agent guessing at a business definition and getting a number that sounds right but isn't. In dbt Labs' 2026 benchmark, agents querying a semantic model hit 98.2%-100% accuracy on a set of business questions, against 84.1%-90.0% for the same models writing raw text-to-SQL against the full schema. The same benchmark also compared today's models to a 2023-era model doing raw text-to-SQL, and found accuracy nearly doubled over that 2.5-year gap, from 32.7% to 64.5%. That's real model progress. But even the best 2026 model still trailed the semantic-model number. That's the more direct evidence: the gap between a wrong query and a right one comes from what the agent is grounded against, not from how capable the underlying model is.</p>
<p>Semantic models are the right call when the question is a <strong>recurring business metric</strong> that many tools and many agents will ask about repeatedly, where "everyone gets the same number" matters. They're the wrong call for a one-off question about a single document, or for connecting facts across entities the model was never designed to relate.</p>
<p>A semantic model also earns its keep in a way the other four approaches don't automatically match: define the metric once, and any AI agent can query it through MCP (the Model Context Protocol, an open standard for connecting agents to data sources), instead of every team building its own bespoke retrieval or graph layer to answer the same question. That turns the semantic model from a one-off project into shared infrastructure: a governed layer other agents can read from directly, rather than a definition locked inside one team's dashboard.</p>
<p>You don't need a specific vendor to get this. dbt and Cube will both get you a semantic layer. What matters more than which tool you pick is treating the metric definition as the thing worth getting right once.</p>
<h3>2. Ontologies and knowledge graphs</h3>
<p>A knowledge graph stores entities (people, accounts, products, contracts) and the explicit relationships between them, instead of flat tables or blocks of text. An ontology is the schema that defines what those entities and relationships are allowed to mean, so the graph stays consistent as it grows. Together, they let an agent traverse connections that a keyword or embedding match would miss entirely, such as "which accounts does this contact influence, and which of those accounts churned within six months of a support escalation?"</p>
<p>This is where GraphRAG earns its name: retrieval that queries a knowledge graph, plus generated summaries of clusters of related entities, instead of a flat vector index. Microsoft's 2024 research found GraphRAG held a 72% win rate on comprehensiveness and a 62% win rate on diversity over plain vector RAG. Its top-level summaries also needed over 97% fewer tokens than summarizing the source text directly. A separate, independent 2025 systematic evaluation of RAG versus GraphRAG found that adding selection and integration strategies on top of graph retrieval improved the best baseline by 1.1% to 6.4% on a multi-hop reasoning benchmark. That's a real but more modest gain than the headline GraphRAG numbers alone suggest, and a useful reminder that the retrieval technique matters as much as the graph itself.</p>
<p>Knowledge graphs cost more to build and maintain than the other four approaches. Someone has to model the entities and relationships, and keep the ontology honest as the business changes. That cost is worth paying when the questions genuinely require multi-hop reasoning across connected entities. It's overkill for a question that boils down to "look up this one fact."</p>
<h3>3. RAG (retrieval-augmented generation)</h3>
<p>RAG retrieves the most relevant chunks of text, usually by embedding similarity in a vector database, and hands them to the model as context before it answers. It's the fastest approach to stand up: chunk your documents, embed them, index them, and you have a working system in an afternoon.</p>
<p>RAG is the right default for <strong>fact lookup across a large, loosely structured document set</strong>: contracts, support tickets, product docs, meeting notes. It's the wrong tool when the answer requires connecting several facts across different documents (that's the knowledge-graph case above), or when the "fact" is a governed metric that should have one certified answer everywhere (that's the semantic-model case).</p>
<p>There's also a subtler trap: more retrieved context is not automatically better context. 2025 research from Chroma, testing 18 frontier models including GPT-4.1, Claude Opus 4, and Gemini 2.5, found that accuracy degrades non-uniformly as input length grows. Even a single distractor passage measurably hurt performance relative to a cleaner baseline. Models sometimes did <em>worse</em> on logically well-structured long context than on the same information shuffled. The finding has been corroborated widely enough that it's a fair rule of thumb: precision in what you retrieve beats volume, every time.</p>
<p>Some teams get real gains combining approaches: retrieving with a vector index, then using graph relationships to check or expand the answer. AWS's 2024 case study with Lettria reported up to 35% improvement in answer precision when graph-based retrieval was layered on top of vector RAG, evaluated across finance, healthcare, aeronautics, and legal use cases.</p>
<h3>4. Plain markdown + grep</h3>
<p>The least glamorous option, and the one no infrastructure vendor will ever recommend to you, because none of them sell it: put your data in plain markdown files, organized sensibly, and let the agent search them with grep or another full-text tool. No embeddings, no vector database, no graph to maintain.</p>
<p>This works better than it sounds for a <strong>small, well-organized internal corpus</strong>: think hundreds of files, not millions. Coding agents already do this constantly. A well-structured repository of markdown docs, read directly by an agent with a file-search tool, is often faster to build and easier to reason about than standing up retrieval infrastructure for a corpus that would fit on a laptop. It's the same instinct behind emerging patterns like <code>llms.txt</code> and skill-file conventions: plain, greppable text, organized by a human who knows the content, beats a half-tuned vector index over the same material.</p>
<p>There's a maintenance upside here that's easy to undervalue. Markdown files live in version control like everything else you write. Every change is a diff a human can read, review, and revert, with no embedding pipeline to rerun, no index to rebuild, no vector database to keep in sync with the source of truth.</p>
<p>The approach breaks down exactly where you'd expect: once the corpus gets large enough, or the phrasing gap between a query and the right document gets wide enough, that keyword matching starts missing things a semantic or graph-based search would catch. That's the signal to graduate to RAG or a knowledge graph, not a reason to skip markdown plus grep as a legitimate starting point.</p>
<h3>5. Open knowledge formats</h3>
<p>Open knowledge formats, such as schema.org, JSON-LD (JSON for Linking Data), and RDF (Resource Description Framework), structure data using a shared, public vocabulary instead of a format only your own systems understand. Where the first four approaches structure data for <em>your</em> agents to read, open formats matter when the data needs to be readable by <strong>agents you don't control</strong>: a customer's AI assistant checking your product's pricing, a search engine's AI Overview summarizing your documentation, or a partner's agent pulling structured facts from your public site.</p>
<p>This is a different job from the other four, and it's easy to conflate them. A semantic model, knowledge graph, or RAG index is <em>internal</em> infrastructure serving your own agents. Open formats are a <em>publishing</em> choice, closer to how you already mark up a webpage for search engines, except the audience reading that markup increasingly includes an AI agent instead of only a crawler. If your data only needs to serve your own team's agents, this is the one approach on the list you can reasonably skip.</p>
<h2>The five approaches at a glance</h2>
<table>
<thead>
<tr>
<th>Approach</th>
<th>Best for</th>
<th>Setup cost</th>
<th>Maintenance</th>
<th>Sharpest weakness</th>
</tr>
</thead>
<tbody><tr>
<td>Semantic model</td>
<td>Governed business metrics, repeated questions</td>
<td>Medium: model the metrics once</td>
<td>Medium: update as metrics evolve</td>
<td>Doesn't help with unstructured documents</td>
</tr>
<tr>
<td>Ontology / knowledge graph</td>
<td>Multi-hop reasoning across connected entities</td>
<td>High: model entities and relationships</td>
<td>High: keep the ontology honest</td>
<td>Expensive for simple lookup questions</td>
</tr>
<tr>
<td>RAG (vector search)</td>
<td>Fact lookup across a large, loosely structured corpus</td>
<td>Low: chunk, embed, index</td>
<td>Low to medium: re-index as content changes</td>
<td>More context isn't automatically more accurate</td>
</tr>
<tr>
<td>Plain markdown + grep</td>
<td>Small, well-organized internal corpus</td>
<td>Very low: organize files sensibly</td>
<td>Low: no infrastructure to run</td>
<td>Breaks down as the corpus grows or gets ambiguous</td>
</tr>
<tr>
<td>Open formats (schema.org, JSON-LD)</td>
<td>Data read by agents you don't control</td>
<td>Low to medium: markup your public content</td>
<td>Low: mostly set-and-forget</td>
<td>Doesn't structure data for your own internal agents</td>
</tr>
</tbody></table>
<h2>Which one should you use?</h2>
<p>Match the structure to the question, not the vendor pitch. In practice, that means asking what kind of question the agent needs to answer:</p>
<ul>
<li><p><strong>"What's our [metric]?"</strong> a recurring, governed business number. Use a <strong>semantic model</strong>.</p>
</li>
<li><p><strong>"How does X connect to Y, and what does that chain imply?"</strong> multi-hop reasoning across entities. Use an <strong>ontology or knowledge graph</strong>, optionally with GraphRAG-style retrieval.</p>
</li>
<li><p><strong>"What does this document say about...?"</strong> fact lookup across a large corpus you didn't write by hand. Use <strong>RAG</strong>.</p>
</li>
<li><p><strong>"What's our process for...?"</strong> a corpus small enough that you know roughly where the answer lives. <strong>Plain markdown plus grep</strong> is often faster to build and equally reliable.</p>
</li>
<li><p><strong>"Can an agent I don't control read this?"</strong> a partner's, customer's, or a search engine's AI. Use <strong>open formats</strong>.</p>
</li>
</ul>
<p>Most production systems combine two or three of these rather than picking exactly one: a semantic model for metrics, RAG for contracts and support tickets, and grep-searchable internal docs for team runbooks, all read by the same agent. The mistake isn't picking one approach. It's assuming one approach has to cover every question.</p>
<h2>How this plays out in practice</h2>
<p>Take a Revenue Operations team building one agent to help with renewals. In a single conversation, that agent might field five different kinds of questions, and each one wants a different structure behind it.</p>
<p>"What's this account's net revenue retention?" is a governed metric with one correct calculation. The agent should query a <strong>semantic model</strong>, not write its own SQL against raw subscription tables and hope it matches finance's number.</p>
<p>"Who at Acme Corp reports to whom, and which of them also sits on the renewal decision?" is a multi-hop question across people, roles, and accounts. That's a <strong>knowledge graph</strong> question. A flat table or a text search won't trace the reporting chain.</p>
<p>"What did the contract say about the renewal notice period?" is one fact, buried in one document, out of thousands of contracts. <strong>RAG</strong> retrieves the relevant clause without anyone having to read every file.</p>
<p>"What's our internal playbook for a renewal at risk?" points to a few dozen well-organized runbook documents the team wrote and knows by heart. <strong>Plain markdown plus grep</strong> finds the right one in milliseconds, with zero infrastructure to maintain.</p>
<p>"Does our public pricing page make sense to the customer's own AI assistant?" is an agent-you-don't-control question. That's the <strong>open-format</strong> case.</p>
<p>No single approach on this list answers all five. That's the real argument for treating "how do I structure my data for AI agents" as a portfolio decision, not a one-time architecture choice.</p>
<p>The migration path tends to run in one direction. Teams start with markdown plus grep because it's the fastest thing that works. They move pieces of it to RAG once the corpus outgrows keyword search. They add a knowledge graph only once they hit a specific class of question, usually a multi-hop one, that RAG keeps getting wrong. Few teams start with a knowledge graph on day one, and that's a reasonable default: build the structure your current questions require, and add more only when a real question exposes the gap.</p>
<h2>Context engineering vs. prompt engineering</h2>
<p>Everything above is an exercise in what's now being called <strong>context engineering</strong>: deciding what information reaches the model's context window, in what form, and how much of it. That's distinct from <em>prompt</em> engineering, which is how you phrase the instructions in a single message. The distinction matters because a perfectly worded prompt can't fix a model that was handed the wrong facts, or too many of them.</p>
<p>However you structure your data (semantic model, knowledge graph, RAG, or a markdown file) the same discipline applies. Give the agent exactly the facts it needs to answer the question, not everything you have.</p>
<h2>Conclusion</h2>
<p>Five real approaches, five different jobs. A semantic model for governed metrics. A knowledge graph for multi-hop reasoning. RAG for fact lookup across a big corpus. Plain markdown and grep for a small one. Open formats for the agents you don't control. The vendors selling each piece will tell you theirs is the answer. It usually isn't, not on its own. Start from the question your agent needs to answer, and the right structure follows from that, not from whichever infrastructure happens to be easiest to sell you.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/structuring-data-for-ai-agents?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=structuring-data-for-ai-agents"><em>RevOS blog</em></a><em>.</em></p>
<p>Want to see this on your own revenue data? <a href="https://try.revos.ai/meetings/renat/revos-demo?utm_source=hashnode&amp;utm_medium=syndication&amp;utm_campaign=structuring-data-for-ai-agents">Book a RevOS demo</a>.</p>
]]></content:encoded></item><item><title><![CDATA[AI Trends 2026: Self-Service BI Is Becoming Agentic]]></title><description><![CDATA[Why governed context, not a smarter model, is what makes AI analytics trustworthy. Anthropic hit 95% accuracy with a semantic layer, 21% without.]]></description><link>https://revosai.hashnode.dev/ai-trends-2026-self-service-bi-is-becoming-agentic</link><guid isPermaLink="true">https://revosai.hashnode.dev/ai-trends-2026-self-service-bi-is-becoming-agentic</guid><category><![CDATA[data-engineering]]></category><category><![CDATA[AI]]></category><category><![CDATA[llm]]></category><category><![CDATA[mcp]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Thu, 08 Oct 2026 12:38:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ac4cb3e18ede81f506a2be5/03e6f587-fbc8-4c47-9d3b-aec2158c92d7.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The way people get answers out of company data is changing faster than the data stacks underneath them. For twenty years the answer to "why did that number move?" was a dashboard someone built in advance. In 2026, increasingly, the answer is an agent that goes and finds out.</p>
<p>Among the AI trends 2026 has surfaced, that is the one worth paying attention to. Not "companies are using more AI" (they are) but something more specific: <strong>self-service business intelligence is becoming agentic</strong>, and the constraint on whether it works has moved from the model to the data foundation underneath it.</p>
<p>The adoption numbers are already there. According to Google Cloud's ROI of AI Report, 52% of executives report their organizations are deploying AI agents in production, and 88% of agentic AI early adopters are already seeing positive ROI. What those numbers hide is how much of the work is data architecture rather than prompting. To build a trustworthy modern data strategy for the age of AI, you have to change how machines get meaning out of your warehouse, not just how they get access to it.</p>
<h2>The four generations of self-service analytics</h2>
<p>It helps to see where agentic analytics sits in a longer arc. Self-service BI has been reinvented roughly every decade, and each generation moved the work around rather than eliminating it.</p>
<table>
<thead>
<tr>
<th>Generation</th>
<th>Interface</th>
<th>Who does the thinking</th>
</tr>
</thead>
<tbody><tr>
<td><strong>1. Dashboards</strong></td>
<td>Pre-built reports</td>
<td>Humans anticipate the question and build the answer in advance</td>
</tr>
<tr>
<td><strong>2. Self-service BI</strong></td>
<td>Filters, dimensions, drag-and-drop</td>
<td>Business users slice pre-modelled data themselves</td>
</tr>
<tr>
<td><strong>3. Natural-language analytics</strong></td>
<td>A chat box over the warehouse</td>
<td>An LLM turns a sentence into SQL; the user hopes it is right</td>
</tr>
<tr>
<td><strong>4. Agentic analytics</strong></td>
<td>An agent with tools and governed context</td>
<td>The agent investigates, validates, and follows up on its own</td>
</tr>
</tbody></table>
<p>The fourth generation is not a nicer chat box. The difference is that an agent doesn't just answer the question you asked, it runs the next three queries a good analyst would have run, checks its own result, and tells you what it found.</p>
<p>The infrastructure for that is already being built at scale. According to customer usage data compiled by Databricks, multi-agent workflows have grown by 327% year over year, and supervisor agents coordinating networks of specialized subagents now account for 37% of all agent usage.</p>
<h2>The next generation of self-service BI isn't another dashboard</h2>
<p>The promise of self-service BI was always straightforward: let business users answer their own questions without waiting on the data team.</p>
<p>The interface kept getting easier. The underlying limitation never moved. Someone still had to anticipate the question, model the data, build the dashboard, define the metrics, and teach the user where to look. "Self-service" in practice meant "self-service, within the boundaries of what a data engineer already imagined you'd ask."</p>
<p>Agents change that equation. Instead of navigating dashboards, a sales leader can ask:</p>
<blockquote>
<p>Why did expansion ARR drop in DACH this quarter? Which accounts caused it? What changed in their product usage in the months before the contraction?</p>
</blockquote>
<p>No dashboard answers that question, because it isn't one question, it's an investigation. An agent can run that investigation dynamically: pull the metric, decompose it by account, join in product usage, look at the period before the drop, and come back with a narrative.</p>
<p>But only if it understands what "expansion ARR," "DACH," "account," and "product usage" mean inside <em>your</em> business. That is the whole problem.</p>
<h2>Why raw text-to-SQL breaks agentic analytics</h2>
<p>When teams build their first internal analytics agent, the instinct is to connect it straight to the warehouse: hand the model database credentials, write a prompt, and let it generate SQL.</p>
<p>This is where most projects stall. Direct text-to-SQL has three systemic weaknesses:</p>
<ol>
<li><p><strong>Schema complexity.</strong> A typical enterprise warehouse has hundreds of tables, column names like <code>usr_act_v2</code>, and three fields that all look like they might be revenue. A model guessing at what those mean will guess wrong often enough to matter.</p>
</li>
<li><p><strong>No metric governance.</strong> If three agents query raw tables for "Monthly Recurring Revenue," you get three SQL statements and three different numbers, with no way to tell which one leadership should act on.</p>
</li>
<li><p><strong>No safety boundary.</strong> Raw SQL access exposes every table the credential can reach, including the ones nobody intended an agent to see.</p>
</li>
</ol>
<p>Databricks' customer data points the same direction: a lack of structural control is the single biggest bottleneck to shipping AI. Teams that implement governance and security tooling ship 12x more production deployments, and standardized evaluation tooling yields 6x more.</p>
<p>The failure mode isn't that the agent can't write SQL. Modern models write excellent SQL. The failure mode is that it doesn't know what your business means.</p>
<h2>Anthropic reached the same conclusion in production</h2>
<p>The strongest evidence for this isn't a vendor benchmark, it's Anthropic publishing its own internal architecture.</p>
<p>In <em>How Anthropic enables self-service data analytics with Claude</em> (June 3, 2026), Anthropic's data team reports that <strong>95% of business analytics queries are now automated through Claude, at roughly 95% aggregate accuracy</strong>, and close to 99% in some domains. The headline result is impressive. The explanation is the useful part.</p>
<p>Anthropic is explicit that this is not a model story. Analytics accuracy, in their framing, is a <strong>context and verification problem, not a code-generation problem</strong>. The same Claude that reaches 95% with the right scaffolding never got above <strong>21%</strong> on their internal evals without it.</p>
<p>Their agents don't start by improvising SQL. The stack they describe has four layers:</p>
<ul>
<li><p><strong>Data foundations:</strong> the warehouse itself: models, transformations, tests, and the metadata that describes them.</p>
</li>
<li><p><strong>Sources of truth:</strong> a human-curated semantic layer of metric and dimension definitions, plus lineage graphs and business-context knowledge. Notably, they found that auto-generating metric definitions from raw tables and query logs <em>didn't</em> work: it reproduced the ambiguity instead of removing it.</p>
</li>
<li><p><strong>Skills:</strong> procedural knowledge in markdown telling the agent which sources to consult, in what order, and what a finished answer looks like. That skill set is synced to multiple surfaces and served as resources over MCP.</p>
</li>
<li><p><strong>Validation:</strong> offline evals, ablation testing, and online monitoring with adversarial review.</p>
</li>
</ul>
<p>Two details matter most for anyone building this. First, the semantic layer is the <strong>required first path</strong>: when a question maps to a defined metric, the agent calls that definition and gets the same number every other surface in the company produces. Raw table access is the fallback, not the default. Second, the same governed context is exposed <strong>across agent surfaces</strong>, so the answer doesn't change depending on whether someone asks in Slack, in an IDE, or in a chat window.</p>
<p>And they are honest about the limits. This architecture reduces failures; it doesn't eliminate them. Anthropic keeps adversarial review running precisely because silent failures still happen, and reports that without active maintenance accuracy drifts from 95% back toward 65%.</p>
<p>Better models help. Better context architecture is what makes self-service analytics trustworthy.</p>
<h2>A governed semantic layer gives agents shared meaning</h2>
<p>A semantic layer is the translation between how data is stored and how the business talks. It maps raw tables to defined business concepts: instead of querying <code>billing_ledgers_final</code>, the agent queries an entity called <code>Revenue</code> and asks for <code>MRR</code> broken down by <code>acquisition_channel</code>.</p>
<p>Combining that with agent access gives agents something raw warehouse credentials cannot: a shared definition of customers, revenue, churn, pipeline, and every other concept they need in order to reason correctly.</p>
<p>The measurable effect is large. A general-purpose model writing SQL against an unmapped schema fails roughly half the time, Snowflake's internal benchmarks put GPT-4o at about <strong>51% text-to-SQL accuracy</strong> on raw schemas. Grounding the same model in a governed semantic model lifts accuracy past 90%.</p>
<p>That is the same conclusion Anthropic reached, arrived at from a different direction: the governed definition is what turns a plausible answer into a correct one.</p>
<h2>MCP is becoming the interface between agents and business data</h2>
<p>Dashboards were the interface between people and business data. <strong>MCP is becoming the interface between agents and business data.</strong></p>
<p>The Model Context Protocol (MCP), released as an open standard by Anthropic, is the emerging connection layer of the AI ecosystem, the USB-C port for agent tooling. Rather than writing bespoke integration code for every model and every tool, you run a reusable MCP server. The agent connects, discovers what's available (metrics, schemas, reports) and calls it. The same server works for Claude, for IDEs like Cursor, and for custom orchestrators.</p>
<p>Standardizing that interface pays off quickly. In its 2026 Business Trends Report, Google Cloud describes how pulp manufacturer Suzano cut query times by 95% for 50,000 employees by deploying standardized semantic data interfaces.</p>
<p>But MCP on its own doesn't make data trustworthy. <strong>It solves connectivity, not meaning.</strong> An MCP server pointed at raw tables is a faster route to the same wrong answers. The quality of what comes back still depends entirely on the governed context sitting behind it, which is exactly where the interesting engineering is.</p>
<h2>People and agents working from the same definitions</h2>
<p>None of this makes dashboards, analysts, or data teams disappear. It changes the collaboration model.</p>
<p>People define and govern what the business means, what counts as an account, how expansion ARR is calculated, which source system wins when two disagree. Agents perform the continuous investigation humans don't have time for. Both work from the same underlying definitions, and the semantic layer becomes the contract between them.</p>
<p>This matters more than it sounds, because of something Anthropic observes directly: once agents become the consumers of the data model, the person asking the question often can't validate the answer themselves. The reader of a dashboard could sanity-check a number against the chart next to it. The reader of an agent's paragraph cannot. Governance stops being a compliance concern and becomes the thing that makes the output usable at all.</p>
<h2>From a modern data stack to an agent-ready data foundation</h2>
<p>The usual framing of this problem is vendor sprawl, ingestion here, warehouse there, transformation, semantics, and a custom API on top. That framing misses the point.</p>
<p>The problem isn't that there are too many vendors. It's that traditional data stacks were designed for <strong>humans consuming dashboards</strong>, not for <strong>agents consuming context</strong>. A human reading a report brings their own business knowledge to it. An agent has to be given that knowledge explicitly, in a form it can navigate, which is a requirement almost no stack was built to satisfy.</p>
<p>An agent-ready data foundation comes together in four moves:</p>
<ul>
<li><p><strong>Connect</strong> your data. Managed ingestion from many sources into a warehouse you control.</p>
</li>
<li><p><strong>Govern</strong> what it means. Define metrics, entities, and relationships once, version-controlled like code.</p>
</li>
<li><p><strong>Serve</strong> it to agents. Expose the governed model through a secure MCP server, so Claude, your IDE, and your own agents all read the same definitions.</p>
</li>
<li><p><strong>Learn</strong> continuously. Definitions, lineage, and skills evolve with the business instead of drifting away from it.</p>
</li>
</ul>
<p>The practical difference at query time: agents don't guess against raw schemas. They work from the same governed definitions your business already trusts, rather than inventing their own interpretation of the underlying tables, which removes one of the largest sources of analytics hallucination.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/ai-trends"><em>RevOS blog</em></a><em>.</em></p>
]]></content:encoded></item><item><title><![CDATA[Running Hermes Agent on Kubernetes: What Breaks, What Doesn't, and a Production-Safe Setup]]></title><description><![CDATA[No official Helm chart, root-at-init, single-writer state. What breaks running Hermes Agent on Kubernetes, plus a production-safe reference manifest.]]></description><link>https://revosai.hashnode.dev/running-hermes-agent-on-kubernetes-what-breaks-what-doesn-t-and-a-production-safe-setup</link><guid isPermaLink="true">https://revosai.hashnode.dev/running-hermes-agent-on-kubernetes-what-breaks-what-doesn-t-and-a-production-safe-setup</guid><category><![CDATA[ai agents]]></category><category><![CDATA[AI]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[Devops]]></category><dc:creator><![CDATA[RevOS_AI]]></dc:creator><pubDate>Tue, 06 Oct 2026 10:38:12 GMT</pubDate><content:encoded><![CDATA[<p>Hermes Agent is Nous Research's self-improving AI agent. It builds skills from experience, keeps persistent memory across sessions, and connects to Telegram, Discord, Slack, WhatsApp, and Signal out of the box. With 230k+ GitHub stars, plenty of teams now want to run it somewhere more durable than a laptop.</p>
<p>Kubernetes is the obvious destination and the least documented one. There's no official Helm chart. The container image's init sequence needs root in a way that collides with a standard restricted pod security context. Its state model assumes a single writer. And the reload story that works fine in a terminal has no equivalent your GitOps controller can call.</p>
<p>None of that is a reason to avoid Hermes on Kubernetes. It's a reason to know the constraints before you write the manifest. Below: what genuinely breaks, what only looks like it breaks, and a reference deployment to start from.</p>
<blockquote>
<p><strong>Tested against:</strong> Hermes Agent <code>v2026.8.27</code> · official image <code>nousresearch/hermes-agent</code> · Kubernetes 1.31+ · containerd 2.x. Hermes ships releases every few days. Before you copy anything below, check it against the version you're actually deploying, and pin that version.</p>
</blockquote>
<h2>Is there an official Helm chart for Hermes Agent?</h2>
<p>No. Nous Research's own documentation covers <code>install.sh</code>, Docker and Docker Compose, and Nix packages. Kubernetes never comes up as a deployment target. That gap is filled entirely by the community, and the three charts that fill it don't agree on much:</p>
<ul>
<li><p><strong>ultraworkers/hermes-agent-helm-chart:</strong> the most feature-complete option: renders a Deployment, PVC, Secret, Service, Ingress, and an Istio VirtualService, plus an "operator-ready" mode defining a <code>HermesTenant</code> CRD. It's also the only one that encodes the single-writer rule as a hard constraint.</p>
</li>
<li><p><strong>jyje/hermes-agent:</strong> listed on Artifact Hub as a verified publisher, distributed over an OCI registry, with multi-arch images and example ArgoCD manifests. It tracks upstream Hermes releases more closely than the other two.</p>
</li>
<li><p><strong>duyet/hermes-agent:</strong> the simplest of the three, splitting persistence into separate data and workspace volumes, with an optional Prometheus <code>ServiceMonitor</code>. Not a verified publisher, so read the templates before trusting the defaults.</p>
</li>
</ul>
<p>None of the three is backed by Nous Research. Read the templates end to end before you apply one, and expect to override the security context.</p>
<h2>Hermes Agent is stateful: define your persistence boundary first</h2>
<p>This is the decision everything else hangs off, so make it before you pick a chart.</p>
<p>Hermes keeps <strong>all</strong> of its mutable state (configuration, <code>MEMORY.md</code>, <code>USER.md</code>, session history in a local SQLite database, and every learned skill) under <code>HERMES_HOME</code>. In the official image that's the <code>/opt/data</code> volume, which the Docker docs call "the single source of truth for all Hermes state."</p>
<p>So the accurate invariant is not "Hermes can't scale." It's:</p>
<blockquote>
<p><strong>Treat each</strong> <code>HERMES_HOME</code> <strong>as a single-writer state domain.</strong></p>
</blockquote>
<p>You can run many Hermes instances in one cluster. What you must not do is put two active pods behind the same mutable state and assume Kubernetes has handed you horizontal scaling. Nothing arbitrates concurrent writes to that SQLite database and those Markdown files.</p>
<p>In practice, for any deployment with persistence enabled:</p>
<ul>
<li><p><code>replicaCount</code> stays at <strong>1</strong>.</p>
</li>
<li><p><code>strategy.type</code> must be <code>Recreate</code>, not <code>RollingUpdate</code>, a rolling update deliberately runs the old and new pod together, which is exactly the two-writer window to avoid.</p>
</li>
<li><p><code>ReadWriteOnce</code> is the sensible guardrail on the PVC. RWX isn't automatically unsafe (the invariant is one <em>active writer</em>, not one <em>mount</em>) but RWO enforces it at the storage layer instead of trusting your deployment config.</p>
</li>
</ul>
<p>Need Hermes for more than one team or tenant? One release per tenant, each with its own volume. Any chart that doesn't enforce this is a data-corruption risk waiting for a bad rollout.</p>
<h2>Why the official image fights <code>runAsNonRoot</code></h2>
<p>The common shorthand, "Hermes has to run as root," is wrong, and the precise version matters when you're arguing with a platform team about a Pod Security Standard exemption.</p>
<p>The official image uses <strong>s6-overlay</strong> as its init system. s6-overlay's <code>/init</code> runs as root so it can <code>chown</code> the volume on first boot, then drops to the <code>hermes</code> user via <code>s6-setuidgid</code> for the main program and all supervised services.</p>
<p>So the agent process itself does <em>not</em> run as root. Only the bootstrap does. But that's still enough to break a restricted security context: a pod spec with <code>runAsNonRoot: true</code> or a non-zero <code>runAsUser</code> blocks the sequence before the agent ever starts, and you get something close to:</p>
<pre><code class="language-plaintext">/package/admin/s6-overlay/libexec/preinit: fatal: /run belongs to uid 0 instead of 1000,
has insecure and/or unworkable permissions, and we're lacking the privileges to fix it.
s6-overlay-suexec: fatal: child failed with exit code 100
</code></pre>
<p>One detail worth getting right, because published examples routinely get it wrong: <strong>the</strong> <code>hermes</code> <strong>user is UID 10000, not 1000.</strong> Set <code>fsGroup: 1000</code> and the volume ends up owned by the wrong group.</p>
<p>A reasonable starting security context:</p>
<pre><code class="language-yaml">podSecurityContext:
  runAsUser: 0
  runAsNonRoot: false
  fsGroup: 10000
  fsGroupChangePolicy: OnRootMismatch
  seccompProfile:
    type: RuntimeDefault
securityContext:
  allowPrivilegeEscalation: true
  readOnlyRootFilesystem: false
  runAsNonRoot: false
  capabilities:
    drop: ["ALL"]
    add: ["CHOWN", "SETUID", "SETGID"]
</code></pre>
<p>That is meaningfully narrower than a privileged pod: every capability is dropped and only the ones the bootstrap needs come back. Treat the exact capability list as a <strong>starting point to verify against your image version</strong>, not a universal recipe. Start from <code>drop: ["ALL"]</code>, add back only what your logs prove necessary, and re-test on version bumps.</p>
<p>If your cluster enforces the <code>restricted</code> Pod Security Standard, this workload needs a namespace exemption. Forcing the official image to start non-root isn't a setting you've missed, it wasn't built for that.</p>
<h2>What Hermes can hot-reload, and what it can't</h2>
<p>The claim that Hermes has "no hot-reload" is false, and the real limitation is more interesting.</p>
<p>Hermes documents three reload commands: <code>/reload-mcp</code> (reload MCP servers from <code>config.yaml</code>), <code>/reload-skills</code> (re-scan for newly installed or removed skills), and <code>/reload</code> (reload <code>.env</code> variables into the running session).</p>
<p>The runtime can absolutely pick up new MCP servers and skills without a restart. The gap is the <em>interface</em>:</p>
<blockquote>
<p><strong>Hermes can hot-reload MCP servers and skills interactively, but doesn't expose the same lifecycle through its admin API.</strong></p>
</blockquote>
<p>That's the actual Kubernetes problem:</p>
<pre><code class="language-plaintext">ConfigMap updated -&gt; kubelet syncs file into the pod -&gt; no reconciliation hook -&gt; nothing happens
</code></pre>
<p>The file changes on disk. Nothing tells the process. Your options:</p>
<ol>
<li><p><strong>Restart the workload.</strong> <code>kubectl rollout restart deployment/hermes-agent</code>. Blunt but declarative, and with <code>Recreate</code> you're accepting a brief outage anyway. Wire a checksum annotation over the ConfigMap into the pod template so the rollout fires automatically on config change, the standard Helm <code>checksum/config</code> pattern.</p>
</li>
<li><p><strong>Drive the runtime reload path</strong> from a sidecar or an operator with a channel into the agent. Workable, but you're building the missing hook yourself.</p>
</li>
</ol>
<p>Until an HTTP reload endpoint exists upstream, option 1 with a config checksum is the pragmatic default.</p>
<h2>Resources, probes, and graceful shutdown</h2>
<p>Three things almost every Hermes-on-Kubernetes writeup omits.</p>
<p><strong>Resources.</strong> Nous Research's Docker documentation recommends a minimum of 1 GB memory and 1 CPU core, with 2-4 GB memory and 2 cores recommended. Browser automation (Playwright/Chromium) is the most memory-hungry feature, so budget above that range if the agent drives a browser. Set a memory <em>limit</em>, but consider leaving CPU unlimited, agent workloads are bursty, and CPU throttling shows up as mysteriously slow tool calls rather than a clean failure.</p>
<p><strong>Probes.</strong> The gateway listens on port <strong>8642</strong>. The Dockerfile ships <strong>no</strong> <code>HEALTHCHECK</code> <strong>and no</strong> <code>EXPOSE</code> instruction, so you're defining this yourself. A <code>tcpSocket</code> probe against 8642 is the portable choice. The one that matters most is the <code>startupProbe</code>: first boot does volume <code>chown</code> work and profile reconciliation, and a liveness probe with a short threshold will kill the pod mid-bootstrap and loop forever.</p>
<p><strong>Graceful shutdown.</strong> Hermes is stateful, so SIGTERM handling isn't academic. Give it room with <code>terminationGracePeriodSeconds: 30</code>, and test what actually happens to in-flight agent runs, SQLite session writes, and open gateway connections when a pod is evicted. Node upgrades and spot reclaims will do this to you eventually, and <code>Recreate</code> means no second pod is covering the gap.</p>
<h2>Two security boundaries, not one</h2>
<p>Most Kubernetes writeups on agents cover pod security and stop. For an agent that executes code, that's half the problem.</p>
<p><strong>Boundary 1, pod security.</strong> Root init, capabilities, seccomp, filesystem, service account. Covered above.</p>
<p><strong>Boundary 2, agent execution.</strong> What the model can actually run, and what it can reach. This is the one that should worry you more, because the pod <em>is</em> the blast radius.</p>
<p>Hermes has real defences here:</p>
<ul>
<li><p><strong>Credential filtering.</strong> <code>execute_code</code> blocks environment variables whose names contain <code>KEY</code>, <code>TOKEN</code>, <code>SECRET</code>, <code>PASSWORD</code>, <code>CREDENTIAL</code>, <code>PASSWD</code>, or <code>AUTH</code>. MCP stdio subprocesses receive only a short safe list of variables.</p>
</li>
<li><p><strong>The bypass is explicit.</strong> Variables declared by a skill or listed in <code>env_passthrough</code> skip those filters. That's the mechanism to audit.</p>
</li>
<li><p><strong>Approval checks are skipped in container backends.</strong> Hermes skips dangerous-command approval in the <code>docker</code>, <code>singularity</code>, <code>modal</code>, <code>daytona</code>, and <code>vercel_sandbox</code> backends, on the reasoning that "the container itself is the security boundary." In a Kubernetes pod that assumption is load-bearing: whatever your pod can reach, prompt-injected code can reach.</p>
</li>
<li><p><strong>SSRF protection exists, and is disableable.</strong> Web tools block RFC 1918 ranges and loopback by default. In a cluster, RFC 1918 <em>is</em> your service mesh, your databases, and the kubelet.</p>
</li>
</ul>
<p>Which leads to the control most often missing: <strong>default-deny egress.</strong> An agent that browses the web and calls tools is not a normal web app, and "what can this pod reach?" is a more consequential question than which Linux capabilities it holds. Start from deny-all and allow only what's needed:</p>
<pre><code class="language-yaml">apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: hermes-agent-egress
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/name: hermes-agent
  policyTypes: ["Egress"]
  egress:
    # DNS
    - to:
        - namespaceSelector:
            matchLabels:
              kubernetes.io/metadata.name: kube-system
          podSelector:
            matchLabels:
              k8s-app: kube-dns
      ports:
        - protocol: UDP
          port: 53
    # HTTPS to the internet, minus internal ranges
    - to:
        - ipBlock:
            cidr: 0.0.0.0/0
            except:
              - 10.0.0.0/8
              - 172.16.0.0/12
              - 192.168.0.0/16
              - 169.254.169.254/32   # cloud instance metadata
      ports:
        - protocol: TCP
          port: 443
</code></pre>
<p>Blocking <code>169.254.169.254</code> matters especially: on a node without IMDSv2 enforced, an agent that can reach instance metadata can often reach the node's IAM role.</p>
<p>On credentials: because the agent has terminal access, anything in its environment is potentially readable by it. On EKS, use IRSA or EKS Pod Identity rather than static access keys in a Secret. Elsewhere, External Secrets Operator, Vault, or Sealed Secrets all keep plaintext keys out of Git. And scope the IAM role tightly: the agent's permissions are the agent's capabilities.</p>
<h2>A minimal deployment that actually works</h2>
<p>Pinned, single-writer, probed, and resource-bounded. Adjust the storage class and image tag, and read it before you apply it.</p>
<pre><code class="language-yaml">apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: hermes-agent-data
spec:
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hermes-agent
  labels:
    app.kubernetes.io/name: hermes-agent
spec:
  replicas: 1
  strategy:
    type: Recreate          # never two writers on one HERMES_HOME
  selector:
    matchLabels:
      app.kubernetes.io/name: hermes-agent
  template:
    metadata:
      labels:
        app.kubernetes.io/name: hermes-agent
      annotations:
        checksum/config: "REPLACE_WITH_CONFIGMAP_CHECKSUM"
    spec:
      serviceAccountName: hermes-agent
      terminationGracePeriodSeconds: 30
      securityContext:
        runAsUser: 0
        runAsNonRoot: false
        fsGroup: 10000
        fsGroupChangePolicy: OnRootMismatch
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: hermes-agent
          image: nousresearch/hermes-agent:v2026.8.27   # pin it; never :latest
          args: ["gateway", "run"]
          ports:
            - name: gateway
              containerPort: 8642
          envFrom:
            - secretRef:
                name: hermes-agent-secrets
          securityContext:
            allowPrivilegeEscalation: true
            readOnlyRootFilesystem: false
            runAsNonRoot: false
            capabilities:
              drop: ["ALL"]
              add: ["CHOWN", "SETUID", "SETGID"]
          resources:
            requests:
              cpu: "500m"
              memory: 2Gi
            limits:
              memory: 4Gi
          startupProbe:
            tcpSocket:
              port: gateway
            periodSeconds: 5
            failureThreshold: 60
          readinessProbe:
            tcpSocket:
              port: gateway
            periodSeconds: 10
          livenessProbe:
            tcpSocket:
              port: gateway
            periodSeconds: 20
            failureThreshold: 3
          volumeMounts:
            - name: data
              mountPath: /opt/data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: hermes-agent-data
---
apiVersion: v1
kind: Service
metadata:
  name: hermes-agent
spec:
  selector:
    app.kubernetes.io/name: hermes-agent
  ports:
    - name: gateway
      port: 8642
      targetPort: gateway
</code></pre>
<p>Pair it with the NetworkPolicy above, a Secret (ideally rendered by External Secrets or Sealed Secrets rather than committed), and a ConfigMap for <code>config.yaml</code> if you're managing MCP servers declaratively.</p>
<h2>Production checklist</h2>
<ul>
<li><p>Image tag pinned to a specific release, never <code>:latest</code></p>
</li>
<li><p><code>replicas: 1</code> and <code>strategy.type: Recreate</code>, with one <code>HERMES_HOME</code> per instance</p>
</li>
<li><p>PVC is <code>ReadWriteOnce</code>, and the storage class supports that access mode</p>
</li>
<li><p><code>fsGroup: 10000</code> matches the image's <code>hermes</code> user</p>
</li>
<li><p>Capabilities start from <code>drop: ["ALL"]</code>, with additions verified against your image version</p>
</li>
<li><p>Namespace exemption in place if you enforce the <code>restricted</code> Pod Security Standard</p>
</li>
<li><p><code>startupProbe</code> generous enough to survive first-boot volume work</p>
</li>
<li><p><code>terminationGracePeriodSeconds</code> set, and eviction behaviour tested against in-flight runs</p>
</li>
<li><p>Memory limit sized for browser automation if skills use it</p>
</li>
<li><p>Default-deny egress NetworkPolicy, with instance metadata (<code>169.254.169.254</code>) blocked</p>
</li>
<li><p>No static cloud credentials in Secrets, use IRSA / Pod Identity / Vault / External Secrets</p>
</li>
<li><p><code>env_passthrough</code> and skill-declared variables audited, they bypass credential filtering</p>
</li>
<li><p>Config changes trigger a rollout (checksum annotation) or a deliberate reload path</p>
</li>
</ul>
<h2>Where this connects to governed data</h2>
<p>Everything above keeps Hermes Agent alive and contained. None of it says whether the answers it produces are correct, that depends on what it's allowed to read and how well-defined that data is. The same discipline that makes an agent's infrastructure trustworthy (scoped permissions, no unmanaged state, changes that go through review) reappears in agentic data engineering, where an agent's output earns trust through layered checks rather than raw model capability. Point an agent like this at real business data instead of chat platforms and a semantic layer is what stops it guessing at what "revenue" or "active customer" means.</p>
<hr />
<p><em>This article was originally published on the</em> <a href="https://www.revos.ai/blog/hermes-agent-kubernetes"><em>RevOS blog</em></a><em>.</em></p>
]]></content:encoded></item></channel></rss>