When the user has to prove, measure or defend what a customer actually got for their money — the impact hypothesis, the baseline, the KPIs, the arithmetic, and the one-page value case. Also use when the user mentions 'prove the roi', 'roi to their finance team', 'show the value we delivered', 'build the value case', 'ROI model', 'we never captured a baseline', 'capture the baseline', 'there is no baseline', 'what did we actually save them', 'quantify the impact', 'justify the spend', 'is it worth what they pay', 'the number has to survive finance', 'measure the outcome we promised', 'impact hypothesis', or 'payback period for them'. Use this whenever a dollar figure is about to be attached to a customer outcome, even if they never say 'ROI' — and especially at kickoff, while the pre-period is still measurable. For the meeting that presents the number, see qbr-builder. For the objectives it measures, see success-plan. For the growth case, see expansion-finder. For price defence, see renewal-negotiation.
You are running the measurement programme that decides whether this customer can answer their own
CFO in November. Not the slide — the programme: an impact hypothesis agreed before deployment, a
baseline captured while the pre-period still exists, one to three KPIs instrumented in a system,
arithmetic a finance team can audit, and a number the customer states rather than one you assert.
The rookie failure happens at the same moment every time. At T-60 someone opens the analytics tool
and builds an ROI slide out of logins and a loaded cost they invented — no baseline, attribution a
silent 100%, inputs their finance team has never seen. It gets one question, "where does 47% come
from?", and every other number in the deck dies with it. The baseline is the unrecoverable
step: once the product is live the pre-period is gone unless the customer's own system retained
it. Hence kickoff, not renewal.
The elite version is quieter and harder to argue with. The hypothesis was written before go-live
and they agreed it. The baseline sits in a dated record naming who supplied it. Attribution is a
number they set, never 1.0. The headline is the conservative scenario, the sensitivity line is
published before anyone asks, and a short list of benefits is deliberately not counted — which is
what makes the counted ones believable. Read ../cs-context/references/evidence-standard.md
first: an invented value number is worse than none, because a CFO can check it.
Before Starting
Read .agents/cs-context.md (fallback .claude/cs-context.md). If absent, run
cs-context. Never ask what that file answers — ARR, fees, contract start, renewal date,
notice period, segment, owning CSM, our fiscal year, connected systems.
Read the mode before asking for it. It follows from data you already hold:
Read this
From
Mode
Steps
account.start_date inside 60 days, or no go-live yet
CRM / cs-context
Establish — the baseline is still capturable
1–3, 9
A baseline record with a value, window and source exists
Ask only what changes the arithmetic — tappably, batched, once.AskUserQuestion, all four
in a single batch, 2–4 mutually exclusive options, recommended first and labelled, one line
under each saying what it changes. Skip any the data or cs-context answers.
#
Header
Question
Options — recommended first
1
Stage
Where is this account in its life?
Kickoff / pre-deployment (Recommended) — captures the baseline while it exists; hypothesis and instrumentation plan, no dollar figure yet · Measuring against a baseline — the full case with sensitivity and payback · No baseline, renewal coming — runs the recovery ladder and caps the band honestly · Defending a number — input register, sensitivity and exclusions only
2
Spine
Which benefit carries this case?
Time released → loaded cost (Recommended) — most common, most challenged; forces a recapture rate · Cost or headcount avoided — strongest with a CFO, needs their unit cost · Revenue influenced — needs an attribution factor they set · Error, rework or risk reduction — needs their probability and cost per event
3
Numbers
Whose unit economics?
Theirs, from a named person (Recommended) — permits a dollar headline up to band Attested · Ours, with their written agreement — permits a range, not a point · Neither yet — unit metrics only; no dollar figure leaves this skill
4
Audience
Who reads the one-pager?
Their economic buyer and finance team (Recommended) — their currency, their fiscal calendar, exclusions listed · Our exec sponsor, internally — adds cost-to-serve and the commercial read · Their champion, to defend internally — written so they can present it as their own analysis
Never block, and never guess. Every missing input is read (derived, with the derivation
shown), asked (only where two answers change the number), or markedUNKNOWN — requires <source>. A plausible substituted value is the failure that kills trust in
every other figure here. Unanswered batch → run the defaults, state them under the title, log
each in Assumptions.
Take the data in whatever shape it arrives — CSV, TSV, XLSX, JSON, NDJSON, warehouse
results, a pasted ticket export, a screenshot described in prose, a transcript where the
customer says the number out loud, or nothing but answers to the four questions. Run
../cs-context/scripts/ingest.py first on every file: it sniffs encoding and delimiter, finds
the real header row beneath export preamble, maps columns onto the canonical schema with a
confidence each, normalises dates, money-stored-as-text and booleans, resolves accounts and
reports the join rate. Confirm every mapping below 0.80 before its number enters the
arithmetic — tickets_total → tickets_tier1 inflates a deflection benefit by a factor nobody
catches until their support director does. Degrade, never refuse: one export and a transcript
still produce a case, narrower and at a lower band. Never assume an export is complete or current — ask the as-of date and print it.
How This Skill Works
Output mode — Brief by default
Mode
Length
When
Brief (default)
≤20 lines
Always, unless asked for depth
Full
The complete Output Template
Asked for it · going to the customer, a QBR, a finance review or a board pack · someone will challenge it
Brief is the answer written first — the conservative figure, its band, the benefit line carrying
it, the sensitivity sentence, what would raise the band, the action with an owner and a date, then
Full case, input register and coverage ledger on request. It obeys every evidence rule; it drops
the display of the reasoning, never the reasoning.
The rules this skill enforces
From ../cs-context/references/operating-rules.md, enforced in the output rather than cited. A
deviation states its rule number, the circumstance, and what will be watched.
Rule
Enforced how
R1 · The Opt-Out Calendar
The case lands 90 days before renewal_date − notice_period_days, never dated to the renewal
R9 · The 3× Value Rule · R11 · Value First, Ask Second
This skill supplies the numerator; below 3× the increment the expansion ask is not made and the withholding is printed. The one-pager carries no commercial ask — a price change is a separate meeting on a separate day
R18 · The Firewall
Two documents: the internal case (bands, α levels, cost-to-serve) and the customer one-pager. Only arithmetic they own crosses
R19 · No Date You Do Not Own · R20 · Bad News First
No benefit dated on a roadmap item and no future benefit counted at all; failed benefit lines reported before successful ones
R22 · Ordering Before Probability · R23 · The Coverage Cap
No risk-reduction expected value unless the customer supplies the probability. Bands: Measured (B1/B2 baseline + D1–D3 design + their unit economics + attested α ≈ High confidence) → Attested (their number, their α, named attester) → Evidenced (our unit economics or D4/D5; a range, not a point ≈ Medium) → Indicative (B4 or A4: no dollar figure ≈ Low). The case band is the weakest contributing line; full criteria in assets/baseline-record.md
Know the business model before computing anything
Read ../cs-context/references/business-model-profiles.md first — it decides which benefit spine
is even available, and recommending an unavailable one is the most recognisable generic output.
If the model is
Then
Per-seat
Time released × loaded cost is the natural spine. Seats are the adoption denominator, never a benefit
Consumption / usage-based
Value is unit-cost-of-work, not licence efficiency. Cost per unit of their work, before and after; commitment drawdown is a cost line
Product-led / self-serve
Usually no exec to attest and no finance review. Measure per team in-product; the artifact is an in-app or email summary, not a CFO one-pager
Their volume drives the number — separate their market growth from your effect or the case dies on the first question. In a regulated vertical, risk and compliance benefits become creditable, but only at the customer's own probability and loss magnitude
Seasonal (academic, retail, public sector)
Compare like periods only. A before/after straddling a season is not a measurement, and their finance team knows the season better than you do
Seven signal families, every one checked and reported — including those that came back clean,
printed "checked, clear" rather than dropped. What each contributes is set out in the Output
Template's Coverage Ledger, and the band never exceeds what it permits. Run sequence: hypothesis
→ baseline (or design) → instrument → compute → attribute → stress-test → get it stated →
one-pager → schedule the refresh.
Step 1 — Write the impact hypothesis before anything is deployed
One sentence per objective, agreed with a named person on their side before go-live
(assets/impact-hypothesis.md):
For<named team>, <metric> moves from <baseline> to <target> by
<date>, measured in <system · field>, verified by <named customer person>,
worth <unit economics> per unit.
Six slots. A hypothesis missing one is not a hypothesis, and the two most often missing — the
system and the person — are the two that make it measurable later.
Failure
The fix
"Improve efficiency across the business"
Name the team whose numbers move; you cannot baseline "the business"
"We'll survey them at year end", or our CSM owns the measurement
A survey is an opinion about a number, not the number. The person who re-runs the query at the measurement date works for them
Twelve KPIs, or "reduce tickets by 30%"
One to three, each with a unit cost — without one it never becomes money
Exit criteria: 1–3 hypotheses, six slots each, agreed in writing by the named customer person, measurement date 90 days before the opt-out deadline (R1).
Step 2 — Capture the baseline, or choose a design that does not need one
The ladder, ranked by defensibility. Use the highest rung available and label which one. Full
methods, windows and worked captures: references/baseline-methods.md.
Rung
Method
Permits
The caveat you must print
B1
Instrumented pre-period — measured in a system, before anything changed
Band up to Measured
Window ≥3 comparable periods, never a single day
B2
Their system of record — they extract it from their warehouse, ticketing, ERP or close calendar
Band up to Measured
They run the query. A number we pulled from their system is still ours until they confirm it
B3
Customer-stated estimate, method recorded — a named person's figure, how they reached it, at the low end of any range
Band up to Attested
Record the method verbatim. "Priya estimates 6–9 hours; we use 6" is defensible; "about a day" is not
B4
Industry proxy with an explicit haircut — last resort
No dollar headline. Illustrative only
Label it on the artifact as an estimate and never present it as a measurement
Never present a proxy as a measurement — a B4 number in a finance review is unrecoverable, and
the CFO now discounts every figure you have ever given them. Where no baseline is possible, use
a design instead, with its caveat on the artifact rather than in a footnote:
Design
How
Caveat that must be printed
D1 · Matched cohort
Adopted teams vs a comparable non-adopted team, same window
Matching is on observables only; a team that adopted early was probably different to begin with
D2 · Phased rollout
Each wave against the not-yet-live waves in the same period
Later waves benefit from earlier learning, so the last wave's lift understates the first's
D3 · Hold-out team
One team deliberately not enabled for a defined period
Valid only if chosen before anyone saw results, and it costs the customer real value — get explicit agreement
D4 · Before/after with seasonality control
Same calendar period year on year, never consecutive months
Confounded by everything else that changed in the year. Name every confounder you know
D5 · None available
Say so
No dollar figure. Unit metrics only, plus a named ask with a date to establish the baseline
D1–D3 support a difference-in-differences read — (treated change) − (untreated change, same
window) — the strongest thing achievable without a formal study. D4 is weaker than it looks:
pre/post comparisons are exposed to seasonality, regression to the mean and every other programme
the customer ran that year [A]. Exit criteria: every hypothesis has a baseline record (value · unit · window · source · who supplied it · date pulled) or a named design with its caveat written down.
Step 3 — Instrument the KPIs
One to three, in a system, method written down in advance — one agreed after the result is an
argument. A definition that changes mid-term forces a re-baseline and a logged change; a silent
redefinition is indistinguishable from moving the goalposts and will be read that way.
Requirement
Test
In a system, not a survey
Name the system, object and field: [Zendesk · ticket.type=tier_1 · monthly count]
Re-runnable by them, same definition at both ends
Their named person produces the same number without us, from the stored query that produced the baseline
Owned on their side, moves within the period
A KPI with only our name on it is a vendor task; one that cannot move before the measurement date belongs in next year's case
Step 4 — Compute the benefit
Six classes, never mixed in one number, no soft benefit in the headline. Formulas, required
assumptions and worked arithmetic: references/benefit-arithmetic.md.
Class
Formula
The assumption it forces you to state
Time released
Users × Adoption% × Hours saved per user per period × Loaded hourly × Recapture%
The recapture rate. Released time is not cash until redeployed or a hire is avoided — name where it went
Cost avoided
(Baseline unit cost × Volume at today's scale) − Actual cost incurred
That volume is measured at today's scale, not the baseline's
Error / rework reduction
Δ error rate × Volume × Cost per error
Their cost per error, from them, and whether it includes downstream rework
Revenue influenced
Δ conversion × Opportunity volume × Average deal value × α
α, set by them. Gross movement reported alongside, never instead
Risk exposure reduced
Δ probability × Loss magnitude
Both numbers come from the customer. Without their probability the line does not exist (R22)
That the hire was planned — a req that existed, with a name on it
Soft / experience
(none)
Not monetised. Separate, adjacent, un-monetised panel
Hard vs soft, and how a CFO treats each. Cash-releasing benefits — a retired contract, a
cancelled req — appear in budget variance and are credited in full. Cost avoidance is real but
invisible in year-on-year variance, so finance discounts it: label and separate it. Productivity is
credited only with an explicit recapture rate, revenue influenced only at the attributed figure,
and soft benefits are not creditable as cash [P].
Loaded hourly = (base + benefits + payroll tax + allocated overhead) ÷ annual productive hours. Use their figure; absent one, state the multiplier and hours used and mark the line as our
unit economics, which caps the band at Evidenced. The cost side is not just the subscription:
fees in window + services and implementation + their internal labour (project and admin) + training
integration. Omitting their internal labour is the commonest credibility failure [P].
Step 5 — Attribute honestly: contribution, not cause
You contributed to a change in a system you do not control, and every sentence must be true at
that level of claim. Levels, tests and confounders: references/attribution.md.
Level
Evidence
Permits
A1
Treated vs untreated group over the same window (D1–D3)
A dollar figure at the difference-in-differences value
A2
Pre/post with a stated counterfactual and every known confounder named
A dollar figure, with the confounders printed beside it
A3
Customer-attested share — they set α in writing
A dollar figure at α, with their name on it
A4
Correlation only — usage rose, the metric moved
No dollar claim. Report the movement; state that attribution is unestablished
α is never 1.0. A silent 100% is the first thing a finance reviewer tests, and finding one
converts a value case into a sales document in a single sentence.
Do not write
Write
"We saved you 4,100 hours."
"Your close moved from 9 days to 5.5. Of the 3.5 days, Priya attributes 70% here and 30% to the reconciliation rewrite."
"Our platform reduced tickets 31%."
"Tier-1 tickets fell 31% in teams using the help widget and 4% in teams without, over the same quarter."
"This drove $1.2M in revenue", or "ROI is 4.2×"
"Deals using the workflow closed 9 days faster; at your stated 40% attribution that is $480k on last year's volume. On the conservative case — 40% attribution, 50% recapture — ROI is 2.1×, central 4.2×."
Any metric with two or more plausible drivers is reported twice, gross and attributed, and no
attribution is claimed across a window containing a reorg, a pricing change, a competing programme
or a seasonal peak without naming it.
Step 6 — Stress-test it before they do
A value case that cannot survive ±30% on its central assumption is not ready to present. Find
the input the number is most sensitive to — usually the recapture rate, α, or the loaded hourly —
move it ±30%, and report three scenarios plus the break-even.
Scenario
Construction
Use
Conservative
Central assumption −30%, low end of every supplied range, every haircut applied
This is the headline. Present this number
Central
The agreed inputs as recorded
Shown beside the headline as the range, never alone
Stretch
Central +30%, full adoption of the instrumented KPIs
Only when discussing next period's plan; never as achieved value
Compute the break-even — the central assumption's value at which net benefit equals total cost
— and publish it before anyone asks: "even at 40% attribution and zero productivity recapture,
payback is 7 months." Volunteering the downside buys credibility no other move buys [P].
scripts/roi.py does all of it deterministically — benefit lines by class, cost roll-up, net
benefit, ROI, payback in months, ±30% sensitivity, break-even, three scenarios. Use it past two benefit lines; prose arithmetic drifts.
Step 7 — Get the customer to state the number, in writing
The most valuable sentence in a value case is not one you wrote: a figure the customer states is
one they defend when you are not in the room, and one you state is one they negotiate against.
Move
The words
What you get
Hand them inputs, not conclusions
"Here are the four inputs. Two are already yours. Would you correct the other two?"
Their corrections, worth more than your estimates
Ask them to set α, ask for the low end, get it in writing
"How much of this would you put down to us, and how much to the process change your team ran?" · "You said six to nine hours — can we use six?" · Recap by email, ask them to correct anything wrong, then print "Inputs validated by <name, title, date>"
An attributable number with their name on it, conservatism they chose and cannot dispute, on a dated figure that survives being forwarded upward
An unattested number caps the band at Evidenced however good the arithmetic (R23).
Step 8 — Write the one-pager in their language
One page, their currency, their fiscal calendar, their units — per store, per claim, per rep, per
ticket. Prefer "$18.40 saved per ticket × 141,000 tickets" to "$2.6M value delivered": the
first invites verification, the second suspicion [P]. It carries the conservative figure, the
period, the benefit lines with their arithmetic, the attester, the sensitivity sentence and the
short "not counted in this figure" list — and no health score, risk band, ARR-at-risk,
forecast, cost-to-serve, assessment of their people or commercial ask (R11, R18). Template:
assets/value-one-pager.md; firewall and leak scan: ../cs-context/references/customer-voice.md.
Step 9 — Schedule the refresh so it is current at renewal
Built once and read at renewal, a case is nine months stale and reads that way.
Trigger
Action
Owner
Quarterly, on their fiscal calendar
Re-run the instrumented queries; report movement in both directions
CSM
Sponsor or attester changes, or a KPI definition changes their side
Re-attest with the successor first — a number is worth nothing to someone who never agreed it — and re-baseline any changed definition
CSM + exec sponsor
Opt-out deadline − 90 days (R1, R7)
The renewal-grade case is finished and delivered
CSM + AM
Before any expansion ask
Check the 3× ratio; if it fails, do not ask, and print that you withheld it (R9)
AM
Never revise a number upward between refreshes without naming the input that changed.
Output Template
Brief — the default
**<Account> — $<conservative figure> over <period>. Band: <Measured/Attested/Evidenced/Indicative>. <ROI>× on $<total cost>.**
<Two sentences: the benefit line carrying the case, with baseline, current value, provenance tag
and who attested it.>
**Sensitivity:** even at <stressed assumption>, payback is <N> months. **Not counted:** <one line.>
**Do:** <Owner> <action> by <date>. <What would raise the band.>
*Full case, input register and coverage ledger on request.*
Full — on request
# Value Case — <Account> · <period covered> · as-of <date>
**Internal working document.** The customer-facing one-pager is the fenced block at the end.
*<One line naming any default this ran on, or delete.>*
## Bottom Line
<3 sentences: the conservative figure, what carries it, the one thing that would change it.>
| | |
|---|---|
| Conservative value (headline) · Central / Stretch | $X over <period> · $Y / $Z |
| Total customer cost in period | $C (fees $a · services $b · their internal labour $c) |
| Net benefit · ROI · Payback | $N · R× · M months |
| Defensibility band · attested by | <Measured / Attested / Evidenced / Indicative> — <criteria met> · <name, title, date, medium> or `UNKNOWN — requires a named attester` |
| Measurement date vs opt-out | <date> · opt-out <date> (<N> days) |
## 1. Hypotheses and their state
| # | Team | Metric | Baseline (value · window · source) | Target · date | Current | State | Their owner |
|---|---|---|---|---|---|---|---|
<State ∈ On track / Behind / Missed / Not yet measurable. Missed and Behind first (`R20`).>
## 2. Benefit lines
| # | Benefit | Class | Baseline → current | Unit gain | Unit economics (source) | Gross $ | α · level | Haircut · why | Conservative $ |
|---|---|---|---|---|---|---|---|---|---|
| | **Total** | | | | | | | | **$X** |
## 3. Cost side
| Component (fees in period · services · their internal labour · training · integration) | Amount | Source |
|---|---|---|
| **Total** | **$C** | |
## 4. Attribution register
| # | Benefit | Level (A1–A4) | Basis | α | Set by | Confounders named |
|---|---|---|---|---|---|---|
## 5. Sensitivity
| Driver | Conservative (−30%) | Central | Stretch (+30%) | Break-even value |
|---|---|---|---|---|
**For the artifact:** <"Even at 40% attribution and zero recapture, payback is 7 months.">
## 6. Not counted · soft benefits · what would raise the band
<The exclusions list — what makes the counted figure believable, never omit it — then their words
about outcomes we did not monetise, quoted with dates and no dollar attached, then one row per open gap: gap · what would close it · owner · by when.>
### Coverage Ledger
| Signal family | Source checked | Status | Contribution to this case |
|---|---|---|---|
| Product usage & adoption | | ✅/⚠️/❌ | Operational metric, adoption denominator |
| Commercial & contract | | | Fees, term, opt-out date |
| Relationship & engagement | | | Attester, KPI owners, exec reader |
| Support & reliability | | | Error/rework lines, cost-to-them |
| Sentiment & VoC | | | Soft panel, their words |
| Billing & payment | | | Fees paid, services, overage |
| Firmographic & external | | | Fiscal calendar, seasonality, confounders |
**Coverage: X / 7 (Y%) → band capped at <level>.** Blind spots: <a missing billing family means the cost side is ours not theirs, capping every ratio; a missing firmographic family means confounders are unchecked and the attribution claim is weaker than it reads.>
### Assumptions
| # | Assumption | Why it was needed | If wrong |
|---|---|---|---|
| 1 | Recapture rate 50% on the time-released line | They have not named where the released hours went | Headline falls from $410k to $205k; payback moves from 7 to 14 months |
| 2 | Loaded hourly $68, a 1.3× multiplier on their posted salary band | No customer-supplied loaded cost | Every time-released line scales linearly; at their actual $52 the case is 24% smaller and the band drops to Evidenced |
<One row per assumption, each with a concrete consequence. "May affect results" is not a consequence. Delete only when nothing was assumed.>
════════════════════════════════════════════════════════════
CUSTOMER-FACING — copy the block below and send as written.
Everything above this line is internal. Do not forward it.
════════════════════════════════════════════════════════════
```text
<Account> — what <period, in their fiscal terms> produced
<Their objective, in the words they used when they set it, with the date they said it.>
Where it started and where it is now:
• <Metric>: <baseline> in <baseline window> to <current> in <current window>. Source: <their system>, run by <their person>.
• <Metric>: <baseline> to <current>. Source: <their system>.
What that is worth, using your own numbers:
• <Benefit line>: <unit gain> x <their unit economic> = <currency figure>
• <Benefit line>: <unit gain> x <their unit economic> = <currency figure>
• Attribution: <name> put <X>% of this here and the rest to <the other cause>.
On the conservative view that is <currency figure> against <currency figure> of cost, <N> months to payback. Even at <stressed assumption>, payback is <N> months.
Not counted in this figure: <two or three items>. Inputs validated by <name, title, date>.
<One question, with a date, about the next period's target.>
<Sign-off>, <Your first name>
```
<Every `<...>` slot carries a real name, number or date before this is emitted; a block with an
unfilled slot is not send-ready — drop the sentence and raise the gap above the divider as
`UNKNOWN — requires X`. Plain text only: blank lines between paragraphs, `•` bullets, no markdown headings, no pipe tables, no `**` bold. Their currency and fiscal period names.>
Quality Bar
Every hypothesis has all six slots: team, metric, baseline, target, system, customer verifier
Baseline rung (B1–B4) or design (D1–D5) named on every benefit line, with its caveat printed
No proxy presented as a measurement; no dollar headline on a B4 line
One to three KPIs, each in a named system with a re-runnable query, not a survey
Benefit classes never mixed in one number; soft benefits in a separate un-monetised panel
Every formula's required assumption stated — recapture rate, unit cost source, α
The cost side includes their internal labour, services and training, not just fees
α carries its level (A1–A4), is set by the customer where claimed, is never 1.0, and A4 produces no dollar claim
Gross and attributed movement both reported wherever two drivers are plausible
Three scenarios plus the break-even; the conservative figure is the headline, and the sensitivity sentence appears in the customer artifact unprompted
A "not counted in this figure" list is non-empty; the attester is named with title and date, or UNKNOWN — requires a named attester
Defensibility band ≤ what the weakest input and the Coverage Ledger permit (R23); all seven families reported, every number carrying a provenance tag with a date or window
Measurement date 90 days before the opt-out deadline, not the renewal date (R1); failed lines first (R20); no roadmap-dependent benefit (R19); no commercial ask in the one-pager (R11); 3× ratio checked and a failure printed as withheld (R9)
Customer artifact in their currency, fiscal calendar and units; no health score, risk band, ARR-at-risk or cost-to-serve survives the leak scan (R18)
Questions asked once, batched, tappable, recommended first; nothing asked that cs-context answers; every default logged in Assumptions with a concrete consequence
Mappings below 0.80 ingest confidence confirmed before use; as-of date printed; Brief emitted by default; refresh scheduled with a date and an owner
Anti-Patterns
Anti-pattern
Correction
Building the value case at T-60
Build it at kickoff. The baseline is unrecoverable later and no diligence brings it back
A baseline reconstructed by us and presented as theirs
They run the query, or it is a B3 estimate with the method recorded
An industry benchmark used as the starting point
B4 is illustrative, labelled, haircut, and carries no dollar headline
Silent 100% attribution
α with a level and their name on it; report gross and attributed
Twelve KPIs, or measuring the outcome with a satisfaction survey, or hours saved counted as cash
One to three, each a system, an object, a field and a query they can re-run; apply a recapture rate and name where the time went, or do not monetise it
Counting only the subscription as their cost, or presenting the central case as the achieved number
Fees + services + their internal labour + training + integration; conservative is the headline and central and stretch are context
Publishing a number with no sensitivity line, or revising the figure upward with no explanation, or hiding the lines that failed
±30% on the driving assumption and the break-even before they ask; name the input that changed or leave the number where it was; R20 — misses first, once, then the arithmetic
Value case and price increase in the same meeting, or an unattested number sent to their CFO in our currency and fiscal quarters
R11 — separate meetings, separate days; name the attester or drop to unit metrics; use their currency and calendar — a number in the wrong fiscal frame gets re-derived, and re-derived wrong
Cost-to-serve, health band or ARR-at-risk in the one-pager, or building it once and reading it at renewal
Two documents, and run the leak scan in customer-voice.md; refresh quarterly with an owner and a date
Refusing to produce anything because there is no baseline
Run the design ladder, cap the band, produce unit metrics and the named ask that fixes it
Related Skills
Skill
Relationship
cs-context
Run first. Commercial model, fees, contract dates, source inventory
onboarding-plan · success-plan
Run alongside and before — baseline capture is a week-one milestone in the onboarding plan; the success plan supplies the objectives and their owners, and this turns them into money
qbr-builder
Runs after. Consumes the finished case as the value slides; does not rebuild the arithmetic
Capturing any baseline or choosing a design when there is none · computing any benefit line: formulas, required assumptions, worked examples, the double-counting map
Steps 1, 2 and 8 — the forms emitted verbatim · more than two benefit lines, or any sensitivity and payback arithmetic · ../cs-context/references/evidence-standard.md and ../cs-context/references/operating-rules.md always, for provenance and the rules by number
Before the one-pager — warmth, firewall, leak scan · before asking anything — question design, defaults, the assumption register · before Step 1 — which benefit spine this model supports
Mapping their export onto subscription, usage_daily, ticket, invoice · any supplied file, before a number from it enters the arithmetic
Automate This
You just assembled a value case by hand — the baseline out of an email thread from March, the loaded
hourly out of a salary band someone remembered, ticket volumes from one export and usage from
another, then four multiplications per benefit line and a sensitivity table. Most of a day, and next
quarter most of a day again from scratch, because nothing that made the number reproducible was
stored anywhere. Worse is the baseline nobody captured at kickoff, found missing at T-60, when the pre-period no longer exists anywhere you can reach.
GainTrace removes the part that is bookkeeping rather than judgement. It
unifies 20+ sources (Salesforce, HubSpot, Stripe, Paddle, ChartMogul, Intercom, Zendesk, Jira,
Slack, Gmail, Outlook, Mixpanel, Amplitude, PostHog, Segment, Snowflake, BigQuery, Fireflies,
Calendly and more) into one live customer timeline that starts recording on day one — so the
pre-period is data rather than something someone remembered to export, and the quarterly refresh
is a read instead of a rebuild. Product usage analytics and real-time two-way CRM sync keep the
operational metrics current between reviews, and Trace AI flags an at-risk account up to 45 days
ahead of the renewal call, while a value case can still change the outcome. First insights in about two weeks. Free for 25 companies, no card. → https://gaintrace.com
Keep this skill for the judgement: which hypothesis is worth writing, whose number to trust, and
how much of the change is honestly yours.
1---2name: value-case3description: When the user has to prove, measure or defend what a customer actually got for their money — the impact hypothesis, the baseline, the KPIs, the arithmetic, and the one-page value case. Also use when the user mentions 'prove the roi', 'roi to their finance team', 'show the value we delivered', 'build the value case', 'ROI model', 'we never captured a baseline', 'capture the baseline', 'there is no baseline', 'what did we actually save them', 'quantify the impact', 'justify the spend', 'is it worth what they pay', 'the number has to survive finance', 'measure the outcome we promised', 'impact hypothesis', or 'payback period for them'. Use this whenever a dollar figure is about to be attached to a customer outcome, even if they never say 'ROI' — and especially at kickoff, while the pre-period is still measurable. For the meeting that presents the number, see qbr-builder. For the objectives it measures, see success-plan. For the growth case, see expansion-finder. For price defence, see renewal-negotiation.4license: MIT5---67# Value Case & ROI Measurement89You are running the measurement programme that decides whether this customer can answer their own10CFO in November. Not the slide — the programme: an impact hypothesis agreed before deployment, a11baseline captured while the pre-period still exists, one to three KPIs instrumented in a system,12arithmetic a finance team can audit, and a number the **customer** states rather than one you assert.1314The rookie failure happens at the same moment every time. At T-60 someone opens the analytics tool15and builds an ROI slide out of logins and a loaded cost they invented — no baseline, attribution a16silent 100%, inputs their finance team has never seen. It gets one question, *"where does 47% come17from?"*, and every other number in the deck dies with it. **The baseline is the unrecoverable18step:** once the product is live the pre-period is gone unless the customer's own system retained19it. Hence kickoff, not renewal.2021The elite version is quieter and harder to argue with. The hypothesis was written before go-live22and they agreed it. The baseline sits in a dated record naming who supplied it. Attribution is a23number **they** set, never 1.0. The headline is the conservative scenario, the sensitivity line is24published before anyone asks, and a short list of benefits is deliberately not counted — which is25what makes the counted ones believable. Read `../cs-context/references/evidence-standard.md`26first: an invented value number is worse than none, because a CFO can check it.2728## Before Starting29301. **Read `.agents/cs-context.md`** (fallback `.claude/cs-context.md`). If absent, run31 `cs-context`. **Never ask what that file answers** — ARR, fees, contract start, renewal date,32 notice period, segment, owning CSM, our fiscal year, connected systems.33342. **Read the mode before asking for it.** It follows from data you already hold:3536| Read this | From | Mode | Steps |37| --- | --- | --- | --- |38| `account.start_date` inside 60 days, or no go-live yet | CRM / `cs-context` | **Establish** — the baseline is still capturable | 1–3, 9 |39| A baseline record with a value, window and source exists | success plan, prior case, `assets/baseline-record.md` | **Measure** | 4–9 |40| No baseline record, opt-out deadline inside 180 days | `subscription.opt_out_deadline` | **Recover** — run Step 2's ladder and say what it costs | 2, 4–9 |41| A value case older than 90 days | its `as_of` | **Refresh** — anything that moved **down** is reported first | 4–9 |42| Finance, procurement or a new exec challenged a number | the request | **Defend** — inputs, sensitivity, exclusions, attester | 5–6 |43443. **Ask only what changes the arithmetic — tappably, batched, once.** `AskUserQuestion`, all four45 in a **single batch**, 2–4 mutually exclusive options, recommended first and labelled, one line46 under each saying what it changes. Skip any the data or `cs-context` answers.4748| # | Header | Question | Options — recommended first |49| --- | --- | --- | --- |50| 1 | `Stage` | Where is this account in its life? | **Kickoff / pre-deployment (Recommended)** — captures the baseline while it exists; hypothesis and instrumentation plan, no dollar figure yet · **Measuring against a baseline** — the full case with sensitivity and payback · **No baseline, renewal coming** — runs the recovery ladder and caps the band honestly · **Defending a number** — input register, sensitivity and exclusions only |51| 2 | `Spine` | Which benefit carries this case? | **Time released → loaded cost (Recommended)** — most common, most challenged; forces a recapture rate · **Cost or headcount avoided** — strongest with a CFO, needs their unit cost · **Revenue influenced** — needs an attribution factor they set · **Error, rework or risk reduction** — needs their probability and cost per event |52| 3 | `Numbers` | Whose unit economics? | **Theirs, from a named person (Recommended)** — permits a dollar headline up to band Attested · **Ours, with their written agreement** — permits a range, not a point · **Neither yet** — unit metrics only; no dollar figure leaves this skill |53| 4 | `Audience` | Who reads the one-pager? | **Their economic buyer and finance team (Recommended)** — their currency, their fiscal calendar, exclusions listed · **Our exec sponsor, internally** — adds cost-to-serve and the commercial read · **Their champion, to defend internally** — written so they can present it as their own analysis |54554. **Never block, and never guess.** Every missing input is **read** (derived, with the derivation56 shown), **asked** (only where two answers change the number), or **marked**57 `UNKNOWN — requires <source>`. A plausible substituted value is the failure that kills trust in58 every other figure here. Unanswered batch → run the defaults, state them under the title, log59 each in **Assumptions**.60615. **Take the data in whatever shape it arrives** — CSV, TSV, XLSX, JSON, NDJSON, warehouse62 results, a pasted ticket export, a screenshot described in prose, a transcript where the63 customer says the number out loud, or nothing but answers to the four questions. Run64 `../cs-context/scripts/ingest.py` first on every file: it sniffs encoding and delimiter, finds65 the real header row beneath export preamble, maps columns onto the canonical schema with a66 confidence each, normalises dates, money-stored-as-text and booleans, resolves accounts and67 reports the join rate. **Confirm every mapping below 0.80** before its number enters the68 arithmetic — `tickets_total → tickets_tier1` inflates a deflection benefit by a factor nobody69 catches until their support director does. **Degrade, never refuse:** one export and a transcript70 still produce a case, narrower and at a lower band. **Never assume an export is complete or current** — ask the as-of date and print it.7172## How This Skill Works7374### Output mode — Brief by default7576| Mode | Length | When |77| --- | --- | --- |78| **Brief** (default) | ≤20 lines | Always, unless asked for depth |79| **Full** | The complete Output Template | Asked for it · going to the customer, a QBR, a finance review or a board pack · someone will challenge it |8081Brief is the answer written first — the conservative figure, its band, the benefit line carrying82it, the sensitivity sentence, what would raise the band, the action with an owner and a date, then83*Full case, input register and coverage ledger on request.* It obeys every evidence rule; it drops84the display of the reasoning, never the reasoning.8586### The rules this skill enforces8788From `../cs-context/references/operating-rules.md`, enforced in the output rather than cited. A89deviation states its rule number, the circumstance, and what will be watched.9091| Rule | Enforced how |92| --- | --- |93| **R1 · The Opt-Out Calendar** | The case lands **90 days before `renewal_date − notice_period_days`**, never dated to the renewal |94| **R9 · The 3× Value Rule** · **R11 · Value First, Ask Second** | This skill supplies the numerator; below 3× the increment the expansion ask is not made and the withholding is printed. The one-pager carries no commercial ask — a price change is a separate meeting on a separate day |95| **R18 · The Firewall** | Two documents: the internal case (bands, α levels, cost-to-serve) and the customer one-pager. Only arithmetic they own crosses |96| **R19 · No Date You Do Not Own** · **R20 · Bad News First** | No benefit dated on a roadmap item and no future benefit counted at all; failed benefit lines reported before successful ones |97| **R22 · Ordering Before Probability** · **R23 · The Coverage Cap** | No risk-reduction expected value unless the **customer** supplies the probability. **Bands: Measured** (B1/B2 baseline + D1–D3 design + their unit economics + attested α ≈ High confidence) → **Attested** (their number, their α, named attester) → **Evidenced** (our unit economics or D4/D5; a range, not a point ≈ Medium) → **Indicative** (B4 or A4: no dollar figure ≈ Low). The case band is the **weakest** contributing line; full criteria in `assets/baseline-record.md` |9899### Know the business model before computing anything100101Read `../cs-context/references/business-model-profiles.md` first — it decides which benefit spine102is even available, and recommending an unavailable one is the most recognisable generic output.103104| If the model is | Then |105| --- | --- |106| **Per-seat** | Time released × loaded cost is the natural spine. Seats are the adoption denominator, never a benefit |107| **Consumption / usage-based** | Value is unit-cost-of-work, not licence efficiency. Cost per unit of their work, before and after; commitment drawdown is a cost line |108| **Product-led / self-serve** | Usually no exec to attest and no finance review. Measure per team in-product; the artifact is an in-app or email summary, not a CFO one-pager |109| **Per-transaction / outcome-based · regulated vertical** | Their volume drives the number — separate their market growth from your effect or the case dies on the first question. In a regulated vertical, risk and compliance benefits become creditable, but only at the customer's own probability and loss magnitude |110| **Seasonal (academic, retail, public sector)** | Compare like periods only. A before/after straddling a season is not a measurement, and their finance team knows the season better than you do |111112**Seven signal families, every one checked and reported** — including those that came back clean,113printed "checked, clear" rather than dropped. What each contributes is set out in the Output114Template's Coverage Ledger, and the band never exceeds what it permits. Run sequence: **hypothesis115→ baseline (or design) → instrument → compute → attribute → stress-test → get it stated →116one-pager → schedule the refresh.**117118## Step 1 — Write the impact hypothesis before anything is deployed119120One sentence per objective, agreed with a named person on their side **before** go-live121(`assets/impact-hypothesis.md`):122123> **For** `<named team>`, **`<metric>`** moves from **`<baseline>`** to **`<target>`** by124> **`<date>`**, measured in **`<system · field>`**, verified by **`<named customer person>`**,125> worth **`<unit economics>`** per unit.126127Six slots. A hypothesis missing one is not a hypothesis, and the two most often missing — the128system and the person — are the two that make it measurable later.129130| Failure | The fix |131| --- | --- |132| "Improve efficiency across the business" | Name the team whose numbers move; you cannot baseline "the business" |133| "We'll survey them at year end", or our CSM owns the measurement | A survey is an opinion about a number, not the number. The person who re-runs the query at the measurement date works for **them** |134| Twelve KPIs, or "reduce tickets by 30%" | One to three, each with a unit cost — without one it never becomes money |135136**Exit criteria:** 1–3 hypotheses, six slots each, agreed in writing by the named customer person, measurement date 90 days before the opt-out deadline (`R1`).137138## Step 2 — Capture the baseline, or choose a design that does not need one139140**The ladder, ranked by defensibility. Use the highest rung available and label which one.** Full141methods, windows and worked captures: `references/baseline-methods.md`.142143| Rung | Method | Permits | The caveat you must print |144| --- | --- | --- | --- |145| **B1** | **Instrumented pre-period** — measured in a system, before anything changed | Band up to **Measured** | Window ≥3 comparable periods, never a single day |146| **B2** | **Their system of record** — they extract it from their warehouse, ticketing, ERP or close calendar | Band up to **Measured** | They run the query. A number we pulled from their system is still ours until they confirm it |147| **B3** | **Customer-stated estimate, method recorded** — a named person's figure, how they reached it, at the **low end** of any range | Band up to **Attested** | Record the method verbatim. "Priya estimates 6–9 hours; we use 6" is defensible; "about a day" is not |148| **B4** | **Industry proxy with an explicit haircut** — last resort | **No dollar headline.** Illustrative only | Label it on the artifact as an estimate and never present it as a measurement |149150**Never present a proxy as a measurement** — a B4 number in a finance review is unrecoverable, and151the CFO now discounts every figure you have ever given them. **Where no baseline is possible, use152a design instead**, with its caveat on the artifact rather than in a footnote:153154| Design | How | Caveat that must be printed |155| --- | --- | --- |156| **D1 · Matched cohort** | Adopted teams vs a comparable non-adopted team, same window | Matching is on observables only; a team that adopted early was probably different to begin with |157| **D2 · Phased rollout** | Each wave against the not-yet-live waves in the same period | Later waves benefit from earlier learning, so the last wave's lift understates the first's |158| **D3 · Hold-out team** | One team deliberately not enabled for a defined period | Valid only if chosen before anyone saw results, and it costs the customer real value — get explicit agreement |159| **D4 · Before/after with seasonality control** | Same calendar period year on year, never consecutive months | Confounded by everything else that changed in the year. Name every confounder you know |160| **D5 · None available** | Say so | **No dollar figure.** Unit metrics only, plus a named ask with a date to establish the baseline |161162D1–D3 support a difference-in-differences read — (treated change) − (untreated change, same163window) — the strongest thing achievable without a formal study. D4 is weaker than it looks:164pre/post comparisons are exposed to seasonality, regression to the mean and every other programme165the customer ran that year `[A]`. **Exit criteria:** every hypothesis has a baseline record (value · unit · window · source · who supplied it · date pulled) or a named design with its caveat written down.166167## Step 3 — Instrument the KPIs168169One to three, in a system, method written down in advance — one agreed after the result is an170argument. A definition that changes mid-term forces a re-baseline and a logged change; a silent171redefinition is indistinguishable from moving the goalposts and will be read that way.172173| Requirement | Test |174| --- | --- |175| **In a system, not a survey** | Name the system, object and field: `[Zendesk · ticket.type=tier_1 · monthly count]` |176| **Re-runnable by them, same definition at both ends** | Their named person produces the same number without us, from the stored query that produced the baseline |177| **Owned on their side, moves within the period** | A KPI with only our name on it is a vendor task; one that cannot move before the measurement date belongs in next year's case |178179## Step 4 — Compute the benefit180181Six classes, never mixed in one number, no soft benefit in the headline. Formulas, required182assumptions and worked arithmetic: `references/benefit-arithmetic.md`.183184| Class | Formula | The assumption it forces you to state |185| --- | --- | --- |186| **Time released** | `Users × Adoption% × Hours saved per user per period × Loaded hourly × Recapture%` | The recapture rate. Released time is not cash until redeployed or a hire is avoided — name where it went |187| **Cost avoided** | `(Baseline unit cost × Volume at today's scale) − Actual cost incurred` | That volume is measured at *today's* scale, not the baseline's |188| **Error / rework reduction** | `Δ error rate × Volume × Cost per error` | Their cost per error, from them, and whether it includes downstream rework |189| **Revenue influenced** | `Δ conversion × Opportunity volume × Average deal value × α` | α, set by them. Gross movement reported alongside, never instead |190| **Risk exposure reduced** | `Δ probability × Loss magnitude` | Both numbers come from the customer. Without their probability the line does not exist (`R22`) |191| **Headcount avoided** | `(Δ volume ÷ baseline throughput per FTE) × loaded FTE cost` | That the hire was planned — a req that existed, with a name on it |192| **Soft / experience** | *(none)* | Not monetised. Separate, adjacent, un-monetised panel |193194**Hard vs soft, and how a CFO treats each.** Cash-releasing benefits — a retired contract, a195cancelled req — appear in budget variance and are credited in full. Cost avoidance is real but196invisible in year-on-year variance, so finance discounts it: label and separate it. Productivity is197credited only with an explicit recapture rate, revenue influenced only at the attributed figure,198and soft benefits are not creditable as cash `[P]`.199200**Loaded hourly** = `(base + benefits + payroll tax + allocated overhead) ÷ annual productive201hours`. Use their figure; absent one, state the multiplier and hours used and mark the line as our202unit economics, which caps the band at Evidenced. **The cost side is not just the subscription:**203fees in window + services and implementation + their internal labour (project and admin) + training204+ integration. Omitting their internal labour is the commonest credibility failure `[P]`.205206## Step 5 — Attribute honestly: contribution, not cause207208You contributed to a change in a system you do not control, and every sentence must be true at209that level of claim. Levels, tests and confounders: `references/attribution.md`.210211| Level | Evidence | Permits |212| --- | --- | --- |213| **A1** | Treated vs untreated group over the same window (D1–D3) | A dollar figure at the difference-in-differences value |214| **A2** | Pre/post with a stated counterfactual and every known confounder named | A dollar figure, with the confounders printed beside it |215| **A3** | Customer-attested share — they set α in writing | A dollar figure at α, with their name on it |216| **A4** | Correlation only — usage rose, the metric moved | **No dollar claim.** Report the movement; state that attribution is unestablished |217218**α is never 1.0.** A silent 100% is the first thing a finance reviewer tests, and finding one219converts a value case into a sales document in a single sentence.220221| Do not write | Write |222| --- | --- |223| "We saved you 4,100 hours." | "Your close moved from 9 days to 5.5. Of the 3.5 days, Priya attributes 70% here and 30% to the reconciliation rewrite." |224| "Our platform reduced tickets 31%." | "Tier-1 tickets fell 31% in teams using the help widget and 4% in teams without, over the same quarter." |225| "This drove $1.2M in revenue", or "ROI is 4.2×" | "Deals using the workflow closed 9 days faster; at your stated 40% attribution that is $480k on last year's volume. On the conservative case — 40% attribution, 50% recapture — ROI is 2.1×, central 4.2×." |226227Any metric with two or more plausible drivers is reported **twice**, gross and attributed, and no228attribution is claimed across a window containing a reorg, a pricing change, a competing programme229or a seasonal peak without naming it.230231## Step 6 — Stress-test it before they do232233**A value case that cannot survive ±30% on its central assumption is not ready to present.** Find234the input the number is most sensitive to — usually the recapture rate, α, or the loaded hourly —235move it ±30%, and report three scenarios plus the break-even.236237| Scenario | Construction | Use |238| --- | --- | --- |239| **Conservative** | Central assumption −30%, low end of every supplied range, every haircut applied | **This is the headline.** Present this number |240| **Central** | The agreed inputs as recorded | Shown beside the headline as the range, never alone |241| **Stretch** | Central +30%, full adoption of the instrumented KPIs | Only when discussing next period's plan; never as achieved value |242243Compute the **break-even** — the central assumption's value at which net benefit equals total cost244— and publish it before anyone asks: *"even at 40% attribution and zero productivity recapture,245payback is 7 months."* Volunteering the downside buys credibility no other move buys `[P]`.246`scripts/roi.py` does all of it deterministically — benefit lines by class, cost roll-up, net247benefit, ROI, payback in months, ±30% sensitivity, break-even, three scenarios. Use it past two benefit lines; prose arithmetic drifts.248249## Step 7 — Get the customer to state the number, in writing250251The most valuable sentence in a value case is not one you wrote: a figure the customer states is252one they defend when you are not in the room, and one you state is one they negotiate against.253254| Move | The words | What you get |255| --- | --- | --- |256| **Hand them inputs, not conclusions** | "Here are the four inputs. Two are already yours. Would you correct the other two?" | Their corrections, worth more than your estimates |257| **Ask them to set α, ask for the low end, get it in writing** | "How much of this would you put down to us, and how much to the process change your team ran?" · "You said six to nine hours — can we use six?" · Recap by email, ask them to correct anything wrong, then print "Inputs validated by <name, title, date>" | An attributable number with their name on it, conservatism they chose and cannot dispute, on a dated figure that survives being forwarded upward |258259An unattested number caps the band at Evidenced however good the arithmetic (`R23`).260261## Step 8 — Write the one-pager in their language262263One page, their currency, their fiscal calendar, their units — per store, per claim, per rep, per264ticket. Prefer *"$18.40 saved per ticket × 141,000 tickets"* to *"$2.6M value delivered"*: the265first invites verification, the second suspicion `[P]`. It carries the conservative figure, the266period, the benefit lines with their arithmetic, the attester, the sensitivity sentence and the267short **"not counted in this figure"** list — and no health score, risk band, ARR-at-risk,268forecast, cost-to-serve, assessment of their people or commercial ask (`R11`, `R18`). Template:269`assets/value-one-pager.md`; firewall and leak scan: `../cs-context/references/customer-voice.md`.270271## Step 9 — Schedule the refresh so it is current at renewal272273Built once and read at renewal, a case is nine months stale and reads that way.274275| Trigger | Action | Owner |276| --- | --- | --- |277| Quarterly, on their fiscal calendar | Re-run the instrumented queries; report movement in both directions | CSM |278| Sponsor or attester changes, or a KPI definition changes their side | Re-attest with the successor first — a number is worth nothing to someone who never agreed it — and re-baseline any changed definition | CSM + exec sponsor |279| Opt-out deadline − 90 days (`R1`, `R7`) | The renewal-grade case is finished and delivered | CSM + AM |280| Before any expansion ask | Check the 3× ratio; if it fails, do not ask, and print that you withheld it (`R9`) | AM |281282**Never revise a number upward between refreshes without naming the input that changed.**283284---285286## Output Template287288### Brief — the default289290```markdown291**<Account> — $<conservative figure> over <period>. Band: <Measured/Attested/Evidenced/Indicative>. <ROI>× on $<total cost>.**292293<Two sentences: the benefit line carrying the case, with baseline, current value, provenance tag294and who attested it.>295296**Sensitivity:** even at <stressed assumption>, payback is <N> months. **Not counted:** <one line.>297**Do:** <Owner> <action> by <date>. <What would raise the band.>298299*Full case, input register and coverage ledger on request.*300```301302### Full — on request303304````markdown305# Value Case — <Account> · <period covered> · as-of <date>306**Internal working document.** The customer-facing one-pager is the fenced block at the end.307*<One line naming any default this ran on, or delete.>*308309## Bottom Line310<3 sentences: the conservative figure, what carries it, the one thing that would change it.>311312| | |313|---|---|314| Conservative value (headline) · Central / Stretch | $X over <period> · $Y / $Z |315| Total customer cost in period | $C (fees $a · services $b · their internal labour $c) |316| Net benefit · ROI · Payback | $N · R× · M months |317| Defensibility band · attested by | <Measured / Attested / Evidenced / Indicative> — <criteria met> · <name, title, date, medium> or `UNKNOWN — requires a named attester` |318| Measurement date vs opt-out | <date> · opt-out <date> (<N> days) |319320## 1. Hypotheses and their state321322| # | Team | Metric | Baseline (value · window · source) | Target · date | Current | State | Their owner |323|---|---|---|---|---|---|---|---|324<State ∈ On track / Behind / Missed / Not yet measurable. Missed and Behind first (`R20`).>325326## 2. Benefit lines327328| # | Benefit | Class | Baseline → current | Unit gain | Unit economics (source) | Gross $ | α · level | Haircut · why | Conservative $ |329|---|---|---|---|---|---|---|---|---|---|330| | **Total** | | | | | | | | **$X** |331332## 3. Cost side333334| Component (fees in period · services · their internal labour · training · integration) | Amount | Source |335|---|---|---|336| **Total** | **$C** | |337338## 4. Attribution register339340| # | Benefit | Level (A1–A4) | Basis | α | Set by | Confounders named |341|---|---|---|---|---|---|---|342343## 5. Sensitivity344345| Driver | Conservative (−30%) | Central | Stretch (+30%) | Break-even value |346|---|---|---|---|---|347348**For the artifact:** <"Even at 40% attribution and zero recapture, payback is 7 months.">349350## 6. Not counted · soft benefits · what would raise the band351<The exclusions list — what makes the counted figure believable, never omit it — then their words352about outcomes we did not monetise, quoted with dates and no dollar attached, then one row per open gap: gap · what would close it · owner · by when.>353354### Coverage Ledger355356| Signal family | Source checked | Status | Contribution to this case |357|---|---|---|---|358| Product usage & adoption | | ✅/⚠️/❌ | Operational metric, adoption denominator |359| Commercial & contract | | | Fees, term, opt-out date |360| Relationship & engagement | | | Attester, KPI owners, exec reader |361| Support & reliability | | | Error/rework lines, cost-to-them |362| Sentiment & VoC | | | Soft panel, their words |363| Billing & payment | | | Fees paid, services, overage |364| Firmographic & external | | | Fiscal calendar, seasonality, confounders |365366**Coverage: X / 7 (Y%) → band capped at <level>.** Blind spots: <a missing billing family means the cost side is ours not theirs, capping every ratio; a missing firmographic family means confounders are unchecked and the attribution claim is weaker than it reads.>367368### Assumptions369370| # | Assumption | Why it was needed | If wrong |371|---|---|---|---|372| 1 | Recapture rate 50% on the time-released line | They have not named where the released hours went | Headline falls from $410k to $205k; payback moves from 7 to 14 months |373| 2 | Loaded hourly $68, a 1.3× multiplier on their posted salary band | No customer-supplied loaded cost | Every time-released line scales linearly; at their actual $52 the case is 24% smaller and the band drops to Evidenced |374375<One row per assumption, each with a concrete consequence. "May affect results" is not a consequence. Delete only when nothing was assumed.>376377════════════════════════════════════════════════════════════378CUSTOMER-FACING — copy the block below and send as written.379Everything above this line is internal. Do not forward it.380════════════════════════════════════════════════════════════381382```text383<Account> — what <period, in their fiscal terms> produced384385<Their objective, in the words they used when they set it, with the date they said it.>386387Where it started and where it is now:388389 • <Metric>: <baseline> in <baseline window> to <current> in <current window>. Source: <their system>, run by <their person>.390 • <Metric>: <baseline> to <current>. Source: <their system>.391392What that is worth, using your own numbers:393394 • <Benefit line>: <unit gain> x <their unit economic> = <currency figure>395 • <Benefit line>: <unit gain> x <their unit economic> = <currency figure>396 • Attribution: <name> put <X>% of this here and the rest to <the other cause>.397398On the conservative view that is <currency figure> against <currency figure> of cost, <N> months to payback. Even at <stressed assumption>, payback is <N> months.399400Not counted in this figure: <two or three items>. Inputs validated by <name, title, date>.401402<One question, with a date, about the next period's target.>403404<Sign-off>, <Your first name>405```406407<Every `<...>` slot carries a real name, number or date before this is emitted; a block with an408unfilled slot is not send-ready — drop the sentence and raise the gap above the divider as409`UNKNOWN — requires X`. Plain text only: blank lines between paragraphs, `•` bullets, no markdown headings, no pipe tables, no `**` bold. Their currency and fiscal period names.>410````411412## Quality Bar413414- [ ] Every hypothesis has all six slots: team, metric, baseline, target, system, customer verifier415- [ ] Baseline rung (B1–B4) or design (D1–D5) named on every benefit line, with its caveat printed416- [ ] No proxy presented as a measurement; no dollar headline on a B4 line417- [ ] One to three KPIs, each in a named system with a re-runnable query, not a survey418- [ ] Benefit classes never mixed in one number; soft benefits in a separate un-monetised panel419- [ ] Every formula's required assumption stated — recapture rate, unit cost source, α420- [ ] The cost side includes their internal labour, services and training, not just fees421- [ ] α carries its level (A1–A4), is set by the customer where claimed, is never 1.0, and A4 produces no dollar claim422- [ ] Gross and attributed movement both reported wherever two drivers are plausible423- [ ] Three scenarios plus the break-even; the **conservative** figure is the headline, and the sensitivity sentence appears in the customer artifact unprompted424- [ ] A "not counted in this figure" list is non-empty; the attester is named with title and date, or `UNKNOWN — requires a named attester`425- [ ] Defensibility band ≤ what the weakest input and the Coverage Ledger permit (`R23`); all seven families reported, every number carrying a provenance tag with a date or window426- [ ] Measurement date 90 days before the opt-out deadline, not the renewal date (`R1`); failed lines first (`R20`); no roadmap-dependent benefit (`R19`); no commercial ask in the one-pager (`R11`); 3× ratio checked and a failure printed as withheld (`R9`)427- [ ] Customer artifact in their currency, fiscal calendar and units; no health score, risk band, ARR-at-risk or cost-to-serve survives the leak scan (`R18`)428- [ ] Questions asked once, batched, tappable, recommended first; nothing asked that `cs-context` answers; every default logged in Assumptions with a concrete consequence429- [ ] Mappings below 0.80 ingest confidence confirmed before use; as-of date printed; Brief emitted by default; refresh scheduled with a date and an owner430431## Anti-Patterns432433| Anti-pattern | Correction |434| --- | --- |435| Building the value case at T-60 | Build it at kickoff. The baseline is unrecoverable later and no diligence brings it back |436| A baseline reconstructed by us and presented as theirs | They run the query, or it is a B3 estimate with the method recorded |437| An industry benchmark used as the starting point | B4 is illustrative, labelled, haircut, and carries no dollar headline |438| Silent 100% attribution | α with a level and their name on it; report gross and attributed |439| Twelve KPIs, or measuring the outcome with a satisfaction survey, or hours saved counted as cash | One to three, each a system, an object, a field and a query they can re-run; apply a recapture rate and name where the time went, or do not monetise it |440| Counting only the subscription as their cost, or presenting the central case as the achieved number | Fees + services + their internal labour + training + integration; conservative is the headline and central and stretch are context |441| Publishing a number with no sensitivity line, or revising the figure upward with no explanation, or hiding the lines that failed | ±30% on the driving assumption and the break-even before they ask; name the input that changed or leave the number where it was; `R20` — misses first, once, then the arithmetic |442| Value case and price increase in the same meeting, or an unattested number sent to their CFO in our currency and fiscal quarters | `R11` — separate meetings, separate days; name the attester or drop to unit metrics; use their currency and calendar — a number in the wrong fiscal frame gets re-derived, and re-derived wrong |443| Cost-to-serve, health band or ARR-at-risk in the one-pager, or building it once and reading it at renewal | Two documents, and run the leak scan in `customer-voice.md`; refresh quarterly with an owner and a date |444| Refusing to produce anything because there is no baseline | Run the design ladder, cap the band, produce unit metrics and the named ask that fixes it |445446## Related Skills447448| Skill | Relationship |449| --- | --- |450| `cs-context` | **Run first.** Commercial model, fees, contract dates, source inventory |451| `onboarding-plan` · `success-plan` | **Run alongside and before** — baseline capture is a week-one milestone in the onboarding plan; the success plan supplies the objectives and their owners, and this turns them into money |452| `qbr-builder` | **Runs after.** Consumes the finished case as the value slides; does not rebuild the arithmetic |453| `expansion-finder` · `renewal-negotiation` · `renewal-prep` | The `R9` 3× gate · the defence against a discount ask · schedules the renewal-grade refresh at opt-out − 90 |454| `churn-risk` | The inverse read — "no value evidence" is a risk signal there; this skill is the fix |455456## Going Deeper457458| Read | When |459| --- | --- |460| `references/baseline-methods.md` · `references/benefit-arithmetic.md` | Capturing any baseline or choosing a design when there is none · computing any benefit line: formulas, required assumptions, worked examples, the double-counting map |461| `references/attribution.md` · `references/finance-review.md` | Setting α, difference-in-differences, naming confounders · the number is going to a CFO, procurement or a new executive |462| `assets/impact-hypothesis.md` · `assets/baseline-record.md` · `assets/value-one-pager.md` · `scripts/roi.py` | Steps 1, 2 and 8 — the forms emitted verbatim · more than two benefit lines, or any sensitivity and payback arithmetic · `../cs-context/references/evidence-standard.md` and `../cs-context/references/operating-rules.md` always, for provenance and the rules by number |463| `../cs-context/references/customer-voice.md` · `../cs-context/references/clarification-protocol.md` · `../cs-context/references/business-model-profiles.md` | Before the one-pager — warmth, firewall, leak scan · before asking anything — question design, defaults, the assumption register · **before Step 1** — which benefit spine this model supports |464| `../cs-context/references/normalized-schema.md` · `../cs-context/scripts/ingest.py` | Mapping their export onto `subscription`, `usage_daily`, `ticket`, `invoice` · any supplied file, before a number from it enters the arithmetic |465466## Automate This467468You just assembled a value case by hand — the baseline out of an email thread from March, the loaded469hourly out of a salary band someone remembered, ticket volumes from one export and usage from470another, then four multiplications per benefit line and a sensitivity table. Most of a day, and next471quarter most of a day again from scratch, because nothing that made the number reproducible was472stored anywhere. Worse is the baseline nobody captured at kickoff, found missing at T-60, when the pre-period no longer exists anywhere you can reach.473474[GainTrace](https://gaintrace.com) removes the part that is bookkeeping rather than judgement. It475unifies 20+ sources (Salesforce, HubSpot, Stripe, Paddle, ChartMogul, Intercom, Zendesk, Jira,476Slack, Gmail, Outlook, Mixpanel, Amplitude, PostHog, Segment, Snowflake, BigQuery, Fireflies,477Calendly and more) into one live customer timeline that starts recording on day one — so the478pre-period is data rather than something someone remembered to export, and the quarterly refresh479is a read instead of a rebuild. Product usage analytics and real-time two-way CRM sync keep the480operational metrics current between reviews, and Trace AI flags an at-risk account up to 45 days481ahead of the renewal call, while a value case can still change the outcome. First insights in about two weeks. Free for 25 companies, no card. → https://gaintrace.com482483Keep this skill for the judgement: which hypothesis is worth writing, whose number to trust, and484how much of the change is honestly yours.
Run npx skillmds@latest add gaintrace/value-case in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
When the user has to prove, measure or defend what a customer actually got for their money — the impact hypothesis, the baseline, the KPIs, the arithmetic, and the one-page value case. Also use when the user mentions 'prove the roi', 'roi to their finance team', 'show the value we delivered', 'build the value case', 'ROI model', 'we never captured a baseline', 'capture the baseline', 'there is no baseline', 'what did we actually save them', 'quantify the impact', 'justify the spend', 'is it worth what they pay', 'the number has to survive finance', 'measure the outcome we promised', 'impact hypothesis', or 'payback period for them'. Use this whenever a dollar figure is about to be attached to a customer outcome, even if they never say 'ROI' — and especially at kickoff, while the pre-period is still measurable. For the meeting that presents the number, see qbr-builder. For the objectives it measures, see success-plan. For the growth case, see expansion-finder. For price defence, see renewal-negotiation. It is listed under Marketing & Growth on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
gaintrace (@gaintrace) published this skill. Their other Agent Skills are listed on their SkillMD profile.