A semantic layer sits between the question and the warehouse. It says what "retention" means here: which table, which rows count, which date field, which filters, at which grain. Analytics engineers have built these for years in tools like dbt and LookML. The goal has not changed. Two people asking the same question should get the same number.
With an AI analyst the layer matters more, because the model guesses when nothing is written down. It will pick a reasonable definition, write valid SQL, run it, and report a number. Ask again and it may pick a different reasonable definition. Nothing broke, the SQL is fine, and the meaning moved.
We ran that test on NovaMart, our course dataset, on a live warehouse. With no definition in front of the model, different runs gave different answers to "What is our retention rate?" With one metric contract in front of it, every run gave the same number. The only change was a written definition.
You do not need a big platform to start. A folder of markdown or YAML files, one per metric, is a semantic layer. The analyst reads it before it writes a query. Shane's correction log started this way. Each time he caught a wrong number, he wrote down the fix. The file grew into a map of how the business talks about its data.
In the courses
In Agentic Analytics, week 4 (Context engineering and management) runs the same metric three ways. You see where its meaning can live. Then you write a metric contract for a contested metric and merge it by pull request. AI Analytics for Everyone, week 3 (Metrics and root cause analysis) covers the same problem from the other side. Three teams define "active user" differently, and you write the metric spec that settles it.