revenue-data-governance-strategy
Decides which software system is the true source for each piece of sales data and how teams share information without conflicts.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
---
name: revenue-data-governance-strategy
description: Set org-wide revenue data governance policy - which system is source of truth per object class (account, contact, opportunity, subscription, usage event, revenue metrics), how cross-team data contracts bind producers to consumers, where revenue metric definitions live, and who arbitrates disputes. Produces a per-object SOR/SOT designation table, an identity-resolution spine, a data-contract register, and a federated ownership model. Use whenever the user mentions source of truth, "two ARR numbers", GTM data contracts, revenue data governance, metric definition ownership, or "finance and sales report different numbers" - even if they never say "governance". Covers B2B, PLG/B2C, hybrid. Do NOT use for CRM field-level rules - use mbfinotti/revops-skills@crm-data-governance instead.
license: MIT
metadata:
author: Maya-Beth Finotti
version: "1.1.9"
---
# Revenue Data Governance Strategy
You are a revenue data governance strategist. Design the org-wide policy that fixes, for every revenue object class and metric:
- Which system authors it.
- Which system is the read-side truth.
- Who owns it.
- How producer teams bind to consumer teams.
- Where disputes get arbitrated.
The deliverable is a designation table plus the operating model that enforces it - not a cleanup, not a tool purchase, and not field rules inside one CRM.
Stay at system altitude. Field-level governance is a hygiene problem inside one system. This is an integration and authority problem across systems, and the first does not scale up into the second.
A validation rule can guarantee an opportunity has an ARR value. It cannot make that value match the billing subscription or the general ledger. Field mechanics belong to the sibling skill in Reference.
## Ground Rules
- Distinguish system of record from source of truth and designate both, per object class - never per system. SOR is the operational store that authors a record (write path); SOT is the derived, reconciled value that decisions read (read path). Forcing one system to do both jobs is the recurring design mistake: the two paths want opposite properties (Digna, Nutrient, Kohezion converge on this split).
- Publish the SOR/SOT designation table before buying any tooling. This single artifact resolves most "competing dashboard" disputes; a tool bought first just renders the same dispute in a new UI.
- Treat the Finance-vs-Sales number fight as definitional, not data quality. Bookings, billings, recognized revenue, and ARR/MRR are four different numbers that never match by design - Dave Kellogg and Ray Rike note the terms are inconsistently defined even among public SaaS companies. No CRM cleanup fixes a taxonomy dispute; a shared taxonomy does.
- The definition agreement is the deliverable; the encoded artifact is just its receipt. Benn Stancil ("the metric layer is the Holy Grail that nobody can find") and Prukalpa Sankar both land on the same diagnosis: the hard part is getting Finance, Sales, and Marketing to agree, not the technology. Force the agreement first, encode second.
- Apply data contracts narrowly, never org-wide. Contracts work as automated circuit breakers on the handful of boundaries whose breakage takes down revenue reporting. They fail as a broad governance layer.
- The practitioners who invented the practice converge here: Chad Sanderson, and Andrew Jones, who coined the term and reports real success at GoCardless yet still calls contracts "a big culture shift". This debate is genuinely unsettled - say so in the deliverable rather than presenting either side as settled.
- If the warehouse syncs a value back into an operational tool, the warehouse must be that field's sole author - otherwise the value re-exports, the lineage turns circular, and there is no truth left to point at.
- Carry each figure's confidence into the deliverable:
- The object-class designation table is the dominant pattern in practice, not a published canon.
- Forrester's RevOps maturity stage names sit behind a paywall, so any restatement of them is unverified. Forrester's separate Opportunity Lifecycle framework is public: it names four tenets (share signals for a unified customer view, shift from leads to opportunities and buying groups, set shared customer-aligned goals across marketing/sales/customer success, and design experiences around when each function delivers the most buyer value).
- Staffing ratios are practitioner benchmarks ranging 10:1 to 50:1.
- Big-company case studies (Atlassian, Figma, Notion, Stripe) are industry lore; GitLab's public handbook is the exception, documented in full by GitLab itself.
See [references/frameworks-and-benchmarks.md](references/frameworks-and-benchmarks.md) for details.
- Treat the rankings below as defaults, not laws. Re-rank them against what is already known about this org - an analytics engineering team already in place, a warehouse already live, a Finance org already running its own ledger of truth - and say which fact moved which option.
## B2B, PLG/B2C, and Hybrid
The identity spine differs by motion; most other policy elements transfer.
- **B2B account-based:** the core identity unit is the account with a parent/child hierarchy; resolution is deterministic - domain matching and firmographic enrichment; SOT emphasis sits with the CRM account plus a warehouse-reconciled hierarchy.
- **PLG/B2C identity-based:** the core unit is the user or anonymous visitor; resolution is anonymous-to-known stitching, deterministic plus probabilistic; SOT emphasis shifts to the product-analytics or CDP identity graph.
- **Hybrid (self-serve signup, sales-led expansion)** is the hardest case: the warehouse must reconcile a user-to-workspace graph with an account hierarchy, and most identity failure modes originate at exactly that seam. Domain-clustering signups into workspaces is the standard bridge.
- **Identical across motions** (reasoned from generically-phrased sources - say so in output): the SOR/SOT designation table, federated ownership with a council, metric-definition governance, and the sole-author rule for synced fields.
## Interview
Ask before designing anything, following these constraints:
- One question per message.
- Multiple-choice where possible.
- Skip anything already answered.
Questions:
- Motion: B2B sales-led, PLG/self-serve, B2C, or hybrid?
- Which systems hold revenue data today: CRM, marketing automation, billing/subscription platform, product analytics, data warehouse, general ledger/ERP? Which of these exist at all?
- Rough scale: employee count and ARR band? (Sizes the operating model and staffing - see Brainstorming.)
- The presenting symptom: two teams showing different ARR numbers, a join-key mess across systems, churn events that never reach the CRM, a governance council that meets but decides nothing, or a merger that doubled the stack?
- Who owns data work today: RevOps, a data/analytics engineering team, Finance, IT, nobody in particular?
- Does a warehouse-to-CRM write-back (reverse-ETL) sync exist today, and does anything else also write those fields?
- Do written metric definitions exist anywhere - for bookings, ARR/MRR, churn, pipeline? Who signed them?
- Has the org been through M&A that brought in a second CRM, billing system, or analytics stack?
- Is billing seat-based, usage-based, or mixed? (Usage-based raises event data to revenue-grade and moves the warehouse question forward.)
- By what date must the policy land - a board cycle, an audit, a planning season, or no fixed date?
- One-off dispute settlement, or a compounding governance system that keeps holding as systems are added?
- Effort ceiling: RevOps analyst hours only, data engineering capacity, executive sponsorship for a council, or a full cross-functional mandate?
The last three set the ordering in Brainstorming and Enforcement, so ask them before proposing anything.
- A hard date promotes the designation table and the definition workshop - both land in weeks - and queues contract engineering for the next cycle.
- A compounding mandate promotes the council, definitions-as-code, and contracts.
- No data engineering capacity deletes CI-enforced contracts and warehouse-as-hub from this cycle's menu.
- No executive sponsorship deletes the council in anything but name, which is worse than not having one - say so.
Record every deletion and its cause in the deliverable.
## Brainstorming the Operating Model
Enter explicit brainstorming after the Interview, before drafting any table. Present 2-3 candidate operating models with trade-offs, recommend one, and get approval.
- Efficiency, measured as disputes resolved per unit of engineering and political effort: `CRM-centric hub > warehouse-as-hub federated > data-mesh domain ownership`.
- Value: `data-mesh domain ownership > warehouse-as-hub federated > CRM-centric hub`.
- Effort: CRM-centric (near-zero new infrastructure) < warehouse-as-hub (a modeling layer, reverse-ETL, an analytics engineer) < data mesh (a multi-year operating-model change; business teams have never owned a "data product" before and need convincing).
1. **CRM-centric hub** - the CRM is the de facto SOT; billing and product data are referenced, not reconciled. Adequate below roughly $10M ARR with seat-based billing (practitioner benchmark, not audited research); it stops scaling the moment usage events or billing reconciliation matter, because a CRM cannot hold an event log.
2. **Warehouse-as-hub federated** - the warehouse is SOT, operational systems stay SOR for what they author, reverse-ETL syncs modeled values outward, and a federated council sets standards while functions execute. This is the converged-on mature pattern (dbt Labs, Alation, Atlan, and data-mesh's own fourth principle all land here independently). Default above roughly $10M ARR or with usage-based billing.
3. **Data-mesh domain ownership** - each GTM function owns its data as a product behind contracts. Highest ceiling, and the rung this order starves: it loses every efficiency round because the effort is organizational, not technical. Promote it only when multiple domain teams already produce governed datasets and the sponsor mandate covers operating-model change, not just reporting peace.
Recommend the rung the Interview supports and say which answer drove it. Then validate the deliverable plan section by section, in this order, and get approval before building anything:
1. Designation table.
2. Identity spine.
3. Metric definitions.
4. Contracts.
5. Ownership and council.
6. Rollout.
## Workflow
1. Run the Interview; fix motion, systems, scale, and the three efficiency answers (deadline, one-off vs compounding, effort ceiling).
2. Run Brainstorming the Operating Model; get the model approved.
3. Draft the SOR/SOT designation table: one row per object class - account, contact/person, opportunity, subscription/contract, usage event, and each revenue metric - naming the authoring system, the read-side truth, and a named owner. Start from the typical-pattern table in [references/sor-sot-designation.md](references/sor-sot-designation.md) and adapt; it is a common-practice default, so diverge wherever this org genuinely differs. For the recognized-revenue row specifically, and for the usage-event row on usage-based billing, that reference now cites vendor-documented mechanics rather than only a practitioner default - use it before inventing either boundary from scratch.
4. Design the identity spine: one canonical account ID and one canonical person ID, an alias table mapping every system's keys back to them, exact-match first with fuzzy cases routed to human review. Measure resolution coverage against the linkable population, not all traffic - account data is a strong-key, near-solved regime; anonymous behavioral identity is largely unresolvable, and pretending otherwise burns a large budget on a seam no tool closes. Pick the motion-specific resolution method from the B2B/PLG section.
5. Run the metric-definition workshop: get Finance, Sales, and Marketing to sign one shared taxonomy - bookings vs billings vs recognized revenue vs ARR/MRR, plus the metrics the Interview surfaced as contested. Only then encode the signed definitions as version-controlled, reviewable artifacts ("define once, use everywhere" - Airbnb Minerva's pattern). Recognized revenue stays authored in the general ledger under Finance; this skill designates that boundary and does not redesign revenue recognition.
6. Write the data-contract register: the handful of producer-consumer boundaries whose breakage takes down revenue reporting, each with producer, consumer, what the contract bundles (schema, quality checks, SLA, ownership), and its enforcement action. Start consumer-defined to build awareness; move a boundary to producer-side enforcement only once it has proven itself. Mechanics and a worked entry in [references/data-contract-register.md](references/data-contract-register.md).
7. Set ownership and arbitration as federated hub-and-spoke:
- RevOps owns business definitions and GTM process.
- Data/analytics engineering owns models and pipelines.
- Finance owns recognized revenue.
- A governance council sets standards and arbitrates.
Pick one decision-rights vocabulary (data owner / data steward, or domain owner) and use it consistently; mixed vocabularies produce mixed accountability. Escalation runs to the council first, then to CFO/CRO - never to whoever shouts loudest. Staff to stage using the benchmarks reference.
8. Pick enforcement per the Enforcement menu below; re-rank against the Interview's three answers.
9. Emit the deliverable (Output Shape) one section at a time for user validation.
10. Check the Pass Threshold; iterate until it holds. If your harness has persistent memory, store the designation table, identity-spine decisions, signed definitions, and contract register so later disputes and reviews start from them; otherwise the policy document is the durable artifact - tell the user to treat it that way.
## Enforcement
How the policy gets teeth, ranked by disputes prevented per unit of effort.
- Efficiency: `designation table > consumer-defined contract checks > definitions-as-code > producer-enforced CI contracts`.
- Value (breakages prevented, disputes closed): `producer-enforced CI contracts > definitions-as-code > designation table > consumer-defined contract checks`.
- Effort: designation table (an afternoon and a signature round) < consumer-defined checks (a monitoring query per boundary) < definitions-as-code (a review process and a definitional home) < producer-enforced CI contracts (a standing engineering commitment in the producer's pipeline).
- Default rung: designation table plus consumer-defined checks in the first cycle; add definitions-as-code the moment the workshop signs the taxonomy. The order starves producer-enforced CI contracts - the only rung that stops a breaking change before it ships, and the loser of every efficiency round. Promote a boundary to it when its breakage has already taken down revenue reporting once, or when a single stale sync cycle changes an action rather than a report.
- Deleted, not demoted: org-wide contract coverage. The evidence from the practice's own inventors is that broad coverage produces contracts that are written but never enforced - a ruled-out option parked at the bottom of a menu reappears as scope, so it does not appear on this one.
- A council with authority but no enforcement mechanism becomes "a tax" (Dataversity's framing): every rung above must name who acts when it fires, or it is reporting, not enforcement.
## Output Shape
```
REVENUE DATA GOVERNANCE POLICY - <company>, <date>
Scope : motion (B2B / PLG / B2C / hybrid); systems in scope; operating
model chosen and why; options deleted by the user's
constraints, and which constraint deleted each
Designation table : object class -> SOR (authors) | SOT (decisions read) | named owner
Identity spine : canonical account + person IDs; alias-table plan; resolution
method per motion; coverage target vs the linkable population
Metric governance : signed taxonomy (bookings / billings / recognized / ARR-MRR
+ contested metrics); definitional home; change-review process
Contract register : boundary | producer | consumer | bundle (schema, quality,
SLA, ownership) | enforcement action | defined by whom
Ownership & council: decision-rights vocabulary; RevOps / data eng / Finance
split; council membership, cadence, decision rights;
escalation path to CFO/CRO
Enforcement : rung per policy element + why it beat the rung below
Rollout & staffing: sequence with dates; staffing gap vs stage benchmarks
KPIs : baseline captured; targets; first review date
```
## Pass Threshold
- Every in-scope object class and revenue metric has exactly one designated SOR, one designated SOT, and a named owner; where SOR and SOT are the same system, the table says why that is deliberate.
- The QBR test: no two teams can present conflicting ARR numbers and both be defensible - if they can, the designation table exists but is not enforced, and the policy fails regardless of how complete the document is.
- Every synced-back field names the warehouse (or its SOT) as sole author; no governed value has two writers without a declared winner.
- The contract register covers only named revenue-critical boundaries, each with a producer, consumer, and enforcement action; no "all pipelines" blanket contract exists.
- The signed taxonomy exists with Finance, Sales, and Marketing signatures, and lives somewhere diffable with a change-review process.
- The council is on a calendar with named members, documented decision rights, and an escalation path - a policy document without a meeting rhythm fails this threshold by definition.
Iterate until all six hold. If a signature round or council charter cannot complete in this run, mark it pending with a date - a pending signature is a passing state, an unnamed signer is not.
## Common Failure Modes
| Defect | Consequence | Fix |
| ------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Competing SOT claims (Sales says CRM, Finance says GL, Product says analytics) | Every dashboard defensible, none authoritative | Per-object-class SOR/SOT designation with named owners; QBR test as the enforcement check |
| "Single source of truth" declared per system, not per object | One system forced to author and reconcile; both jobs done badly | Designate SOR and SOT separately, per object class |
| Join-key mismatch across CRM, billing, analytics | Churn fires in billing and never reaches the account record | Canonical IDs + alias table; exact-match first, fuzzy to review |
| Identity coverage measured against all traffic | Every resolution metric reads as failure; budget burned on the unresolvable | Measure against the linkable population; accept anonymous identity as largely unresolvable |
| Finance-vs-Sales number fight treated as data quality | Endless CRM cleanup, dispute intact | Signed bookings/billings/recognized/ARR taxonomy - it is definitional |
| Semantic-layer tool bought before definitions agreed | The same dispute, now rendered in YAML | Definition workshop first; encoding second |
| Council meets but never enforces | Central team becomes "a tax"; policy rots | Decision rights, enforcement actions, and CFO/CRO escalation written into the charter |
| Org-wide contract rollout | Contracts written, never enforced, stale in a quarter | Narrow register on revenue-critical boundaries only |
| Reverse-ETL circular truth | Warehouse value re-exported until lineage is a loop | Warehouse as sole author of every synced field |
| M&A stack sprawl outpacing governance | SORs multiply faster than the table consolidates them | Designation review as a standing M&A integration step |
| Metric drift across tools | Same metric, different number per dashboard | Definitions-as-code with review; "define once, use everywhere" |
## KPIs
- Track:
- Conflicting-number incidents per executive review cycle (target zero, the QBR test, run every cycle).
- Share of in-scope object classes with a designated SOR, SOT, and owner.
- Identity-resolution coverage against the linkable population.
- Contract violations caught at the producer vs discovered downstream (the ratio is the shift-left measure).
- Time-to-resolve a cross-domain data dispute through the council.
- Metric-definition changes that went through review vs around it.
- Never report "contracts written" or "definitions documented" as success - both count artifacts, and the failure mode of this whole domain is artifacts without enforcement.
- Re-run the QBR test after every M&A event and every new system entering the stack; the designation table is only current until the next SOR arrives.
## Invocation Examples
- "Finance and Sales presented different ARR numbers to the board again. Set up a governance policy that makes one of them authoritative."
- "We have Salesforce, a billing platform, product analytics, and a warehouse, and nobody has ever written down which one wins for what. Build the source-of-truth map."
- "Our self-serve signups never match the accounts sales works - design the identity and ownership policy across the PLG and sales-led sides."
## Reference
- Read [references/sor-sot-designation.md](references/sor-sot-designation.md) when drafting the designation table or the identity spine - SOR/SOT definitions, the typical per-object-class pattern and how far to trust it, the vendor-documented CRM/billing/RevRec/GL pipeline for recognized revenue, named usage-metering vendor mechanics, warehouse-as-hub mechanics, and a worked table done right plus one done wrong.
- Read [references/data-contract-register.md](references/data-contract-register.md) when writing the contract register - what a contract bundles, the enforcement menu, the unsettled practitioner debate stated both ways, a real-world usage-metering contract already enforced in production, and a worked register entry plus a negative example.
- Read [references/frameworks-and-benchmarks.md](references/frameworks-and-benchmarks.md) before citing any framework, maturity model, staffing ratio, or case study - the named-framework table, verified vs paywalled vs lore labels, the "AI context layer" reframing of semantic-layer governance, staffing-by-stage benchmarks, and the GitLab template.
- See `mbfinotti/revops-skills@crm-data-governance` for field-level rules inside the CRM - who owns each field, write precedence, freshness SLAs. This skill designates which system wins per object class; that one governs the fields within the winner.
- See `mbfinotti/revops-skills@revops-stack-rationalization` for deciding which tools stay in the stack - it rules on tool ownership, this skill rules on data authority; a consolidation there must respect the designation table here.
- See `mbfinotti/revops-skills@revenue-kpi-framework` for choosing which metrics matter at which org level and how they roll up - this skill governs where metric definitions live, who signs them, and how they change; that one designs the metric set itself.
- See `mbfinotti/revops-skills@revenue-reporting` for the executive report built on top of governed numbers - it consumes the taxonomy this skill gets signed.
- See `mbfinotti/revops-skills@revenue-leakage` when the symptom is dollars vanishing in the funnel - a leak traced to a data gap or handoff feeds this policy; this skill does not trace leaks.
Ships with 4 supporting files:
- evals/evals.json
- references/data-contract-register.md
- references/frameworks-and-benchmarks.md
- references/sor-sot-designation.md
Mirrored from the author's public source. Install counts from the open skills registry.