In this chapter
- One question, six decisions. A business question traced through the metadata that answers it, and the clause it declines.
- The contract is the briefing. What an agent reads in a data contract, and why the known limitations matter most.
- Levels and checkable answers. What an agent can do at each meaning level, and an answer that cites where it came from.
How many customer accounts in Australia had an order move to Cancelled last quarter, by sales owner? A question like that takes several steps. An AI agent that plans and runs those steps itself, rather than returning a chat answer, makes a decision about meaning at every one. That’s agentic reporting.
The agent is yours or your platform’s. AIMS (AI-ready, Meaning-first Silver) designs what it reads.
One question touches six decisions a person already made
In AIMS, each clause of the question reads a decision a person already approved.
- Customer accounts are Customer Account, a business entity identified by two business keys, one per record source.
- An order moving to Cancelled is a new version of a Sales Order, one row per version. So the agent counts accounts, never rows, and reads
Cas Cancelled through the code mapping. - Last quarter falls on the source change time, not the load time or the order date. Nothing supplies an effective time, so the answer says its dates are when the order system recorded the change.
- Which account is the sold-to role, the account that placed the order, carried in its own key column, not the bill-to.
- In Australia is the trap. The
AUinside the order system’s key is a company code, the key’s first part, typed as an identifier. Nothing in the contract says it’s a country. - By sales owner has no business attribute. The only candidate, the sales system’s OwnerUser, is marked source-only, carrying no business meaning, and classified internal.
Country lives only on the sales system’s account. So the agent crosses systems through matching, which ties two systems’ keys to one shared key. Customer 00001042 under company code AU and account A-937 share the key customer_account||tax_number||48123456789.
The matching coverage, the share of the entity’s keys something matched, tells the agent how far that path reaches. The answer reports the accounts it can’t place as unknown.
The agent answers the rest of the question. For the last clause, it says no business attribute for sales owner is mapped and that the source column OwnerUser is internal.
That refusal is the most useful line in the answer. A guess would have grouped the accounts by an internal user identifier and called it sales ownership.
Figure 10.1: what the agent reads, from the question to the contract fields it touched and the clause it declines.What does an AI agent read in a data contract?
Most of those steps read one document, the data contract, in AIMS a projection of what the catalog holds about a table. Read from the agent’s side, it’s a briefing.
The owner says whom to ask, and the synonyms say which of the asker’s words mean this entity and these attributes. The grain sentence says what to count. The business key and its record source say what’s unique and where. The history policy and the time columns settle which version and which date. The roles and cardinalities show how to join without doubling a row.
Each column’s mapping, with its semantic type, code list, unit and currency, says what a value means and what may be added to what. The rules and their failure actions say what was flagged, diverted or blocked. Lineage says where a column came from, and the freshness target says how old the data may be. The known limitations say what’s missing.
Our first book put the rule in a heading: “The AI cannot see what was never captured.” The contract is that capture, projected before anyone asks, so an agent never has to reconstruct meaning from column names.
Third normal form and Data Vault settled which object, column and join path a question needs by restructuring the sources. In AIMS the agent reads them off the contract, from tables that kept their shape.
The known limitations keep an agent honest
That last field matters most. The known limitations list every unmapped column and every unmapped code, so an agent can say “I cannot answer that part” instead of guessing. A source-only column, like OwnerUser, lets an agent decline too.
What if the order system starts sending a status code nobody has mapped? It maps to nothing, visibly, as a null mapped value and a warn finding. The contract lists the gap. So the agent can say its count leaves out orders in a status nobody has defined, rather than leaving them out silently.
A refusal that names what’s missing tells a person what to map next. A confident guess never does.
The meaning level says how much an agent can answer
The five meaning levels, which say how much a table tells its reader, also measure how much of a question an agent can answer without guessing. At level 0, Typed, it guesses what everything is. At level 1, Identified, it can count, because it knows what one row is. At level 2, Related, it can join safely, because every reference has a role and a cardinality. At level 3, Described, it can compare, convert and interpret, because the columns carry their meaning. At level 4, Integrated, it can give one answer per customer across systems.
The worked example’s question needs the whole climb: level 3 to read Cancelled, level 4 to reach Australia.
So what number can a data leader ask for? In AIMS, it’s attribute coverage. Per table and per entity, it says how much of the estate an agent can read rather than guess. It rises with every column mapped or marked source-only.

Point the agent at the mart, and keep metrics there
In AIMS, consumption always gets a mart. Where an agent runs its own query, point it at the mart, or at the few published tables a question needs, never at every table in silver.
The platforms’ own guidance keeps an agent’s tables to a handful. In a 2025 study by Kohita, each join a question needed roughly halved a model’s accuracy with no worked examples to copy. But in that study, a flat table did worse on aggregate questions.
In AIMS, the contract’s roles and cardinalities are the join paths the agent reads, so it never invents one. The mart is drafted from the same metadata and designed by people, so a dimension’s Cancelled is the contract’s Cancelled.
One kind of meaning the contract never carries is a metric. Business attributes in silver are operational facts. Net Revenue, Active Customer and churn are definitions, so they belong to the consumption layer, in the mart or the platform’s semantic layer, built from mapped attributes. The churn rate built on a count of closed accounts is a definition, written once where the agent reads it. A definition nobody has written is a clause the agent declines like any other.
Every platform builds its own semantic layer for AI agents
Each platform’s agent reads a curated semantic layer over the tables, and each keeps it inside its own walls.
On Databricks, Genie reads its knowledge store and generates from a table’s comments and the primary and foreign keys declared on it. In Fabric, a data agent’s descriptions of a lakehouse table are entered in the agent itself, in preview, or live in the reporting tool’s semantic model. In that model, Copilot reads the first 200 characters of each.
Snowflake’s semantic views page says “Currently, Cortex Agents reads the information captured in the semantic view definition and generates the SQL against the physical tables directly.” So a table’s own comment reaches it only through that definition.
Meaning written once still has to be rendered into each of those objects, by a template that knows their limits. In AIMS the meaning layer is written first, on no platform, instead of annotating tables after the data landed. That’s how an agent on Databricks, Snowflake or Fabric reads the same contract.
The templates differ, but the meaning doesn’t.
Figure 10.2: a platform-neutral ontology generates what the others annotate.An answer you can check cites where it came from
What can the answer to the Australia question cite? It can point to the source-aligned sales order table, the source table under it and the approved code mapping that made C mean Cancelled. It can cite the shared keys and the rule behind them, and say which mappings a person decided and which remain the AI’s guesses. And it can name the rows the identity rule quarantined and left out of the count. In AIMS, every row on that trail carries its provenance, the record of what proposed it, and an audit trail of who approved it.
That’s what turns an agent’s answer from plausible into checkable.
| The structural answer | A vault team answered the Australia question with a point-in-time table, a bridge, a same-as link, a business satellite and a semantic model hand-built in the reporting tool. |
| What the agent reads | The data contract in order, from the owner, entity and grain sentence to the known limitations, with the shared keys and the matching coverage beside it. |
| Yours to decide | Which questions an agent may answer without a person reading the answer first, which only while the known limitations are empty, and each entity’s freshness target. |