Adaptive Metadata Layer

Every column arrives with the rules it already obeys.

RootCause profiles every column and every series before anyone runs a query. Expected categories and the spellings that map to them. Ranges, sign constraints and orderings between fields. Seasonality and period. Each one stored with a confidence level and the number of rows it was tested against. Agents and analysts read the same set.

orders · 5 of 34 columns
weekly_units
Number · Seriesconfidence high

A 14-week cycle, fitted and stored, so a movement gets compared to the same week last cycle.

Observed56 weeks
Seasonalperiod 14 weeks
Residualtwo sigma band

Observed splits into a 14-week seasonal component, a trend, and a residual inside a two sigma band.

Detected period
14 weeks
Trend
upward · +4.2% QoQ
Residual volatility
11.4% · up 2.7 points since May
Outside the band
1 week · 11 May · flagged

Tested against 3.8M rows. Last profiled 4 Aug 2026. Re-derived on source change.

Why this exists

An agent with no profile will average your credit notes into the unit price.

Ask for average unit price and it will include the 1,146 negative rows your finance team files as credit notes. Ask for regional totals and it will count CA, Calif. and CALIFORNIA as three regions. Ask whether last month was unusual and it will compare against the month before, with no idea the series runs on a fourteen-week cycle.

The rules exist. They live with the analyst who has been there six years, and in a spreadsheet nobody has opened since March. Neither is readable by an agent.

RootCause derives the rules from the data and writes them onto the ontology, where every model, agent and analyst picks up the same set.

Categories and aliases

Five spellings of California resolve to one member.

For every categorical column RootCause derives the expected value set, folds spellings into canonical members, and keeps the mapping so a raw value can always be traced back. A value seen once gets flagged instead of folded, because a single odd string is sometimes a typo and sometimes the first order of a new product line. That call stays with you.

Raw valuesOntologyCalifornia1.7M5 spellings folded · confidence highCALIFORNIA412kCalif.88kCA1.2Mcalifornia26kCALIF3.1kCALI-FORNIA?1unresolved · 1 occurrenceheld for review, never folded

Canonical member California, covering 1.7M rows across five spellings: CALIFORNIA, Calif., CA, california, CALIF. Tested against 6.2M rows. CALI-FORNIA? appears once and stays unresolved until somebody decides what it is.

Numeric properties

Ranges, signs and orderings are stored as constraints you can enforce.

Observed minimum and maximum. Distributional shape. Inferred sign constraints. Orderings between fields. If contract_start precedes contract_end across 920,000 rows, the ordering is a rule. If 912 rows break it, those rows are a finding with a count attached.

Constraints do two jobs here. They stop an agent returning an answer your business considers impossible, and they surface the rows where your data already does the impossible.

Every inferred rule is enforceable downstream

Profiling tools report a distribution and stop there. The ontology stores the rule itself, with its confidence level and the row count behind it, so a query planner can act on it.

The rows that break a rule ship with the rule

Each constraint carries its violating rows, how many there are, and when they first appeared. Most customers open something on day one that they had been reporting on for years.
Time series

Seasonality is fitted once and read by everything downstream.

For every time-indexed numeric series RootCause fits trend, seasonal component and residual, identifies the period, and stores the fit with a confidence level and a two sigma band on the residual.

Two things follow. An analyst asking whether a movement is unusual gets an answer measured against the same point in the cycle. And when that series becomes a variable in a causal model, its seasonal structure is already characterized.

Observed56 weeks
Trend+4.2% QoQ
Seasonalperiod 14 weeks
Residualtwo sigma band

Detected period 14 weeks. Confidence high. Tested against 3.8M rows. One residual sits outside the two sigma band, week of 11 May, and carries a review flag.

Adaptive

Adaptive means RootCause re-derives on a schedule.

Data drifts. A category set that was exhaustive in March gains two members by May. A sign constraint that held for two years breaks the week a new billing source comes online.

RootCause re-profiles on a schedule and on source change, versions every constraint, and reports what moved. A changed constraint becomes a review item with a diff and a row count. The previous version stays pinned until somebody rules on the new one, so a shift in your data reaches a person instead of quietly degrading every answer built on top of it.

v1 · Mar
Number · Decimalunit_priceconstraint broken
unit_price >= 0
Rows violating the constraint, v3 · July0 rows
tested against 8.1M rows · confidence high
Rows violating the constraint, v4 · August1,146 rows
tested against 8.4M rows · confidence high
  • 1,146 negative unit pricesall after 9 July · all from source billing_v2
  • Constraint marked brokenv3 stays pinned until somebody rules on it
  • Range floor otherwise unchanged$0.12 minimum across positive rows

v3 · July to v4 · August. The constraint was not rewritten. It was flagged, versioned, and put in front of the data owner.

Adaptive Metadata Layer

Point it at a column you think you already understand.

Bring one table from a system you know well. Most customers learn something about it on the first call.