Skip to content
Automatizav1
INS-02

Freshness contracts: how strict is strict enough

2026-03-18 · 7 min read

Sub-minute freshness is a real cost. So is a stale dashboard. Pick freshness deliberately, declare it publicly, and let the alert routing argue with you when you wrote it wrong.

The freshness contract is the most-skipped, highest-leverage artifact in a data team's toolbox. Most teams either default to 'as fresh as possible' (which costs 5x what they think) or never declare it at all (which is how the trading desk loses confidence in the dashboard at 9:01 am).

Three tiers. Tier 1 — sub-minute. Operational. Needed for trading, RG monitoring, payments fraud. Costs: a streaming pipeline, a hot warehouse, on-call. Tier 2 — minute-grain. Most product analytics. Cohort retention, funnel-from-search. Tier 3 — hour-to-day. Marketing reporting, finance close, anything where the human in front of the dashboard is doing weekly thinking.

Declare it on the table itself. Not in a Notion. In the schema comment. `COMMENT ON TABLE stg_orders IS 'Freshness SLA: 10 min p95.'` Then run the freshness test in CI on every PR.

Route alerts to the table owner, not a #data-alerts channel. A channel is a graveyard. The owner is a person. The owner has a runbook. The runbook has a TTR.

The honest version. Declare a freshness target, measure p95 against it, publish the rolling number, and apologize when it slips. The promise is not zero-staleness; the promise is honesty about staleness.

Wire a real pipeline to your warehouse

30-min stack review. We come back with a scoped plan, an owner, and a freshness contract. No SDR, no slide deck.