- Four tools, four revenue numbers is normal: they differ on timing, scope (gross vs net), attribution lens and currency/tax treatment — all defensible, all different.
- The fix isn't another dashboard; it's defining each metric exactly once — a semantic layer — and making every tool and agent read from it.
- For a D2C brand this doesn't need a data team: the spine is ~5 sources and ~20 governed metrics.
Put last month's "revenue" from Shopify, GA4, Meta and your BI tool side by side. You'll get four numbers, sometimes 30% apart. The usual response is to distrust one tool, then another, then quietly stop looking. The correct response is to realise nobody defined the word.
The four ways tools disagree
| Axis | The hidden question | Example divergence |
|---|---|---|
| Timing | Order placed, paid, or fulfilled? | COD order placed May 31, delivered June 6 — which month's revenue? |
| Scope | Gross, or net of discounts/returns/GST/shipping? | ₹100 order with 20% discount + GST: 'revenue' spans ₹67–₹100 |
| Attribution lens | All orders, or orders this tool takes credit for? | Meta reports Meta-attributed revenue; Shopify reports all |
| Identity | What counts as one customer / one order? | Split payments, edited orders, exchanges — each tool dedupes differently |
None of these is a bug. Each tool answers its own question correctly. The organisation fails because it thinks the four tools are answering the same question.
The compounding cost
- Meetings that open with twenty minutes of "whose number is right" before any decision.
- Metrics that drift silently: someone changes a filter in a BI tool, "CAC" means something new, nobody knows.
- Agents and automations amplifying the mess — an AI querying inconsistent definitions returns confident nonsense.
- The worst one: teams optimising different definitions of the same word. Marketing's "profitable" and finance's "profitable" diverge by exactly the definitional gap.
The fix: define once, read everywhere
A semantic layer is a thin, boring, decisive thing: a single governed place where each business metric has exactly one formula, one timing rule, one scope — and every chart, query, alert and agent reads from it instead of re-deriving its own.
With that in place, "revenue" in the founder's Monday view, the growth lead's cohort chart and the agent's answer to "did we grow?" is the same number, by construction. Disagreement becomes impossible rather than merely discouraged.
What a D2C-sized spine actually looks like
| Component | Contents | D2C reality |
|---|---|---|
| Sources | Ad platforms, store, payments, cost sheet, CRM/email | ~5 connectors, not fifty |
| Joins | Order ↔ ad click (UTM/click-ID), order ↔ costs, customer ↔ orders | The hard 20% that makes everything else honest |
| Governed metrics | Revenue, CM, MER, nCAC, repeat rate, RTO rate… | ~20 definitions cover 95% of decisions |
| Consumers | Dashboards, alerts, agents, weekly brief | All read the layer; none invent math |
Build vs buy, honestly
The enterprise version of this (dbt + a metrics store + BI governance) is real and needs a data team you don't have and shouldn't hire at ₹10–100 Cr scale. The D2C-sized version is opinionated plumbing: fixed sources, known joins, pre-governed metric graph, done in days not quarters. That's the layer Meerkats ships as the foundation under its agents — because we'd rather argue about strategy than about whose spreadsheet is right.