Write down what your data means once. Igloo enforces it everywhere.

Your database keeps the values. What they mean lives in people, code, dashboards and slides, and every team keeps its own copy. Only one of those copies is enforced.

It starts with the data you already have, in a database, an ontology, or a spreadsheet. Runs where your data runs, or hosted by us.

A column named status is not documentation. The schema is enforced but explains nothing. The other four explain everything and enforce nothing.

The schema
data engineering
enforced
The metric definitions
analytics
documented
The app code
application teams
hidden
The glossary
governance
documented
The context layer
AI enablement
drifting

Raw data isn't meaningless. It's meaning nobody has written down yet.

Write it down once, where it is enforced, and three kinds of recurring work go away.

if your numbers disagree

Your reports stop disagreeing

Reconciling numbers that were supposed to be the same is recurring work. It exists because every report, pipeline and agent carries its own definition of the field. Igloo gives them one definition to read. Change it once and everything downstream follows.

The database schema, the data contract and the semantic layer are rendered from that one definition, so they cannot disagree with each other.
if you write checks by hand

You never hand-write a quality check again

Valid data can still be wrong. The checks come from the definition, so they test what a field means and not only its type, and your database enforces the same rule.

When data fails, the check names the definition, the column and the row. The producer fixes the data instead of arguing with a regular expression.
if you're putting AI on your data

Your AI agents know what the data means, and say so when they don't

Your analysts know the two revenue figures differ. Your agent doesn't, unless the difference is written down where the agent reads. Igloo's agents read the same definition the database enforces.

Ask an agent whether a join is safe to sum across. It answers with the evidence, hop by hop, or says the model doesn't declare it. It never guesses.

Known before it hurts

A broken job is visible. A job that finishes and produces plausible wrong numbers is found after the decision.

Known up front

Programmers settled this decades ago: the cheapest error is the one the compiler catches. A model that runs is a compiler for your data. A value that breaks a definition is refused where it is written, not discovered in the board pack.

Honest numbers

Every check reports what it actually judged. A check that saw no data cannot count as a pass. And when a model is translated into another format, or out of one, Igloo says exactly what did not survive the trip.

Meaning pays back

Structure alone gets you types, keys and required fields. The value starts when you add meaning: a unit, a valid range, what a relationship actually means. Each one you write down sharpens every check, every constraint, every generated test row and every answer an agent gives, from the same sentence. Igloo will also make a wrong definition consistently wrong everywhere. The definition is yours.

Everything on this page ships today.

A model that lives in a repository is documentation. Igloo's lives in your database, your contracts, your checks and your agents' answers.