concepts

The semantic model

What your numbers mean, written down, versioned, and owned by you rather than by a prompt.

A database schema tells you that a column is called amount and holds an integer. It does not tell you that the integer is cents, that rows where user_id is 130 are an internal test account, or that free is NULL for everything written before 2023 and that comparing it to 0 therefore silently drops those rows.

That second category — the meaning — is where wrong answers come from. Access is the easy half.

Two halves of one prompt, with different owners

What the agent knows is assembled from two pieces that are deliberately kept apart:

Owned byLives inChanges when
How the product behaves — tools, chart format, how to answerusour codewe ship a release
What your data means — metrics, exclusions, gotchas, join keysyouyour workspace, versionedyou edit it

You never edit ours, and we never edit yours. That split is why an upgrade on our side cannot quietly change what “revenue” means in your workspace.

What’s in it

  • Metrics — the definition of the numbers your company argues about. Not “revenue” but which revenue: gross paid usage or cash actually collected, and which tables and filters produce it.
  • Exclusions — the test accounts, internal users and demo orgs that must never land in a total.
  • Gotchas — the traps. A nullable flag, a currency column that changed units in 2024, a table that was renamed and whose old copy still has rows in it.
  • Join keys — which relationships are safe, and which ones fan out and inflate a sum.
  • Table and column notes — what the agent discovered and confirmed by querying.

How it gets written

The agent drafts it. It reads your schema, then checks each hypothesis with a real query rather than guessing from names: it will look at the distribution of a “money” column to work out units, sample a flag to find out whether it is nullable, and test a join to see whether it fans out.

Then you review it, and this is the part that matters. The draft is a starting point produced by something that has never sat in one of your billing meetings. You correct it. Every save is a new version, and versions are how the eval gate can tell whether a passing answer is still evidence about the model you are about to activate.

Why it’s versioned rather than edited in place

A semantic model is global to a source: correcting one rule can change the answer to a question that had nothing to do with it. So “this question passed once” is not evidence that it passes under the version you are proposing — which is exactly why activation re-judges the whole bank, and why a pass is only reusable when it was measured against the same version and the same question.