The reason your BI tool has 1,400 dashboards and your executives still ask for numbers in Slack is not a tooling problem. It is a scope problem. Dashboards get commissioned for one decision, then quietly absorb six more, then survive long after the original decision-maker has left. The fix is not a cleanup sprint. The fix is to stop building dashboards without a contract.
What a scope contract is
A scope contract is a short, structured preamble attached to every dashboard at the moment it is requested — not retrofitted later. Five fields. None of them optional.
Purpose. One sentence describing the question this dashboard answers. Not a topic (“revenue performance”), a question (“are we on pace to hit Q3 net-new ARR?”). If the requester cannot phrase the purpose as a question, the dashboard is not ready to be built. The conversation goes back to the requester, not into the backlog.
Decisions attached. Which specific decisions does this dashboard inform, and who makes them? “Pricing committee uses this monthly to approve discount-band changes.” “Field CFO uses this weekly to flag at-risk renewals to CS leadership.” If no decision and no decision-maker can be named, the dashboard is reporting, not analytics, and almost certainly should not exist as a bespoke artifact. Most “I just want to see the data” requests collapse here, which is the point.
Owner. A single named human — not a team, not a Slack channel — who is accountable for the dashboard’s correctness and continued relevance. The owner is usually the decision-maker, not the analyst who built it. This is the load-bearing field. An owner with no decisions attached has nothing to defend; an owner who is also the consumer has skin in the game when the numbers stop reflecting reality.
Review cadence. When does the owner re-validate that the dashboard still serves its purpose? Quarterly is the floor for most operational dashboards; monthly for anything tied to active strategic bets; annual for stable compliance reporting. Cadence is not “we’ll look at it eventually” — it is a calendar invite, owned by the owner, that fires whether or not anyone wants it to.
Retirement criteria. The conditions under which this dashboard should be archived. “Retire when the pricing experiment concludes.” “Retire when the Snowflake migration is complete.” “Retire when net-new ARR < $5M/quarter for two consecutive quarters (we won’t need this resolution).” Every dashboard needs a believable end state. Dashboards without retirement criteria default to immortal, which is how you end up with 1,400 of them.
Enforcement, not aspiration
A contract that lives in a Notion doc no one reads is theater. Enforcement has to happen at the point of creation and at the point of review.
At creation: the contract is a required field on the dashboard request form. No purpose, no decision, no owner, no cadence, no retirement criteria — no ticket. Analysts are explicitly empowered to bounce requests back. This is the single highest-leverage policy change most teams can make, and it costs nothing.
At commit: the contract lives in the dashboard’s metadata, not in a separate system. In Looker, a top-of-LookML comment block. In dbt-driven semantic layers, a model-level meta block. In Power BI or Tableau, a description field with a strict template. Wherever the dashboard lives, the contract lives one keystroke away. If the contract is hard to find, it does not exist.
At review: the cadence fires automatically. The owner gets a calendar reminder linking to the dashboard with a three-question prompt — is the question still being asked, are the decisions still being made, has anything changed about the data behind it? Three answers, two minutes. If the owner cannot answer yes to all three, the dashboard either gets revised or gets retired that day. Not “added to a list.” Retired.
At retirement: the criteria are checked at every review. When they trigger, the dashboard is archived — not deleted — and a redirect points consumers to the replacement (or to nothing, if nothing is the right answer). Archive, not delete, because the audit trail matters when someone six months later asks why a number changed.
What this is actually buying you
Scope contracts are not about dashboards. They are about turning analytics work into a portfolio with explicit lifecycles instead of an ever-growing pile. The second-order effects are larger than the first-order ones: requests get sharper because requesters know they will be challenged, analysts spend more time on the dashboards that matter and less time on zombies, and leadership gets a defensible answer to “why are we paying for X BI seats.”
The bar for enforcement is uncomfortable on purpose. If the contract is comfortable, you have built a wishlist, not a contract.