返回 Skills 目录
mbfinotti/revops-skills已通过检查

SKILL DETAIL

revenue-reporting

mbfinotti/revops-skills/revenue-reporting

Define the metric set and narrative structure for an executive or board revenue report so it tells one coherent story - a small stable metric spine, locked definitions, an answer-first narrative around plan vs actual vs forecast, presenting a miss without surprising the board, the reconciliation and sign-off chain, and weekly vs monthly vs quarterly cadences. Use whenever the user mentions a board revenue report, exec deck metrics, the QBR revenue section, a monthly revenue review, an investor update, or a board deck that reads as a data dump - even if they never say "reporting". Covers B2B subscription, B2C, transactional, usage-based, and PLG. Do NOT use for designing the org-level KPI hierarchy - use mbfinotti/revops-skills@revenue-kpi-framework instead.

安装量 · 811查看来源

Installation

npx skills add https://github.com/mbfinotti/revops-skills --skill revenue-reporting

技能文件

SKILL.md

最近同步 · 2026年10月23日

evals/evals.json›
{
  "skill_name": "revenue-reporting",
  "evals": [
    {
      "id": 1,
      "prompt": "I run RevOps at Halcyon Grid, B2B SaaS, about $40M ARR, Series C. Our quarterly board deck has 22 metrics in the main body and the board burns the whole hour asking us to explain charts instead of deciding anything. I need to cut it down before the Q3 deck. On pipeline: we take weighted pipeline ($18.2M) and divide it by the Q4 target ($9.6M) to get 1.9x coverage, and we've been telling the board 3x is the industry standard so we're behind. Rep attainment averaged 82% across 14 reps. We have full CRM history, a billing system, and finance closes on the 8th. What should the deck actually carry?",
      "expected_output": "A proposed spine of five to six metrics selected by decisions changed per unit of production cost, with the weighted-pipeline-over-target double discount corrected, the 3x rule of thumb replaced by a coverage multiple derived from Halcyon Grid's own close rates, attainment reported as a distribution rather than a mean, and the removed metrics moved to the appendix.",
      "files": [],
      "expectations": [
        "Caps the main-body spine at five to six metrics, names eight as the absolute maximum, and proposes no more than eight",
        "States the selection criterion as decisions changed per unit of production cost, rather than how standard or expected a metric looks on a board deck",
        "Flags that dividing weighted pipeline by the target discounts risk twice, because the coverage multiple already discounts it",
        "Specifies unweighted pipeline coverage as the reported line, with weighted pipeline shown as a separate line if it is kept at all",
        "Rejects the 3x figure as a circulating rule of thumb and derives the required coverage multiple from Halcyon Grid's own close rates",
        "Replaces the 82% average attainment with a distribution reporting the share at or above 100%, 70-100%, and below 70%",
        "Includes top-two-rep concentration in the attainment read",
        "Includes at least one durability metric in the proposed spine: a retention pair, cohort retention curve, consumption net retention, or margin-adjusted payback",
        "Scopes pipeline coverage to deals with close dates inside the period, with renewals excluded",
        "States that the same spine repeats every period and that a new metric enters only by replacing one, with the swap footnoted"
      ]
    },
    {
      "id": 2,
      "prompt": "Cassava Loop here. We're a B2B SaaS company that grew by rolling up three smaller products, so our billing system and our CRM don't share a customer ID and nobody has ever reconciled them. We have 14 months of revenue history total. Marketing spend sits in one agency invoice line with no segment or campaign breakdown. Sales is still founder-led with no quotas anywhere. Our new CFO wants a monthly executive revenue review starting next month with 'the standard SaaS metrics' - NRR, CAC payback, quota attainment. Draft me the metric set.",
      "expected_output": "A spine that deletes the retention pair, acquisition payback and attainment distribution outright on data-availability grounds rather than ranking them last, reports the movement bridge instead, and explicitly names the data gap that removed every durability metric.",
      "files": [],
      "expectations": [
        "Deletes the retention pair (NRR/GRR) from the spine rather than ranking or demoting it, because there is no stable customer identity across billing and CRM",
        "Cites the 14-month history as shorter than the trailing-12 retention window as a second reason retention is not yet measurable",
        "States plainly in the deliverable that retention is not yet measurable, instead of omitting it silently",
        "Deletes acquisition payback rather than shipping a blended or estimated payback figure",
        "Ties the payback deletion to spend not being attributable by period and segment",
        "Deletes quota attainment distribution because there is no quota-carrying sales team",
        "Reports the recurring-revenue movement bridge (beginning, additions, losses, ending) as the core of the spine instead",
        "Satisfies the durability check by naming the data gap that removed every durability metric from the spine",
        "Warns that a spine left with only velocity metrics reads healthy until the base stops holding",
        "Produces no NRR, CAC payback, or quota attainment figure for the review despite the CFO's request",
        "Names customer identity resolution across billing and CRM as the prerequisite that would restore the retention metrics"
      ]
    },
    {
      "id": 3,
      "prompt": "Q3 closed at $22.4M ending ARR against a $24.1M plan. New business came in at $1.4M against $2.2M planned, churn was $0.6M against $0.35M planned, and expansion actually beat at $0.9M against $0.7M. Honestly we're not sure yet why new business dropped - sales says deals slipped, marketing says the leads were fine, we're still digging. There's a lot of macro noise in our segment too. Board meeting is in 12 days. Write the revenue section. I'd rather the quarter not read as a disaster, so I was going to show net movement (-$1.7M against plan) as one line and put the churn detail in the appendix.",
      "expected_output": "A board revenue section that leads with the miss, shows the full movement bridge with the expansion beat and the churn overage reported separately rather than netted, labels the new-business cause as unconfirmed, refuses macro as a cause, and ships as a pre-read with pre-wire calls before the meeting.",
      "files": [],
      "expectations": [
        "Places the miss in the first third of the document rather than in the appendix",
        "Quantifies the gap against plan explicitly, either as the $1.7M total against the $24.1M plan or as the per-line decomposition",
        "Refuses the single netted movement line and shows the movement bridge with beginning, new business, expansion, contraction, churn and ending as separate rows",
        "Reports the expansion beat separately from the churn overage rather than offsetting them into a quieter total",
        "Labels the new-business cause as unconfirmed or under investigation rather than asserting a cause as fact",
        "Commits to reporting the confirmed cause at a named later point, such as the next period or next meeting",
        "Rejects the macro environment as a stated cause unless it is accompanied by data separating market movement from execution",
        "Names an owner for the fix and a single proof metric that will show the fix worked",
        "Restates the forward forecast with the miss's cause reflected in it",
        "Page one states the period verdict, the biggest driver, the response underway, and the decision being asked of the board",
        "Ships the deck as a pre-read three to four days before the meeting and schedules pre-wire conversations so no board member learns the miss live"
      ]
    },
    {
      "id": 4,
      "prompt": "Awkward one. The NRR we showed the board last quarter was 114%. When we rebuilt the model this month we found overage revenue had been left in the recurring base and the real number was 106%. That's the third correction we've had to make this year - the other two were a churn misclassification in Q1 and a double-counted expansion deal in Q2. My instinct is to just show 106% this quarter and move on, nobody is going to pull up last quarter's PDF. Board meeting is in three weeks, and I also want to change how we treat reactivated customers before this deck goes out, because the current rule inflates new business.",
      "expected_output": "A visible restatement rather than a silent correction, with an 'as restated' column, a footnoted cause and per-line effect, a logged entry, the reactivation rule change resolved in writing as a dated dictionary version, and three corrections in a year escalated as an upstream controls problem.",
      "files": [],
      "expectations": [
        "Rejects silently shipping the corrected 106% figure and requires a visible restatement of the previously published number",
        "Labels the corrected column 'as restated'",
        "Footnotes the cause of the restatement and its per-line effect",
        "Logs the restatement in a restatement log or definitions changelog",
        "Identifies three corrections in one year as a controls problem to fix upstream, not a formatting or presentation problem",
        "Names restatement count per year as an ongoing signal to track after shipping",
        "Treats the reactivation rule change as a footnoted definition change rather than applying it silently mid-cycle",
        "Requires the metric dictionary to be frozen before the deck is drafted",
        "Writes the exclusion of overage from the recurring base into the NRR dictionary entry as a resolved inclusions/exclusions rule",
        "Records the change as a new dictionary version carrying a number, a date, and a one-line changelog",
        "States that definition changes made mid-cycle are what make numbers move between meetings"
      ]
    },
    {
      "id": 5,
      "prompt": "Two problems before Thursday's board meeting. First, our CRM says we booked $6.8M in Q2 but the finance team's number is $4.9M - they say that's what was recognized. Our RevOps dashboard shows $21.9M ARR and the finance dashboard shows $20.4M. A lot of our Q2 deals were three-year contracts. Second, our CEO has already dropped $21.9M into the draft deck and wants to present it. I have two days. Which system do I go with, and how do I get this settled in the meeting?",
      "expected_output": "A refusal to pick a winning system, the billings-minus-recognized-equals-change-in-deferred-revenue check applied, a written stage-by-stage definition, the RevOps-publishes / finance-certifies / leadership-decides split enforced, and the discrepancy resolved in writing before the deck ships rather than live in the room.",
      "files": [],
      "expectations": [
        "Refuses to settle the CRM-versus-finance discrepancy by picking a winning system",
        "Explains that a CRM bookings read and a finance recognized read diverge by design and only tie at the contract level over the full term",
        "Applies the identity that billings minus recognized revenue equals the change in deferred revenue as the reconciliation check",
        "Requires a written definition of what 'right' means at each stage: sourced, contracted, billed, and recognized",
        "Requires the discrepancy be resolved in writing before the deck ships, never debated live in the meeting",
        "States the headline revenue figure must match what finance certifies, or the reconciling item must be named in the deck",
        "Rejects presenting the $21.9M figure on the grounds that finance has not certified it",
        "Assigns publishing to RevOps, certification to finance, and the decision to leadership",
        "States that RevOps holds a publishing deadline rather than a presenting role, and that a report finance cannot reconcile to the ledger does not ship",
        "Flags the total-contract versus annualized basis of the three-year deals as a stated reconciling item, noting multi-year totals inflate against an annualized basis",
        "Notes that the numbers freeze when the pre-read ships and any later change is communicated as a restatement"
      ]
    },
    {
      "id": 6,
      "prompt": "We're a data-infrastructure company, all consumption pricing - customers put down an annual commitment and burn it down, plus overage on top. Investors keep asking for ARR, so I've been taking December revenue times 12 and calling it ARR. December was our biggest month ever. Our Q1 number then dropped 18% and everyone panicked about churn, but honestly a lot of our customers just run less in January. We've been billing for about 14 months. Write me the metric spine for the monthly investor update.",
      "expected_output": "A consumption spine leading with commitment/overage mix and utilization, carrying consumption-based net retention with a written comparison window, deleting the seasonality split for insufficient history, placing run-rate last with its annualization basis stated, and refusing to report the December annualization as ARR unqualified.",
      "files": [],
      "expectations": [
        "States that a contractual recurring base does not exist in a consumption model and that the recurring figure is a behavioral output",
        "Rejects presenting December revenue times twelve as ARR without stating the annualization basis, or declines to report a recurring-revenue figure at all",
        "Flags the December peak as a one-time or seasonal month that must not be annualized silently into a run-rate",
        "Leads the spine with commitment versus overage mix and utilization against committed capacity",
        "Names commitment/overage mix as the leading indicator that pipeline coverage plays in contract businesses",
        "Includes consumption-based net retention defined as same-cohort revenue against that cohort's prior-year revenue",
        "Requires the comparison window for consumption net retention to be written into the metric dictionary",
        "Deletes the seasonality split for now because 14 months is shorter than two comparable cycles, rather than ranking it last",
        "Places revenue run-rate last in the spine despite it being the cheapest line to produce",
        "Requires separating seasonal consumption dips from health degradation before reporting either, so the 18% Q1 drop is not reported as churn",
        "Warns against seat-based subscription benchmarks for a consumption business and directs benchmarking against the company's own history and matching-model peers"
      ]
    },
    {
      "id": 7,
      "prompt": "I'm the only analyst at Tessellate, Series B, 60 people. The new CRO wants a weekly revenue review, a monthly exec review, and a proper quarterly board deck, all starting next month. I told him I'd build one really good report and just run it at three different frequencies with more detail each time, and he's fine with that. Realistically I know I'm going to drown by month three. How do I set this up?",
      "expected_output": "Three distinct artifacts rather than one report at three speeds, each with its own audience, depth and forward edge, explicitly not ranked against each other, plus a drop order planned in week one that sacrifices the monthly narrative first and the quarterly board artifact never.",
      "files": [],
      "expectations": [
        "Rejects one report run at three frequencies and specifies three distinct artifacts",
        "Assigns each artifact a distinct audience: revenue team and ops weekly, functional heads and CFO monthly, executive team and board quarterly",
        "Specifies the weekly artifact as a live view with no narrative",
        "Specifies the monthly artifact as a scorecard plus a one-page narrative, gated on the finance close",
        "Specifies the quarterly artifact as a pre-read deck plus appendix plus pre-wires",
        "Gives each artifact a distinct forward edge: this period's commit, next month's priorities, and reset targets, capital and hiring",
        "Declines to rank the three artifacts against each other by efficiency or value, on the grounds that they are layers that do not substitute for one another",
        "Gives an explicit drop order for when the effort ceiling binds, sacrificing the monthly narrative first and the weekly commentary second",
        "States the quarterly board artifact is never dropped, because it carries an external obligation the other two do not",
        "Instructs planning for that collapse in week 1 rather than discovering it in week 12",
        "States that a topic escalates one layer up only when it needs that layer's audience to decide"
      ]
    },
    {
      "id": 8,
      "prompt": "Marketplace for secondhand furniture. Last year we did $54M in GMV and we keep about 9% of that. Our investor deck currently leads with '$54M revenue, up 61%'. We also want an LTV number in there - I've seen the average-order-value times purchase-frequency times margin times three-year-lifespan formula. Most of our buyers check out as guests, we only have accounts for sellers. Gross product margin is 71% before we pay fulfillment, payment processing and returns. What should the revenue section look like?",
      "expected_output": "Volume, net revenue and take rate reported as three separate lines with roughly $4.9M as the net revenue headline, the LTV constant refused outright, cohort and repeat-purchase metrics deleted for lack of buyer identity, and contribution-margin layers reported at the deepest layer rather than the 71% gross figure.",
      "files": [],
      "expectations": [
        "Refuses to report GMV as revenue and separates gross transaction volume, net revenue, and take rate into three distinct lines",
        "Carries the roughly $4.9M net revenue implied by the 9% take rate rather than leaving $54M as the headline revenue figure",
        "Declines to produce a single lifetime-value constant at all, rather than ranking it low or shipping it with caveats",
        "Gives the reason that LTV inputs are interdependent and churn is behavioral, making the number fragile in exactly the direction that flatters",
        "Deletes cohort retention curves and repeat purchase rate because guest checkout leaves no stable buyer identity",
        "Reports contribution-margin layers rather than the 71% gross product margin alone",
        "Names the margin layer sequence: product margin, then after variable fulfillment, payment and returns, then after acquisition cost",
        "Requires reporting the deepest margin layer rather than the most flattering one, noting any layer above the acquisition line always flatters",
        "Names stable buyer identity, such as accounts at checkout, as the prerequisite that would restore the cohort and repeat-purchase metrics",
        "Warns against benchmarking this business against seat-based subscription retention figures",
        "States that the movement-bridge shape, the plan-versus-actual-versus-forecast spine and the answer-first narrative carry over unchanged from subscription reporting, and that only the atoms change"
      ]
    },
    {
      "id": 9,
      "prompt": "Our board meeting is on the 5th and our finance close doesn't finish until the 11th. It's a one-time thing - we just closed a bridge round and the new investors want a revenue read at the first meeting, after that we go back to no formal reporting for a while. I'm the only person who can build it and I've got maybe six hours. I was planning on CAC payback, Rule of 40, and a bookings/billings/recognized reconciliation since that's what investors ask about. The billing system export is easy to pull and the CRM is clean. What do I actually put in?",
      "expected_output": "A five-metric single-system spine built from the billing export and CRM, with payback, the growth-plus-margin composite and the three-basis lines all dropped for this cycle because the deadline lands inside the finance close, the waterfall and dictionary build skipped as a one-off, and the re-ranking explained against the stated constraints.",
      "files": [],
      "expectations": [
        "Drops acquisition payback from this cycle because the deadline lands inside the finance close and the metric needs certification",
        "Drops the growth-plus-margin composite, which the user called Rule of 40, from this cycle for the same certification reason",
        "Drops the bookings / billings / recognized revenue lines from this cycle for the same certification reason",
        "Caps the spine at five single-system metrics because the analyst team is one person against a hard effort ceiling",
        "Treats the report as a one-off artifact and builds the bridge from the billing export rather than standing up the recurring-revenue waterfall",
        "Skips building the full metric dictionary as a compounding asset, given the one-off mandate",
        "Selects only metrics reachable from the billing export and the CRM without a finance dependency",
        "Names which of the user's stated constraints moved which metric, rather than presenting the metric order as fixed",
        "States that the metric order is a default re-ranked against this situation, not a law",
        "Either carries one durability metric or names the gap that deleted it, rather than leaving the durability question unaddressed",
        "Keeps an answer-first page one carrying verdict, driver, response and ask despite the compressed build"
      ]
    },
    {
      "id": 10,
      "prompt": "Here's the opening of our monthly exec review as it stands: 'October Revenue Overview. We closed 31 deals this month across four segments. The following slides show MRR by month, pipeline by stage, win rate by region, and lead source performance.' The deck is 34 slides. Also, our weighted pipeline in HubSpot shows $7.1M for next quarter using the deal-stage probabilities that shipped with the portal, and I want to lead with that as proof we'll hit the $5.4M target. Fix the opening for me.",
      "expected_output": "A rewritten answer-first opening carrying verdict, driver, response and ask, the chart-tour structure rejected, the HubSpot default stage probabilities flagged as editable placeholders that cannot back a weighted-pipeline claim unadjusted, and the 34-slide body split with detail moved to the appendix.",
      "files": [],
      "expectations": [
        "Rewrites the opening to state the period verdict, the single biggest driver, the response underway, and the decision being asked",
        "Applies the answer-first test: a reader handed page one alone can state the verdict, the biggest driver or risk, and the ask",
        "Flags that HubSpot's default deal-stage probabilities are editable placeholders rather than measured conversion rates",
        "Refuses to let a weighted-pipeline figure built on those default probabilities reach the deck unadjusted",
        "Directs replacing the default probabilities with the company's own measured stage conversion, or reporting unweighted coverage instead",
        "Flags that dividing the $7.1M weighted pipeline by the $5.4M target would discount risk twice",
        "States that a 34-slide main body has become the pre-read and must be split with the summary rebuilt",
        "Names roughly twenty to thirty slides as the point at which a main body has outgrown its role",
        "Moves the backward-looking detail - MRR by month, pipeline by stage, win rate by region, lead source - into the appendix",
        "Structures every remaining section as what happened, why, and what we are doing about it, rather than as a tour of charts"
      ]
    }
  ],
  "trigger_queries": [
    {
      "query": "help me cut down our board revenue deck, the board just asks about charts instead of deciding anything",
      "should_trigger": true
    },
    {
      "query": "what metrics should go in the revenue section of our quarterly board deck",
      "should_trigger": true
    },
    { "query": "how do I present a revenue miss to the board", "should_trigger": true },
    {
      "query": "our monthly exec review is 30 slides and nobody reads it",
      "should_trigger": true
    },
    {
      "query": "the board found out about our churn spike during the meeting and it did not go well",
      "should_trigger": true
    },
    {
      "query": "need to write the revenue section of our monthly investor update",
      "should_trigger": true
    },
    {
      "query": "we shipped a wrong ARR number to the board last quarter, what do we do now",
      "should_trigger": true
    },
    {
      "query": "two dashboards give different ARR and I have a board meeting Thursday",
      "should_trigger": true
    },
    { "query": "how many metrics should a board deck actually carry", "should_trigger": true },
    {
      "query": "write the metric dictionary entries for the recurring revenue metrics we report",
      "should_trigger": true
    },
    { "query": "our deck is a data dump, help", "should_trigger": true },
    {
      "query": "should I show average quota attainment in the deck or break it out somehow",
      "should_trigger": true
    },
    {
      "query": "design our weekly, monthly and quarterly revenue reporting cadence",
      "should_trigger": true
    },
    {
      "query": "finance and revops disagree on the quarter's number and I have to pick one",
      "should_trigger": true
    },
    { "query": "what goes on page one of a board revenue deck", "should_trigger": true },
    {
      "query": "I need a QBR revenue section for a consumption-pricing business",
      "should_trigger": true
    },
    { "query": "how far ahead of the meeting should the board pre-read go out", "should_trigger": true },
    {
      "query": "we missed plan by 8% and I have no idea how to write it up",
      "should_trigger": true
    },
    {
      "query": "our numbers keep changing between meetings and people have stopped trusting them",
      "should_trigger": true
    },
    {
      "query": "how do I structure a monthly revenue review for the exec team",
      "should_trigger": true
    },
    {
      "query": "put together the revenue story for our first board meeting after the Series B",
      "should_trigger": true
    },
    {
      "query": "should the deck show net movement or the whole bridge",
      "should_trigger": true
    },
    {
      "query": "our marketplace investor deck leads with GMV, is that right",
      "should_trigger": true
    },
    {
      "query": "what's the right way to correct a number we already presented",
      "should_trigger": true
    },
    {
      "query": "board keeps asking about CAC payback but our spend data is a mess",
      "should_trigger": true
    },
    {
      "query": "our CEO wants to present a number finance hasn't signed off on",
      "should_trigger": true
    },
    { "query": "reporting cadence for a one-person revops team", "should_trigger": true },
    {
      "query": "how do I show retention to the board when we only have a year of history",
      "should_trigger": true
    },
    {
      "query": "pipeline coverage for the board deck, weighted or unweighted",
      "should_trigger": true
    },
    {
      "query": "we're a usage-based business and investors keep asking us for ARR",
      "should_trigger": true
    },
    {
      "query": "what should the exec team see every month that the board doesn't see quarterly",
      "should_trigger": true
    },
    { "query": "need the revenue narrative for the QBR", "should_trigger": true },
    {
      "query": "our board spends the whole hour on last quarter and never decides anything",
      "should_trigger": true
    },
    { "query": "who signs off on the numbers before a board deck ships", "should_trigger": true },
    {
      "query": "how do I say we don't know the cause yet without looking incompetent",
      "should_trigger": true
    },
    {
      "query": "we want to attribute the quarter to macro headwinds, is that fine",
      "should_trigger": true
    },
    {
      "query": "what belongs in the appendix versus the main body of an exec deck",
      "should_trigger": true
    },
    { "query": "help me pick five metrics that actually change decisions", "should_trigger": true },
    { "query": "how should a PLG company report revenue to its board", "should_trigger": true },
    {
      "query": "rewrite the opening of our revenue review, right now it's a tour of charts",
      "should_trigger": true
    },
    {
      "query": "can I change a metric definition in the middle of a reporting cycle",
      "should_trigger": true
    },
    {
      "query": "we smoothed the monthly series to cut the noise and the board liked it, keep doing that?",
      "should_trigger": true
    },
    {
      "query": "the revenue part of our quarterly business review deck",
      "should_trigger": true
    },
    {
      "query": "prepare the numbers story for the investors before the meeting so nothing surprises them",
      "should_trigger": true
    },
    {
      "query": "board deck revenue section for a company that just badly missed plan",
      "should_trigger": true
    },
    {
      "query": "should reactivated customers count as new business in the bridge we show the board",
      "should_trigger": true
    },
    {
      "query": "how do I stop the board asking how we define NRR every single quarter",
      "should_trigger": true
    },
    {
      "query": "design our org-wide revenue KPI tree from the board level down to individual contributors",
      "should_trigger": false
    },
    {
      "query": "which metrics matter at each level of the org and how should they roll up to each other",
      "should_trigger": false
    },
    { "query": "why was our sales forecast wrong last quarter", "should_trigger": false },
    {
      "query": "reps are sandbagging and the forecast is useless, diagnose what's going on",
      "should_trigger": false
    },
    { "query": "build me a Grafana dashboard for revenue metrics", "should_trigger": false },
    { "query": "set up a Power BI report for our finance team", "should_trigger": false },
    {
      "query": "what should our executive KPI dashboard look like in Looker",
      "should_trigger": false
    },
    { "query": "build a dashboard that tracks MRR in real time", "should_trigger": false },
    { "query": "who should own the account owner field in our CRM", "should_trigger": false },
    { "query": "set field-level freshness SLAs on our CRM records", "should_trigger": false },
    {
      "query": "decide which system is the source of truth for subscription objects across our stack",
      "should_trigger": false
    },
    {
      "query": "we need data contracts binding the product team to revops as a consumer",
      "should_trigger": false
    },
    { "query": "design our funnel stages from lead through closed won", "should_trigger": false },
    {
      "query": "what's the right unit of analysis for our funnel, leads or buying groups",
      "should_trigger": false
    },
    {
      "query": "find where we're losing revenue in the renewal process",
      "should_trigger": false
    },
    {
      "query": "size how much money we're leaking from unworked inbound leads",
      "should_trigger": false
    },
    {
      "query": "build a composite customer health score from product usage signals",
      "should_trigger": false
    },
    { "query": "which usage signals predict churn 90 days out", "should_trigger": false },
    { "query": "design our MQL threshold and lead scoring weights", "should_trigger": false },
    {
      "query": "route inbound leads to reps by territory with weighted round robin",
      "should_trigger": false
    },
    {
      "query": "build the discount approval matrix for non-standard deals",
      "should_trigger": false
    },
    {
      "query": "our stage exit criteria are all based on rep activity, audit them",
      "should_trigger": false
    },
    {
      "query": "run a hygiene audit over our open pipeline and flag the stale deals",
      "should_trigger": false
    },
    {
      "query": "what data should transfer from sales to CS when a deal closes won",
      "should_trigger": false
    },
    {
      "query": "we have 41 GTM tools, help me decide what to consolidate or cut",
      "should_trigger": false
    },
    {
      "query": "am I ready to be a revops director, review my resume against the ladder",
      "should_trigger": false
    },
    {
      "query": "write the job description and interview loop for a revops manager hire",
      "should_trigger": false
    },
    {
      "query": "which revops newsletters and podcasts should I be following",
      "should_trigger": false
    },
    {
      "query": "which skill in this collection should I use for my task",
      "should_trigger": false
    },
    { "query": "write up our quarterly expense report", "should_trigger": false },
    {
      "query": "generate a performance review report for my direct reports",
      "should_trigger": false
    },
    { "query": "build a daily standup report workflow in Slack", "should_trigger": false },
    { "query": "write an executive resume for a CFO role", "should_trigger": false },
    { "query": "summarize how my crypto portfolio performed this month", "should_trigger": false },
    {
      "query": "how do I build predictable outbound pipeline with an SDR team",
      "should_trigger": false
    },
    { "query": "optimize the conversion rate of our signup onboarding flow", "should_trigger": false },
    {
      "query": "draft the management discussion and analysis section of our 10-Q filing",
      "should_trigger": false
    },
    { "query": "help me close the books faster at month end", "should_trigger": false },
    {
      "query": "configure revenue recognition rules in our billing system",
      "should_trigger": false
    },
    {
      "query": "model our ARR out three years in a spreadsheet for planning",
      "should_trigger": false
    },
    { "query": "write up the minutes from our last board meeting", "should_trigger": false },
    { "query": "design the agenda for our company all-hands", "should_trigger": false },
    { "query": "build the pitch deck for our Series C fundraise", "should_trigger": false },
    { "query": "pick a BI tool for our revenue team to standardize on", "should_trigger": false },
    {
      "query": "write me a SQL query that computes NRR from our warehouse tables",
      "should_trigger": false
    },
    { "query": "what commission plan should we pay our AEs next year", "should_trigger": false },
    {
      "query": "our CS team needs a QBR template to run with customer accounts",
      "should_trigger": false
    }
  ]
}
references/metric-dictionary-entry.md›
# Metric dictionary entry - shape and worked example

