Make revenue reporting a weekly habit that drives action.
Pairs a where-we-stand-and-why write-up with a list of hot leads and deals to work now, so the report ends in moves, not a screenshot.
Inside: The accuracy contract, the five-step position analysis, and the action layer.
Install it in one line, or paste it in.
~/.claude/skills/ and runs automatically when it is relevant.Connect your context. Set it to your motion.
it reads every summary tab automatically and reconciles row counts.
it pulls the open pipeline and the deals behind the forecast so the action layer names real accounts.
it adds usage momentum to the hot-leads list.
This was built for a B2B SaaS org reporting ARR across a direct-sales and a self-serve channel. Set these to your stack:
Point it at your metrics and your channels, not anyone else's. The skill narrates position and variance, whatever your revenue model is.
| Set this | What it is | Default / Example |
|---|---|---|
| SOURCE | where your numbers live | a summary sheeta BI exporta CSV |
| TOP_METRIC | your headline number | Total ARRMRRnet revenue |
| CHANNELS | how you split the business | Direct Sales vs Self-ServeNew vs Expansion |
| TARGET / FORECAST / CURRENT | the three numbers you never blur | committed goal / team commitment / what has closed |
| VARIANCE_FLAG | the gap that earns a red flag | 10% of target (yellow at 5-10%) |
| ACTION source | where the hot leads and deals come from | your CRMa pipeline export |
| CADENCE | how often the report runs | weekly pacingmonthly retrospectivequarterly review |
Everything the skill does, in full.
Reports the number, then tells you what to do about it. It leads with total ARR against target, splits the gap into the channels and sub-channels driving it, compares what has closed to what is forecast to where you need to land, and closes with an action layer: the hot leads and the deals that need a push this week. It turns a backward-looking wrap-up into the rhythm the team actually runs on.
- 1The accuracy contract
Revenue reporting is where a wrong number costs the most, so accuracy is not optional.
- Every number traces to a specific cell. If you cannot point to a row, say "data unavailable" instead of guessing.
- Verify the period first, always. Read the "as of" and "period covered" dates, echo them at the top, and stop if they do not match what was asked.
- Read the forecast the sheet already computes. Never run your own pacing math on top of a number the source already calculated.
- Never narrate an error cell. Skip it or note "data unavailable," never print the glyph.
- Never mix a monthly and a quarterly period in the same section. Crossing streams produces wrong numbers that look right.
- 2Revenue-position analysis (five steps)
- Headline. Lead with the top metric against target: above, below, or on target, in both dollars and percent.
- Break down by channel. Which channel is driving the gap or the surplus.
- Drill into the driver. For the channel with the biggest variance, analyze the sub-channel breakdown (new business vs churn, upgrade vs reactivation).
- Forecast comparison. Current vs Forecast vs Target: are you tracking to close the gap by period end.
- Forward outlook. What the forecast says about where you land, quantified.
- 3The three definitions (never blur these)
Target is the committed goal. Forecast is what the team commits to based on current visibility. Current is what has actually closed as of the date. "We are at X" is ambiguous, always say which.
- 4Variance flagging
Flag any metric where variance exceeds VARIANCE_FLAG of target. Color it: green on or above target, yellow in the 5-10% watch zone, red past 10%.
- 5The action layer
A report nobody acts on is a rear-view mirror. Close every wrap-up with what to do now: the hot leads worth a touch this week, and the open deals whose forecast the number depends on. This is what turns reporting into an operating rhythm rather than a recap.
- Period verification runs before analysis, every time. No exceptions.
- Every headline number is traceable to a source cell, or it is not reported.
- Forecast is read from the source, never recalculated.
- Variance is flagged by the same thresholds every time, so this week compares to last week.
REVENUE WRAP-UP · as of Apr 30 · period: April · cadence: Monthly Headline: April closed 4.9% under the Total ARR target, driven almost entirely by Direct Sales. Self-Serve held the line. Metric Current Target Variance ($) Variance (%) Total ARR $8.50M $8.94M -$440K -4.9% (yellow) DS ARR $4.54M $5.00M -$460K -9.2% (yellow) SS ARR $3.96M $3.93M +$30K +0.6% (green) Driver: DS churn ran well above plan; new business landed light. Offsetting: expansion came in near 2x target, reactivation added upside. Forecast: on the current forecast, next period closes within 2% of target if the two slip-risk deals below hold. ACTION LAYER Hot leads: 3 accounts replied or engaged this week, no follow-up yet. Deals to work: 2 slip-risk deals the forecast depends on. Push both before period end.
The 10% variance flag (yellow at 5-10%) and the monthly cadence are defaults, not laws. They suited a mid-market SaaS reporting rhythm. If your business runs tighter or looser, move them. The logic does not change. The thresholds are yours.
Where an operator takes this next.
The wrap-up proves the rhythm is worth keeping. Here is the version that keeps the rhythm without you touching it.
The number shows up with its own explanation attached, every time, on the same schedule.
Schedule a Claude task against your BI export so the wrap-up is written and posted before the pipeline review starts.
Connect Salesforce so the action layer lists real accounts and owners instead of a count.
Wire the yellow and red thresholds to a Slack alert so a channel gap gets noticed the day it happens, not at the next report.
One skill is the on-ramp.
A single skill does one job. Chained into a playbook, or run as a full build, it becomes a system. Here is where this one plugs in.