Centralised metric definitions implemented in a semantic layer so every business metric has one definition, one calculation, and one number, regardless of which BI tool, analyst, or dashboard is asking the question. Options based on your BI tooling: dbt Metrics (dbt's native semantic layer, now dbt Semantic Layer with MetricFlow), Looker LookML (semantic definitions in Looker that generate SQL dynamically), Cube.js (headless semantic layer serving metrics to any BI tool or API), or Power BI semantic model (DAX measures centralised in a shared dataset). Metric definitions cover the business concepts that produce disagreements: revenue (invoiced vs cash vs recognised, including returns and refunds), churn rate (the definition of an active customer, the numerator, the denominator, the period boundary rules), customer acquisition cost (which costs are included, over what period, for which customer segments), lifetime value (prediction horizon, discount rate if NPV-based, segment breakdowns). Each metric definition documented with the business name, the calculation in plain language, the SQL formula, the edge cases explicitly excluded, and the data steward responsible for changes. The process for changing a metric definition: the change is proposed, reviewed with the business leads affected, merged into the semantic layer via a pull request with a dbt or LookML diff showing the downstream impact, and communicated to report owners before deployment, so metric changes are deliberate and traceable, not discovered when a dashboard number changes unexpectedly.