## Entry shape

Every spine metric gets one entry with exactly these fields. The dictionary is versioned; a change to any field is a new version with a dated note, and the next report footnotes it.

- **Metric**: canonical name and any aliases in circulation.
- **Question it answers**: one sentence; if none, the metric leaves the spine.
- **Formula**: exact arithmetic, including the window.
- **Inclusions / exclusions**: every contested rule (reactivation, netting, base exclusions, windows), resolved in writing.
- **Source of truth**: which system's record wins at which stage, per the field-ownership rules in `mbfinotti/revops-skills@crm-data-governance`.
- **Owner**: the person accountable for the number being right (not the presenter).
- **Cadence and window**: how often computed, over what trailing period.
- **Version**: number, date, and one-line changelog per revision.

## Worked example

**Metric**: Net revenue retention (NRR). Aliases: net dollar retention, NDR.

**Question it answers**: does the existing customer base grow on its own, before any new business?

**Formula**: (starting recurring revenue of the cohort + expansion - contraction - churn) / starting recurring revenue of the same cohort, computed monthly and reported as the trailing-12-month figure.

**Inclusions / exclusions**: cohort is every customer active at the window start; customers acquired inside the window are excluded from both numerator and denominator. One-time fees, services, and variable overage excluded from the recurring base. Same-product seat changes net within the period; a customer dropping product A while adding product B books a contraction line and an expansion line separately. Reactivations within 90 days of churn count as this cohort's expansion; later returns count as new business (resolved 2026-01, do not re-litigate per period).

