Semantic Layer
Your team and your AI tools read the same definitions.
Point a model at an undocumented warehouse and it does what it always does with missing context: it fills the gap. Invented joins, half-right column names, a metric defined three different ways in three answers. So every metric, dimension and data model gets a curated, machine-readable definition your tools read before they write SQL. We author the metadata; you bring the model.
How it works: data models in, concept files out
The layer is built once, versioned like code and updated as your data model evolves.
- 01
Inventory
Data models, columns, grain and definitions are collected from your warehouse — and from the people who own them.
- 02
Author
Each metric, dimension and data model becomes one markdown concept file. Written by humans, never inferred.
- 03
Cross-link
Concepts reference each other explicitly: sessions link to channel grouping, channel grouping to its source table.
- 04
Publish
The result is a plain directory of OKF files in your repo or bucket — no registry, no runtime.
- 05
Load
Your LLM or agent reads the files as context before writing a line of BigQuery SQL.
The format: Google’s Open Knowledge Format (OKF)
OKF is an open specification Google published in June 2026. A
knowledge base is a directory of markdown files — one concept
per file — with YAML frontmatter on top. The format is
deliberately minimal: one required field (type), a handful of optional ones (title, description, resource, tags, timestamp), and relationships expressed as explicit markdown links, not
embeddings. If you can read a file, you can read your semantic
layer; if you can clone a repo, you can ship it.
Why this beats a schema dump
INFORMATION_SCHEMA tells a model which columns exist; it says nothing about which table is the source of truth, what grain a data model is at, or how “non-brand” is actually defined. A curated concept file carries the definition, the caveats and the explicit links between ideas — the context a model cannot infer, because it was never written down anywhere.
What you control
A semantic layer is only useful if it says what your business means, not what a vendor assumed. Three things are yours to decide — and some things we deliberately don’t sell.
Which concepts get defined
The metric and dimension list is agreed with you, starting from the questions your team asks most often. Nothing is documented for the sake of coverage.
How a metric is defined
When two teams count a conversion differently, the definition that wins is the one you pick. We write it down and keep it consistent everywhere it is used.
Which tools read it
The files live in your own repository and warehouse, in an open format. Whichever assistant or agent your team uses can read them, and switching tools does not mean re-authoring anything.
What we don’t sell
This deserves saying plainly, because “AI-ready” usually hides a platform pitch. Here it doesn’t.
You get files.
A directory of markdown concept files with YAML frontmatter — plain text, versioned wherever you keep code, portable to any tool that reads text.
We don’t sell an LLM.
No model, no tokens, no chat UI. Bring the model your stack already runs — Gemini, Claude, GPT or anything else.
It’s metadata, not a query engine.
Nothing here executes SQL. Your agent writes the query; your warehouse runs it.
Nothing is auto-generated.
Concepts are authored and reviewed by people who know your data. The curation is the product.
Nothing leaves your project.
The layer is authored with read-only access to your warehouse, and the finished files live in your repo or bucket — under your accounts, not ours. Walk away with the directory any time.
What it changes in practice
Definitions only pay off where a question is ambiguous — and marketing questions almost always are. Each of these leans on a data model or a source you can read about.
-
“Non-brand clicks by content group” means one thing
Two phrases in there are business definitions, not columns. Written down once, an assistant resolves them the same way every time instead of guessing per question.
Content Groups -
Branded is whatever you say it is
Brand rules differ by company, market and misspelling. The definition stays yours, documented and applied identically by every tool that reads it.
Brand vs Non-brand Queries -
Intent labels stop being opinions
When a query is classified as commercial, the criteria behind that label are written down — so the classification survives the person who created it.
Query Intent -
The source behind the number
Every concept records which source and data model it derives from, so an answer can be traced back rather than simply trusted.
Google Search Console
A concept file, a question and the SQL it produced
The output is text you can read. On the left, one concept file from the layer. On the right, what happens when an LLM that has read it answers a question.
---
type: metric
title: Non-brand clicks by content group
description: Search Console clicks from non-branded queries,
read by the content group of the landing page.
resource: bq://your-project.models.content_groups
tags: [seo, search-console]
---
Clicks come from Search Console query rows where the branded
flag is false, grouped by the content group assigned to the
landing page. Which pages count as Commercial is your rule —
it lives in [content_groups](./content_groups.md). One concept per file: the YAML tells an agent what this is and where it lives; the body carries the human definition and its explicit links.
Which content group drove the most non-brand clicks last week?
SELECT
content_group,
SUM(clicks) AS non_brand_clicks
FROM `your-project.models.content_groups`
WHERE is_branded = FALSE
AND data_date >=
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY content_group
ORDER BY non_brand_clicks DESC; The SQL is representative — the point is where its table and column names came from: the concept file, not a guess.
Give your AI the context it’s been missing.
Free discovery call · Leave with a concept inventory to start from