Case study · 04 / Data

Meridian — seventeen dashboards, one number.

KafkadbtSnowflakeAirflowMetabase

The problem

Seventeen dashboards disagreed about revenue. Finance ran one number, product ran another, and the exec team had stopped trusting any of them. The data warehouse had become a dumping ground with no shared definition of a metric.

What we did

We built real-time ingestion with Kafka feeding a Snowflake warehouse modelled in dbt, then put a single metric layer on top — one definition of revenue, one definition of ARR, one definition of churn, enforced in code.

Every team migrated onto the same definitions, dashboards were retired or rebuilt against the metric layer, and freshness tests now page a human the moment any pipeline goes stale. Metabase gives business users a safe slice without touching SQL.

Impact

Within a quarter, "what's the number?" stopped being a meeting topic. Event freshness holds at 5 seconds, four teams share one source of truth, and new metrics ship as code reviews instead of spreadsheet round-trips.

Event sources Kafka ingestion Snowflake + dbt Metric layer Metabase
Wk 1–3Real-time ingestion, 5s freshness Mo 2One definition of revenue, ARR, churn — in code Q end17 dashboards retired, 4/4 teams migrated

Tradeoff we made: one shared definition over team autonomy. The first month was slower — then “what's the number?” stopped being a meeting topic.

metrics-lake · prod
event freshness5 s · SLO 30 s
dashboards retired17 → 1 source of truth
dbt tests (nightly)412 passed · 0 failed
stale-pipeline pages2 this month · auto-recovered
teams on metric layer4 / 4 migrated
5sevent freshness 4teams migrated
All work Next: Liquid Edge