**Source of truth**: billing system for recurring amounts; CRM for account identity and segment; the ledger wins any dispute on recognized amounts.

**Owner**: RevOps analytics lead computes; finance certifies.

**Cadence and window**: monthly compute, trailing-12 reported; the monthly point-in-time series lives in the appendix only.

**Version**: 1.2 (2026-01) - reactivation rule added; 1.1 (2025-07) - overage excluded from base; 1.0 (2025-02) - initial.

## What a bad entry looks like

"NRR = net revenue retention, standard formula, from the dashboard." No cohort rule, no window, no exclusions, no owner - which means every producer computes it differently, and the first time two artifacts disagree the meeting becomes a definitions debate. The entry above exists precisely so that debate happens once, in writing, and never again in the room.
references/metric-spine.md›
# Metric spine by business model

## Table of Contents

- [Selecting the spine](#selecting-the-spine)
- [B2B contract subscription](#b2b-contract-subscription)
- [Usage / consumption-based](#usage-consumption-based)
- [PLG / self-serve](#plg-self-serve)
- [B2C / transactional / marketplace](#b2c-transactional-marketplace)
- [Stage tiering](#stage-tiering)
- [Contested definitions to lock before first ship](#contested-definitions-to-lock-before-first-ship)
- [On benchmarks](#on-benchmarks)

## Selecting the spine

The cap is the whole problem. Five to six metrics, eight absolute, means every metric admitted is another one refused - so rank candidates by decisions changed per unit of production cost, never by how standard the metric looks on a board deck.

Production cost here means analyst hours to compute, whether the systems already emit the data, how much reconciliation against finance it drags in, and how often the thing must be rebuilt. Never a currency amount.

Default order for B2B contract subscription:

- **efficiency (build first)**: pipeline coverage > win rate > recurring-revenue waterfall > retention pair (NRR/GRR) > attainment distribution > growth-plus-margin > acquisition payback > bookings/billings/recognized lines
- **value (decisions changed)**: waterfall > retention pair > coverage > payback > attainment distribution > win rate > growth-plus-margin > bookings/billings/recognized lines
- **production cost (highest first)**: payback > waterfall > bookings/billings/recognized lines > retention pair > attainment distribution == coverage == win rate > growth-plus-margin
- **compliance cost (highest first)**: recognized revenue == any figure already circulated externally > every other spine metric

Ties, justified:

- Attainment, coverage and win rate are each one query against the CRM the team already keeps, an hour, no finance dependency, rebuilt by re-running the same query. Genuinely equal cost, not an undecided call.
- Recognized revenue and an externally circulated figure tie on compliance cost because both bind the report to the auditor's basis: correcting either is a re-issue and a notice, not a footnote. Every other spine metric is an internal management number that a dated dictionary entry can redefine.

Placements worth the argument:

- Payback costs more than the waterfall because it needs everything the waterfall needs _plus_ marketing and sales spend attributed by period and segment, from a system RevOps usually does not own.
- The waterfall places third on efficiency only because its cost is shared: build it once and the retention pair, the miss decomposition, and the bridge in every future report come nearly free. Scored alone it would sit below attainment.
- Growth-plus-margin is the cheapest row on the page - finance already produces both inputs - and still near the bottom, because an arithmetic composite of two numbers the board already has changes almost no decisions by itself.
- Bookings/billings/recognized sits last as a _printed spine row_, not as work: reconcile all three every period regardless (workflow step 4), and print all three only when the bases diverge materially - multi-year contracts, ramped deals, heavy services.

Default rung: coverage, win rate, waterfall, retention pair, attainment distribution - five metrics, one finance dependency. Move up one rung when a spend-allocation decision is actually on the table this period, or a fundraise or board question turns on efficiency rather than growth.

**What this order starves**: acquisition payback and cohort retention curves - the two metrics that most change strategy and cost the most to produce. A spine picked purely on ratio ends up all velocity and no durability, which reads healthy right up to the quarter the base stops holding. Promote both when the company is past early venture, a fundraise sits within two quarters, or a warehouse already models revenue by cohort - that last one collapses their cost and promotes them automatically.

**Delete, do not demote**, when the user's data rules a metric out:

- No stable customer identity across billing and CRM, or history shorter than the retention window: delete the retention pair and cohort curves. Report the movement bridge and state that retention is not yet measurable.
- No spend attributable by period and segment: delete payback rather than shipping a blended one.
- No quota-carrying sales team: delete attainment distribution.
- Single-year contracts, no ramps, no services: delete the bookings/billings/recognized lines from the printed spine.

A ruled-out metric parked at the bottom of a menu reappears as scope the week before the board meeting.

**Re-rank, do not apply.** This order is a default, not a law - it shifts with context and with who executes it. Re-rank against everything already known about the user:

- An existing revenue model in the warehouse promotes every cohort metric.
- A board deadline landing inside the finance close demotes everything needing certification.
- An analyst team of one caps the spine at five single-system metrics.

The Interview's three scoping questions (deadline, one-off versus compounding asset, effort ceiling) decide most of this before any metric is chosen.

Standing rules, independent of the ranking:

- Same spine, same order, every period - trend readability beats novelty.
- A metric enters only by replacing one, and the swap is footnoted.
- Every spine metric must answer a question the audience will act on; a metric nobody would change a decision over is appendix material.
- Prefer bridges over nets (show the movements, not just the delta) and distributions over averages (attainment bands, deal-size spread, cohort curves).

## B2B contract subscription

Rows in efficiency order; take the first five or six that survive the deletion rules above.

| Metric                                                                                                  | Question it answers                                     | Production cost                                                                                                                      | Definition traps to lock                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pipeline coverage (unweighted) with weighted pipeline as a separate line                                | Is next period's number backed by enough real pipeline? | An hour; CRM close dates only, no finance dependency; re-run each period                                                             | Scope to deals with close dates inside the period, renewals stripped; never divide weighted pipeline by target - the coverage multiple already discounts risk, doing both discounts twice; derive the multiple from own close rates, not a circulating rule of thumb |
| Win rate (count and dollar-weighted)                                                                    | Are we converting, and does it differ by deal size?     | Near-zero; the same CRM query set as coverage                                                                                        | Denominator is decided deals only (won + lost); count vs. dollar divergence is itself a finding; in concentrated books show the rate with and without the largest deal                                                                                               |
| Recurring-revenue waterfall (beginning + new + expansion + reactivation - contraction - churn = ending) | Where did growth actually come from?                    | A standing job: every movement classified at contract level, monthly, tied to finance at close - and the input four other rows reuse | Never net expansion against contraction; monthly resolution (a quarterly bridge hides offsetting months); exclude one-time fees and services from the recurring base                                                                                                 |
| Net and gross revenue retention (trailing-12)                                                           | Does the existing base grow or shrink on its own?       | Near-zero once the waterfall exists; a week standalone                                                                               | Fixed starting cohort, new customers excluded; gross retention capped at 100%; state the window - point-in-time monthly retention is too volatile to report alone                                                                                                    |
| Quota attainment distribution                                                                           | Is the number carried by the team or by two reps?       | An hour; needs current quota per rep alongside the CRM record                                                                        | Report share at/above 100%, 70-100%, below 70%, and top-two-rep concentration - never the mean alone                                                                                                                                                                 |
| Growth-plus-profitability read (e.g. growth rate + margin)                                              | Is the growth/efficiency trade healthy?                 | Near-zero arithmetic, but gated on the finance close                                                                                 | Name the profit measure used (operating, EBITDA-style, free-cash-flow) - the choice moves the score materially; keep it constant across periods                                                                                                                      |
| Acquisition payback (gross-margin adjusted)                                                             | How fast does acquisition spend return?                 | A standing job: spend attributed and lagged from a system RevOps rarely owns, gross margin certified by finance                      | Use subscription gross margin only; lag the spend to the period that generated the revenue; split new-logo from expansion - blending hides a segment burning cash                                                                                                    |
| Bookings / billings / recognized revenue                                                                | What was committed vs. invoiced vs. earned?             | A week per period; the deferred-revenue tie is the reconciliation itself                                                             | State total-contract vs. annualized basis - multi-year totals inflate 2-3x against annualized; the three only tie via the change in deferred revenue                                                                                                                 |

## Usage / consumption-based

Keep the waterfall shape but treat the recurring base as behavioral, not contractual.

- **efficiency (build first)**: commitment/overage mix > consumption-based net retention > seasonality split > revenue run-rate
- **value**: consumption net retention > commitment/overage mix > seasonality split > revenue run-rate
- **production cost (highest first)**: consumption net retention > seasonality split > commitment/overage mix > revenue run-rate

Run-rate is the cheapest line available and still last: annualizing a recent period manufactures a contractual-looking number the business does not have, and no decision hangs on it. Delete the seasonality split when the history is shorter than two comparable cycles - without the prior year it is a guess dressed as a control, not a lower-ranked option.

- Commitment vs. overage mix, and utilization against committed capacity - straight from the billing system, an hour, no finance dependency. These are the leading indicator pipeline coverage plays in contract businesses.
- Consumption-based net retention (same-cohort revenue vs. its prior-year revenue), with the comparison window written into the dictionary - a week to build, near-zero after, and the only line that says whether usage is deepening or decaying.
- Seasonality split: separate seasonal consumption dips from health degradation before reporting either; a holiday-quarter dip reported as churn is a false alarm that costs credibility.
- Revenue run-rate (annualized recent period) with the annualization basis stated, only where the audience requires one; some usage businesses decline to report a recurring-revenue figure at all - if so, say so rather than manufacturing one.

## PLG / self-serve

The subscription spine applies, plus the funnel that feeds it.

- **efficiency (build first)**: self-serve vs. sales-assisted revenue split > conversion-to-paid cohort rate > activation rate > engagement ratio
- **value**: conversion-to-paid > self-serve/assisted split > activation > engagement ratio
- **production cost (highest first)**: activation rate == conversion-to-paid rate > engagement ratio > self-serve/assisted split

Activation and conversion tie on cost because both need the same build: product events joined to the billing record with cohort identity preserved. Once that join exists, both are near-free; neither exists before it. The self-serve/assisted split leads on efficiency only when a motion flag already sits on the revenue record - if it does not, that is a field-ownership fix first, and it drops behind the funnel rates for this cycle.

- Signups, activation, conversion to paid, expansion - each as a cohort rate, never a cumulative count.
- Self-serve vs. sales-assisted revenue split, because the two motions carry different payback and retention profiles and blending them hides both.
- Delete the engagement ratio outright where the product's natural frequency is low. A valuable low-frequency product measured against a daily/monthly ratio looks broken and invites exactly the wrong decision; remove it rather than reporting it last.

## B2C / transactional / marketplace

- **efficiency (build first)**: volume / net revenue / take rate as three lines > repeat purchase rate > cohort retention curves > contribution-margin layers
- **value**: cohort retention curves > contribution-margin layers > take rate > repeat purchase rate
- **production cost (highest first)**: contribution-margin layers > cohort retention curves > repeat purchase rate > the three volume lines

**What this order starves**: cohort curves and the deepest contribution-margin layer - the two that actually decide acquisition spend. Promote both whenever spend allocation is the decision on the table: retained customers collapse the acquisition layer, which is why retention resets the economics, and any margin layer above the acquisition line always flatters.

- Gross transaction volume, net revenue, and take rate as three separate lines - volume is not revenue, and conflating them overstates the business. Near-zero cost from the payment or ledger record.
- Repeat purchase rate over a stated window - an hour once customer identity exists; the window changes the answer materially, so the dictionary must fix it.
- Cohort retention curves with shape commentary: a curve decaying to zero, a curve that flattens, and a curve that ticks back up are three different businesses. A week to build the order history keyed to customer identity, near-zero after.
- Contribution-margin layers (product margin, then after variable fulfillment/payment/returns, then after acquisition cost): report the deepest layer, not the most flattering one. A standing job - fulfillment, payment and returns costs allocated per order, reconciled with finance.
- Delete cohort curves and repeat purchase rate when orders carry no stable customer identity (guest checkout, no accounts); report the three volume lines and contribution margin instead of a curve built on a guess.
- Delete any single lifetime-value constant rather than ranking it: inputs are interdependent and churn is behavioral, so the number is fragile in exactly the direction that flatters.

## Stage tiering

Stage deletes candidates; it does not reorder them.

- **Pre-institutional / earliest**: acquisition cost, conversion, retention signal, runway. Delete efficiency composites and attainment distribution from the menu entirely - the data to compute them honestly does not exist yet.
- **Early venture**: restore the retention pair, payback, sales-cycle and win-rate reads as the motion stabilizes.
- **Growth and later**: the full menu, ranked as above.
- Resist audience pressure to report a later stage's metrics than the data supports - an unstable metric reported to look mature restates within two quarters.

## Contested definitions to lock before first ship

Lock only the definitions touching a metric that survived selection; the rest are next cycle's work, not this one's. Write each resolution into the dictionary - every one of these is a known fight, and the only wrong answer is changing the rule between periods.

1. Reactivation: returning churned customers as new business or a separate row.
2. Netting: same-product within-period up/down movements net; cross-product movements book separately.
3. Recurring-base exclusions: one-time fees, services, variable usage in or out.
4. Contract basis: total-contract vs. annualized bookings; ramped deals at year-one or full-ramp value.
5. Retention window and cohort: trailing-12 vs. point-in-time; which segments/product lines the base includes.
6. Win-rate denominator: decided-deals-only, and period assignment by decision date.
7. Coverage scope: in-period close dates only, renewals excluded, unweighted.
8. Payback basis: margin adjustment, spend lag, new-logo vs. blended.
9. Profitability measure in any growth-plus-margin composite.
10. Repeat-purchase / retention measurement window (consumer and transactional models).

## On benchmarks

External benchmark figures age fast and shift by segment, price point, and motion. Derive every threshold (coverage multiple, healthy retention, payback target) from the team's own history first; when an external figure is quoted, date it and name its source in the deck, and never present it as a law.
references/worked-report-example.md›
# Report shape and worked example

## Section order

Board deck or monthly executive review, main body in this order; validate section by section with the user before finalizing:

1. **The answer** (one page): period verdict vs. plan, the single biggest driver, the response underway, the decision being asked.
2. **Priorities status**: the three to five commitments from last period, each with a plain on-track / at-risk / off-track call.
3. **Spine scorecard**: every spine metric as plan / actual / forecast, same order as last period.
4. **The miss or the beat, decomposed**: movement bridge, cause at stated confidence, fix, owner, proof metric.
5. **Forward look**: next-period forecast with its confidence basis (coverage, cohort trend), reset targets if any.
6. **Decisions**: each with context and a recommendation - never an open question with no proposed answer.
7. **Appendix**: full bridges, cohort tables, segment cuts, definitions changelog.

## Good vs. bad opening

**Bad** (a tour, not an answer): "Q3 Revenue Overview. This quarter we closed 47 deals across three segments. Slide 2 shows monthly recurring revenue by month; slide 3 shows pipeline by stage; slide 4 shows win rate by region..." Ten slides in, the reader still does not know whether the quarter was good.

**Good** (the whole story on page one): "We ended Q3 at $30.7M ARR, $0.9M under the $31.6M plan. The miss is entirely new-logo bookings - retention held at plan. Root cause is confirmed: pipeline created in Q2 was 40% below target, so Q3 started under-covered. The fix (two demand programs reallocated, started week 2 of Q3) shows in Q4 pipeline, but Q4 coverage is still 2.4x against the 3.1x our own close rates require, so we forecast $31.9M ending ARR against the $33.4M plan and are asking the board to approve the revised Q4 target and the $400K demand-generation reallocation."

## Worked example - quarterly board revenue section, with a miss

Fictional B2B subscription company; all numbers illustrative and internally consistent.

**Page one - the answer.** As the good opening above. Verdict, driver, response, ask, in four sentences.

**Spine scorecard** (plan / actual / forecast next period):

| Metric                                   | Plan      | Actual    | Next-period forecast     |
| ---------------------------------------- | --------- | --------- | ------------------------ |
| Ending ARR                               | $31.6M    | $30.7M    | $31.9M (plan was $33.4M) |
| Net-new ARR                              | $3.2M     | $2.3M     | $1.2M                    |
| NRR (trailing-12)                        | 110%      | 108%      | 108%                     |
| GRR (trailing-12)                        | 91%       | 91%       | 91%                      |
| Pipeline coverage (next qtr, unweighted) | 3.1x      | 2.4x      | -                        |
| Win rate (decided deals, count / dollar) | 24% / 27% | 25% / 21% | -                        |

**The miss, decomposed** (movement bridge; offsets shown, not netted):

| Movement       | Plan       | Actual     | Gap        |
| -------------- | ---------- | ---------- | ---------- |
| Beginning ARR  | $28.4M     | $28.4M     | -          |
| New business   | +$2.6M     | +$1.9M     | -$0.7M     |
| Expansion      | +$1.1M     | +$1.1M     | -          |
| Reactivation   | +$0.1M     | +$0.1M     | -          |
| Contraction    | -$0.3M     | -$0.3M     | -          |
| Churn          | -$0.3M     | -$0.5M     | -$0.2M     |
| **Ending ARR** | **$31.6M** | **$30.7M** | **-$0.9M** |

Narrative under the table: "$0.7M of the gap is new business - confirmed cause is Q2 pipeline creation, 40% under target, which left Q3 starting at 2.1x coverage against the 3.1x our own history requires (root-cause detail: separate diagnostic, summarized in appendix). $0.2M is churn: two logos, both flagged at-risk two quarters ago, both in the segment we are deprioritizing - not a new pattern. Note the dollar-weighted win rate fell to 21% while count-based held at 25%: we are winning smaller deals, which is consistent with the under-covered enterprise pipeline, and is the number to watch next quarter."

**Forward look**: "Q4 forecast is $31.9M ending ARR at moderate confidence: coverage is 2.4x against a 3.1x requirement, so the forecast already assumes below-plan new business; retention assumptions are unchanged and have held for four quarters. Proof metric for the demand fix: Q4-created pipeline, reported at the next meeting against a $9.5M target."

**Decisions**: "1. Approve revised Q4 ending-ARR target of $31.9M (recommendation: approve; holding the original target would force pull-forward behavior that costs Q1). 2. Approve $400K reallocation from field events to the two demand programs showing 3x the pipeline-per-dollar in our own last-two-quarter data (recommendation: approve)."

Why this works:

- The miss leads.
- Nothing is netted or smoothed.
- The churn offset is shown separately from the bookings gap.
- The cause carries a confidence label with the investigation referenced rather than replayed.
- Every forward number states its basis.
- Both asks arrive with a recommendation.

The board's first question is a decision, not "wait, how do you define NRR?"
SKILL.md›
---
name: revenue-reporting
description: Define the metric set and narrative structure for an executive or board revenue report so it tells one coherent story - a small stable metric spine, locked definitions, an answer-first narrative around plan vs actual vs forecast, presenting a miss without surprising the board, the reconciliation and sign-off chain, and weekly vs monthly vs quarterly cadences. Use whenever the user mentions a board revenue report, exec deck metrics, the QBR revenue section, a monthly revenue review, an investor update, or a board deck that reads as a data dump - even if they never say "reporting". Covers B2B subscription, B2C, transactional, usage-based, and PLG. Do NOT use for designing the org-level KPI hierarchy - use mbfinotti/revops-skills@revenue-kpi-framework instead.
license: MIT
metadata:
  author: Maya-Beth Finotti
  version: "1.3.1"
---

# Revenue Reporting

Build the executive or board revenue report as one coherent story: a small, stable metric spine wrapped in an answer-first narrative organized around plan vs. actual vs. forecast. The hard part is rarely the arithmetic - it is agreeing on definitions, reconciling the CRM record against the finance record, and making sure the board never learns bad news live.

Scope boundary, stated up front:

**In scope:**

- What goes in the report and how it reads.
- The number and its confidence.

**Out of scope:**

- Building a dashboard in any specific BI tool.
- Designing the org-level KPI framework (which metrics matter at which org level and how they roll up) - a separate strategy exercise outside this repository.
- Investigating why a forecast was wrong - hand that to `mbfinotti/revops-skills@sales-forecast-diagnostic`, then use this skill to turn the finished diagnosis into the board narrative.

## Interview

Ask before proposing anything. One question per message; offer multiple-choice options when possible. Skip anything already answered.

- What is the business model - B2B contract subscription, usage/consumption-based, PLG/self-serve, B2C/transactional/marketplace, or mixed?
- Which artifact is being built - quarterly board deck, monthly executive review, weekly revenue review, an investor update, or the whole cadence stack?
- What stage is the company - pre-institutional, early venture, growth, or late? (The spine tightens and shifts with stage.)
- What exists today - nothing, an ad-hoc deck rebuilt each period, or a recurring report people have stopped trusting?
- Do written metric definitions exist anywhere, and do any two dashboards currently disagree on a spine metric (recurring revenue, retention, coverage)?
- Who produces the numbers today - RevOps/ops, finance, a founder - and does finance certify them before they ship?
- What is this period's story - on plan, a miss, a beat, or unknown until reconciliation?
- Which data is reachable - CRM/pipeline record, billing system, general ledger, product usage events?
- By when must this land - the next board meeting, this month's close, or no fixed date?
- One-off artifact, or a recurring asset rebuilt every period from here on?
- What is the effort ceiling - analyst hours per period, whether finance will reconcile on request, and whether a warehouse or semantic layer already models revenue?

The last three questions set the spine ranking before any metric is chosen:

- **Deadline inside the finance close**: drops every metric needing certification (payback, growth-plus-margin, the three-basis lines) out of this cycle.
- **Compounding mandate**: builds the recurring-revenue waterfall and the dictionary first despite their cost, since every later period reuses them.
- **One-off artifact**: skips both and reports the bridge from a billing export.
- **Low effort ceiling**: caps the spine at five single-system metrics.
- **Existing revenue model in the warehouse**: promotes every cohort metric to the top of the order.

## Workflow

1. Run the Interview; fix the artifact, audience, model, and cadence before touching metrics.
2. Choose the metric spine: five to six core metrics, eight at the absolute cap. Rank candidates by decisions changed per unit of production cost - analyst hours, data the systems already emit, reconciliation burden against finance, how often it must be rebuilt - never by how standard the metric looks. Default B2B order, highest ratio first: pipeline coverage > win rate > recurring-revenue waterfall > retention pair > attainment distribution > growth-plus-margin > acquisition payback > bookings/billings/recognized lines. It is a default, not a law: re-rank it against the Interview answers and against everything else already known about the user, and delete a metric their data rules out rather than ranking it last. Full axes, justified ties, per-model orders, stage deletions and the durability metrics this order starves are in [references/metric-spine.md](references/metric-spine.md). The same spine repeats every period so trends stay visible; a metric enters only by replacing one, with the swap footnoted.
3. Lock definitions: write a dictionary entry for every spine metric - formula, inclusions/exclusions, source of truth, owner, window, and every contested rule resolved in writing (entry shape and worked example in [references/metric-dictionary-entry.md](references/metric-dictionary-entry.md)). Field ownership and source-of-truth rules come from `mbfinotti/revops-skills@crm-data-governance` - reference them, do not redefine them here. Freeze the dictionary before drafting; definition changes mid-cycle are what make numbers move between meetings.
4. Reconcile before narrating: the CRM read (bookings, pipeline) and the finance read (billed, recognized) diverge by design and only tie at the contract level over the full term - the check is that billings minus recognized revenue equals the change in deferred revenue, and that the headline number matches what finance will certify. When the harness can execute code, script the bridge and the reconciliation from a two-file export (billing/GL revenue by account, CRM bookings by deal); otherwise request the finance-certified totals and reconcile by hand. Never ship a number finance has not seen.
5. Build the plan-vs-actual-vs-forecast table for every spine metric - the three columns every discussion hangs from. Show movement bridges (beginning, additions, losses, ending) rather than netted deltas, and distributions rather than averages wherever a distribution exists (attainment, deal size, cohort curves).
6. Write the narrative answer-first: verdict, cause, response, ask - on the first page. Structure per the Narrative section below; worked report, and a good-vs-bad opening, in [references/worked-report-example.md](references/worked-report-example.md).
7. If the period is a miss, follow the Presenting-a-miss section: quantify it, state the cause at the confidence actually held, name the fix and its proof metric. Root-cause depth belongs to `mbfinotti/revops-skills@sales-forecast-diagnostic`, not to this report.
8. Assemble to cadence (see Cadence): short main body, everything backward-looking and detailed in the appendix, deck shipped as a pre-read days before the meeting. Optionally pass the narrative prose through a humanizer skill before sign-off.
9. Run the sign-off chain:
   - RevOps publishes to a deadline.
   - Finance certifies against the ledger.
   - Each functional leader validates their section.
   - CEO/CFO approve.
   - The pre-read ships three to four days ahead.
   - Short pre-wire calls surface reactions before the room does.
10. Check the Measurement thresholds below; fix and re-check until every one holds.
11. When the harness has persistent memory, store the locked dictionary, the spine, and a restatement log - the next period starts from them instead of re-deciding. Otherwise keep the dictionary as a versioned document wherever the team already keeps documents.

## Narrative structure

- Answer first, evidence beneath (Pyramid Principle / BLUF): the first page states the period verdict, the single biggest driver, the response underway, and the decision being asked of the audience. A reader who stops there has the whole story.
- Plan vs. actual vs. forecast is the organizing spine; every section is "what happened, why, what we are doing about it" - never a tour of charts.
- The deck is a pre-read; the meeting is for decisions. Aim the live agenda at forward decisions - practitioners converge on roughly two-thirds of board time forward, one-third backward - and let the backward detail live in the pre-read and appendix. The silent-read narrative memo practice pushes the same direction: prose forces complete arguments where bullets hide gaps.
- Keep the main body short. A main body that has grown past roughly twenty to thirty slides has become the pre-read; split it and rebuild the summary.
- Track the same metrics every meeting, in the same order, so trend is readable across periods without re-orientation.

## Presenting a miss

- No surprises, ever: every material negative appears in the pre-read and in pre-wire calls before the meeting. Bad news learned live costs more trust than the miss itself.
- Hit the bad news early in the document and end on the strongest true note - never sandwich the miss into an appendix.
- Never smooth: report the raw series and let the volatility show; smoothing defers the uncomfortable conversation and destroys the variance a reader needs. Offsetting movements are reported separately, not netted into a quiet-looking total.
- Anatomy of a reported miss:
  - The gap quantified against plan.
  - The driver named with the confidence actually held ("root cause confirmed" vs. "under investigation, findings next period").
  - The fix with an owner and the single metric that will prove it worked.
  - The forecast restated with the miss's cause reflected.

  If the cause is not yet confirmed, say so - a premature cause presented as fact is the next restatement.

- "Macro environment" is not a cause unless data separates market movement from execution.

## Reconciliation, restatement, and sign-off

- Ownership split:
  - RevOps publishes the numbers.
  - Finance certifies them.
  - Leadership decides.

  RevOps holds a publishing deadline, not a presenting role; a report finance cannot reconcile to the ledger does not ship.

- One definition beats one system: CRM and ledger will always disagree in-period - the fix is a written definition of what "right" means at each stage (sourced, contracted, billed, recognized), not a debate about which system wins.
- Restatement etiquette: when a shipped number was materially wrong, restate it visibly.
  - Label the column "as restated".
  - Footnote the cause and per-line effect.
  - Log it.

  Silent corrections are how trust dies. Repeated restatements are a controls problem to fix at the source, not a formatting problem.

- Numbers freeze when the pre-read ships. A correction after that point is a restatement, communicated as one - never a quietly different number in the room.

## Cadence

Three artifacts, not one report at three speeds - each has its own audience, depth, and forward commitment:

| Dimension        | Weekly revenue review                       | Monthly executive review                     | Quarterly board meeting                                       |
| ---------------- | ------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------- |
| Audience         | Revenue team + ops                          | Functional heads + CFO                       | Executive team + board                                        |
| Focus            | Current-period execution, deal/account risk | Plan-vs-actual trends, funnel, efficiency    | Full spine + narrative + decisions                            |
| Artifact         | Live view, no narrative                     | Scorecard + one-page narrative               | Pre-read deck + appendix + pre-wire                           |
| Forward edge     | This period's commit                        | Next month's priorities                      | Reset targets, capital, hiring                                |
| Preparation cost | Near-zero per run once the live view exists | An hour to a day, gated on the finance close | A week or more: pre-read, appendix, pre-wires, sign-off chain |

These are layers, not competing options, so no efficiency ranking applies between them - each answers a different audience's question, and weekly execution signals feed the monthly trend read, which feeds the quarterly reset. Ranking three artifacts that do not substitute for each other would be false precision.

What does need an order is what gets dropped when the effort ceiling binds:

- **First**: the monthly narrative (the weekly view plus a short written trend note covers it).
- **Second**: the weekly commentary.
- **Never**: the quarterly board artifact - it carries an external obligation the other two do not.

An analyst team of one should plan for that collapse in week 1, not discover it in week 12.

Escalate a topic one layer up only when it needs that layer's audience to decide.

## B2B and B2C / transactional / usage-based / PLG

- **Structurally identical across all models, state this in the deliverable.** These all carry over unchanged:
  - The movement-bridge shape (beginning, additions, losses, ending).
  - The plan-vs-actual-vs-forecast spine.
  - Cohort logic.
  - The answer-first narrative.
  - The reconciliation and sign-off chain.
  - The no-surprises discipline.
  - The cadence stack.
- **What changes is the atoms.** A contractual recurring base does not exist in consumption, transactional, and consumer models - the "recurring" number is a behavioral output. Swap spine atoms accordingly (per-model spines in [references/metric-spine.md](references/metric-spine.md)):
  - Gross transaction volume vs. net revenue vs. take rate.
  - Cohort retention curve shape.
  - Repeat purchase rate.
  - Contribution-margin layers.
  - Engagement ratios.
  - Consumption-based retention.
- Never annualize a month that contains one-time or seasonal revenue into a run-rate without saying so; consumption businesses in particular must separate seasonality from health degradation before either is reported.
- Benchmark against the matching model and the team's own history - seat-based subscription benchmarks flatter or slander every other model.

## Failure modes

| Trap                                      | Why it fails                                                                        | Fix                                                                                              |
| ----------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| Data-dump deck                            | Audience reconciles charts instead of deciding                                      | Answer-first page one; detail to appendix; spine capped                                          |
| Definitions drift between meetings        | Same words, different numbers - the meeting becomes a definitions debate            | Frozen versioned dictionary; changes only as footnoted restatements                              |
| Two dashboards disagree on a spine metric | Credibility of every number collapses with the first contradiction                  | Reconcile to one written definition before the deck ships, never in the room                     |
| Smoothed or netted series                 | Hides the movement that was the signal; irreversible once raw variance is discarded | Raw series, bridges over nets, offsets reported separately                                       |
| Vanity metric creep                       | Cumulative charts and flattering cuts always go up; they carry no decision          | Cohort and distribution views; every metric must answer a question                               |
| Averages hiding distributions             | Two teams share a mean and nothing else                                             | Report attainment and deal-size as distribution bands                                            |
| Stage-mismatched spine                    | Late-stage efficiency metrics on an early company (or the reverse) mislead          | Stage tiering in the spine reference; resist audience pressure to report a stage not yet reached |
| Benchmarks asserted as fact               | Circulating numbers are dated and segment-specific                                  | Derive thresholds from own history; date and attribute any external figure                       |
| Surprise in the room                      | Trust erodes immediately and permanently                                            | Pre-read plus pre-wire calls; misses early in the document                                       |

## Measurement and pass thresholds

The report must pass every check below before it ships; iterate until it does:

- **Spine discipline**: at most 8 spine metrics in the main body (target 5-6); 100% of the prior period's spine metrics reappear with identical definitions, or the change is footnoted as a restatement.
- **Durability check**: the spine carries at least one durability metric (retention pair, cohort retention curve, consumption net retention, or margin-adjusted payback), or the report states which data gap deleted it. A spine ranked purely on production cost drifts to all velocity metrics and reads healthy until the base stops holding.
- **Definition coverage**: every spine metric has a dictionary entry with formula, source of truth, owner, and window; zero metrics in the deck without one.
- **Reconciliation**: the headline revenue number matches the finance-certified figure exactly, or the reconciling item is named in the deck; the billings/recognized/deferred identity checks out on the numbers shown.
- **Answer-first test**: hand page one alone to a reader with no context; they must be able to state the period verdict, the biggest driver or risk, and the ask. Any of the three missing fails the report.
- **Miss handling**: every material gap to plan appears in the first third of the document with a cause-confidence label, an owner, and a proof metric; nothing material appears for the first time after the appendix boundary.
- **Meeting design** (board cadence only): the live agenda allocates the majority of time - target two-thirds - to forward decisions, and every decision item names the decision, the context, and a recommendation.

After shipping, track these ongoing signals:

- **Restatement count per year**: rising means a controls problem upstream.
- **Whether meetings end with recorded decisions**: a recurring meeting that stops producing decisions means the artifact has drifted back into a data dump.

## Optional integration note

Skip this section unless the user names one of these platforms.

- **Semantic layers** (dbt MetricFlow, Cube, Looker/LookML): implement the versioned metric-dictionary discipline in code, define each spine metric once there and let every dashboard read the same definition.
- **Salesforce**: forecast-category fields are editable independently of stage, and report-time roll-ups can differ from dashboard snapshots - certify against an export, not a live view.
- **HubSpot**: default deal-stage probabilities are editable placeholders, not measured conversion - never let a weighted-pipeline figure built on them reach the deck unadjusted.

## Reference

- See [references/metric-spine.md](references/metric-spine.md) for the spine per business model, stage tiering, and the contested definitions to lock before first ship.
- See [references/metric-dictionary-entry.md](references/metric-dictionary-entry.md) for the dictionary entry shape and a worked example.
- See [references/worked-report-example.md](references/worked-report-example.md) for the report shape, a worked quarterly example with a miss, and a good-vs-bad narrative opening.
- `mbfinotti/revops-skills@revenue-kpi-framework` for designing the org-wide metric tree this report selects from - that skill decides which metrics exist and how they reconcile up, and this one turns the resulting spine into one narrative for one audience.
- `mbfinotti/revops-skills@revenue-data-governance-strategy` when the definitions themselves are contested across systems or functions - it settles whose ARR wins and who may change it, which this report's dictionary then cites rather than re-litigates.
- `mbfinotti/revops-skills@sales-forecast-diagnostic` to investigate why a forecast missed.
- `mbfinotti/revops-skills@crm-data-governance` for the field-ownership and source-of-truth rules the metric dictionary depends on.
- `mbfinotti/revops-skills@sales-pipeline-hygiene` for the recurring audit that keeps pipeline-derived spine metrics (coverage, win rate) trustworthy.
- `mbfinotti/revops-skills@pipeline-stage-definition-audit` when weighted pipeline is distrusted because stages are not buyer-verifiable.