
CEO & Co-founder of Visivo
AI-Ready Analytics Starts With a Semantic Layer
Most teams want AI to answer data questions. The blocker is rarely the model; it is the absence of governed definitions the AI can rely on.

AI-ready analytics is mostly a definitions problem, not a model problem. When teams say they want AI to answer their data questions and it keeps producing confident nonsense, the blocker is almost never the intelligence of the model. It is the absence of governed, enforced definitions for the AI to reason over. A semantic layer is the substrate that supplies those definitions, and getting it right is the practical first step toward analytics an AI can actually be trusted with.
This post is about the organizational playbook, not the benchmarks. I want to make the case for why "AI-ready" is a governance achievement, explain the failure mode that sinks most semantic-layer projects, and lay out a pragmatic path to get there. We have covered what GenBI is and how text-to-SQL stacks up against a semantic layer elsewhere; this is the adoption story.
The AI gap is a definitions gap
Picture the demo everyone has seen: someone types "what was revenue last quarter?" into a chat box and a tidy number comes back. It works in the demo. It falls apart in production, and the reason is instructive.
The model did not fail because it is not smart enough. It failed because "revenue" was never defined. Does it net out refunds? Does it include the trial conversions that finance excludes? Is "last quarter" the fiscal quarter or the calendar one? The model had to guess at all of it, and a guess that sounds authoritative is worse than no answer, because someone will act on it.
This is the AI gap, and it is a definitions gap. An AI pointed at a warehouse full of raw tables and a pile of ad-hoc dashboard SQL has no map of your business. It sees columns, not concepts. It can write syntactically valid SQL all day, but it cannot know that your company computes net revenue one specific way unless something tells it. A semantic layer is that something: the layer where "revenue," "active customer," and "churn" stop being open questions and become governed, named definitions. Close the definitions gap and the AI gap closes with it. Leave it open and no model, however capable, will save you.
Why most semantic-layer projects fail
Most semantic-layer projects fail for one reason: teams treat the layer as documentation rather than enforcement. This is the single most important idea in this post, so I will be blunt about it.
A documentation-style semantic layer is a wiki page, a data dictionary, a Confluence doc titled "Metric Definitions." It says, in prose, that revenue nets out refunds. It is well-intentioned and completely toothless. Nothing stops an analyst from writing a dashboard that ignores it. Nothing stops a second team from defining revenue differently. The document describes the desired state; it does not produce it. Six months in, the doc is stale, the dashboards have drifted, and the project is quietly declared a disappointment.
The failure is not laziness. It is a category error. A definition that lives only as description has no causal relationship to the numbers people actually see. The moment the description and the reality can diverge, they will, because there is no mechanism holding them together. You have spent effort writing down the rules without building anything that follows them.
An enforced semantic layer is the opposite. The definition is not a description of how revenue should be computed. It is the only way revenue gets computed, because every chart, every self-serve query, and every AI answer is wired to reference the definition rather than re-derive it. The rule and the reality cannot drift, because they are the same artifact.
Enforcement, not documentation
The distinction between description and enforcement is the whole game, so it is worth making concrete what an enforcing layer actually enforces.
It enforces metric definitions. There is exactly one net_revenue, and anything that needs revenue references it. No copy-pasted SUM() in a chart, no second team's slightly different version.
It enforces joins and grain. Relations between models are defined once, so nobody fans out a join wrong and doubles the revenue by accident. The grain at which a metric is valid is part of the definition, not a thing each analyst has to remember.
It enforces permissions. Who can see which data is governed at the layer, not reimplemented in every dashboard and every AI integration separately.
It enforces reuse. Because the definition is the single source, reuse is the path of least resistance. The easy thing to do and the correct thing to do are the same thing.
When the layer enforces these, it stops being a passive map and becomes an active guardrail. The most valuable property of a real semantic layer is not that it makes the right answer available. It is that it makes the wrong answer hard to produce. That is what "governed" actually means, and it is exactly the property an AI integration needs, because an AI will cheerfully produce the wrong answer at scale unless the substrate underneath it forbids it.
Making metrics legible to both humans and models
A definition that enforces behavior is necessary but not sufficient. To be AI-ready, the definition also has to be legible: a model has to be able to read it and understand what it means. This is where the form of the definition matters.
A metric buried in a proprietary BI tool's metadata store is enforced, sort of, but it is opaque. The AI cannot read it, the analyst cannot diff it, and the only way to inspect it is to click through a UI. A metric defined as code is legible to everyone and everything at once:
models:
- name: orders
sql: "SELECT * FROM orders"
metrics:
- name: net_revenue
expression: "SUM(amount - refunds)"
description: "Recognized revenue, net of refunds. Finance-approved definition."
dimensions:
- name: order_quarter
expression: "DATE_TRUNC('quarter', created_at)"
That block does three jobs at once. It is the enforcement (the only place net_revenue is computed), it is the documentation (a human reads it and understands the business rule, including the description), and it is the AI context (a model reasoning over the project can read precisely what revenue means and which dimensions it can be sliced by). One artifact, three audiences, zero drift between them. When the definition, the documentation, and the AI's context are literally the same text, the question "is the AI working from the right definition?" answers itself.
This is the deeper reason metrics belong in a semantic layer rather than in every dashboard: not only to stop human drift, but to give every downstream consumer, the model included, a single legible truth to read.
A pragmatic path to AI-ready analytics
You do not get an AI-ready semantic layer by buying one and you do not get it by writing a definitions doc. You get it by building enforcement incrementally. Here is the path I would recommend.
Start with the metrics that cause arguments. Find the three or four numbers your org actually fights about (revenue, active users, churn) and define them as enforced code first. Do not boil the ocean. The disputed metrics are where enforcement pays for itself immediately.
Wire the dashboards to reference, not re-derive. A definition is only enforcing if everything reads from it. Migrate your most-viewed dashboards to reference the governed metrics so the single source is actually single.
Put the definitions in version control and CI. Now a change to net_revenue is a pull request a human reviews, the diff is in your history, and a test can catch a broken definition before it ships. This is what makes the layer durable instead of decaying.
Then, and only then, point AI at it. Once the definitions are enforced, legible, and tested, an AI integration inherits all of that governance for free. The model reasons over a clean map instead of guessing at raw tables, and the same guardrails that keep a human from producing the wrong answer keep the AI from producing it too.
The sequencing matters. AI readiness is the output of a governed layer, not a separate project you do afterward. The 2026 push toward AI in analytics, the proliferation of tools all needing the same definitions, and the governance mandates landing on data teams are all pointing at the same prerequisite: enforced, legible definitions. Build those and the rest follows.
Where Visivo's semantic layer fits
Visivo's semantic layer is code-defined and enforced in the build, which is to say it is exactly the kind of layer this post argues for. Metrics, dimensions, and relations live in YAML in your repository. Insights reference them rather than re-deriving SQL, so the definition you write once is the definition every chart, filter, split, and AI integration uses. The enforcement is not a policy you hope people follow; it is how the project compiles.
That makes the on-ramp to AI-ready analytics concrete rather than aspirational. Define your disputed metrics as code, get them under review and into CI, point your dashboards at them, and you have built the governed substrate before you have written a line of AI integration. The docs walk through the semantic layer in detail, the examples gallery is built entirely on it, and /get-started takes you from install to your first enforced metric in a few minutes.
The teams that win with AI in analytics will not be the ones with the best model. They will be the ones whose definitions the model can trust.
Previously in Visivo
This follows choosing a real-time analytics database in 2026, which covered the engine layer underneath all of this. For the conceptual groundwork, what GenBI is and text-to-SQL vs. a semantic layer are the natural companions to this org-adoption playbook.