Value Proposition Canvas
You map what the buyer needs against what the vendor actually has, audit every claim for whether it survives contact with a skeptical buyer, and write positioning that uses only the claims that survive.
The proof audit is the point. A canvas without it is a wish list in a grid. Any model can produce a plausible-looking fit assessment; the value is in refusing to put unverifiable claims into the positioning, and in naming the gaps out loud.
Input
Takes icp/jtbd-matrix.md.
If it does not exist, run jtbd-matrix first (which will run icp-summary if that is missing too). The canvas is derived, not researched from scratch: Jobs come from the matrix, Pains from the matrix and the ICP, Gains from the gains-sought rows. Building it from a domain alone produces a fit assessment with nothing behind it.
If the user has first-party materials, read them now. Internal knowledge is the only thing that can legitimately lift a C-grade claim into positioning, via the override in step 5.
What you produce
Two files in the output directory (default icp/):
value-prop-canvas.md: the source of truthvalue-prop-canvas.xlsx: generated byscripts/md_to_xlsx.py
Structure in references/canvas-template.md.
Process
1. Customer side
Three blocks, derived from the matrix. Full field guidance in references/canvas-template.md.
- Jobs: one row per job from the matrix, condensed from the full When/I want/so I can statement to an outcome phrase, carrying the Job ID and opportunity score.
- Pains:
P-01onward. Severity Extreme / High / Moderate / Low. Each links to one or more Job IDs. A pain with no job behind it is not a pain, it is an observation. Cut it. - Gains:
G-01onward. Type Required / Expected / Desired / Unexpected. Required gains are table stakes; failing one loses the deal but winning it earns nothing. Unexpected gains are where differentiation lives. Each links to Job IDs.
2. Value map
What the vendor actually offers, from the research, not from aspiration.
- Products and Services (
PS-01onward), each with its role in the offer: Core, Core and most differentiated, Core and best-evidenced, Supporting, Enabling, or Not addressed. - Pain Relievers (
PR-01onward): which pain, via which PS, at what strength, and how it actually relieves it. - Gain Creators (
GC-01onward): same shape against gains.
Strength grades: Strong (a named, specific capability with evidence), Partial (real but under-evidenced or narrower than the pain), Adjacent (a genuine competitive bake-off, not a default win), Not addressed (no capability found).
The Not addressed rows are mandatory output. A canvas with zero gaps is wrong. If your first pass has none, you graded aspirationally. Re-run against the evidence log and find them.
3. Fit assessment
For the highest-opportunity jobs, four columns beyond the fit grade:
| Column | What goes in it |
|---|---|
| What is genuinely differentiated | The specific, attributable thing. "Answers a named public complaint about the incumbent" beats "best-in-class" |
| The gap | What it does not do, or what a buyer will doubt. Every row gets one. There is always one |
| Sales confidence | High / Medium / Low, with the condition attached: "High, if attributed to the named customer" |
"Adjacent" is the honest grade wherever the vendor is not the default choice. Writing Strong everywhere makes the whole canvas unusable, because the reader cannot tell which rows to trust.
4. Proof audit
Every claim you intend to use, graded. Follow references/proof-audit.md.
| Column | |
|---|---|
| Claim | As it would be said to a buyer |
| Source | Where it comes from, specifically |
| Evidence grade | A / B / C / D |
| Will this ICP believe it | Written from the buyer's skepticism, not yours |
| What would make it credible | The concrete fix |
| Risk of using as-is | Low / Medium / High, with the failure mode |
Close with a numbered priority order for fixing. That list is often the most actionable thing in the document, because it tells marketing exactly what to go get.
5. The gate
Claims graded C or D may not appear in the positioning statement, the headline options, or the message pillars. They go to the do-not-claim list with the fix that would release them.
This is a hard gate with one exception.
Override. The user may release a specific claim when they hold internal evidence the web cannot show: a real rate card, a documented migration process, a customer who has not been written up. When they do:
- Record the claim in an Overrides table with the basis they stated and the date
- Mark it in positioning as user-asserted, not web-verified
- Keep it in the proof audit at its original grade with the override noted
The override is per-claim and explicit. Never infer one. Never apply a blanket release. If the user says "it's all fine, use everything," ask which specific claims and on what basis, because a blanket override defeats the only mechanism keeping the document honest.
6. Positioning
Built only from what survived. Structure in references/positioning-output.md:
- Positioning statement, plus why this framing
- Three headline options, one recommended, each tied to a Job ID
- Three message pillars, each with its jobs, pains, and the proof it still needs
- What to lead with, by trigger
- Competitive frame, which must include non-consumption
- Top objections with honest responses
- Out of scope: do not claim
Lead with the trigger, not the technology. The buyer is not shopping for a category. They have a stalled deal, a mandatory second framework, or a board meeting. Name that.
7. Generate and hand off
python3 scripts/md_to_xlsx.py icp/value-prop-canvas.md icp/value-prop-canvas.xlsx
Report: the fit summary counts (Strong / Partial / Adjacent / Not addressed), the claims that failed the gate, any overrides applied, and the top item on the fix list.
The rules that make this useful
Conceding a gap makes the strong claims land harder. A canvas that claims everything is worth nothing, because a buyer who catches one overclaim discounts all of it. Naming the two things the vendor does not do is what makes the four things it does credible.
Grade against buyer skepticism, not internal enthusiasm. The question is not "is this true," it is "will a Head of Security who has been pitched four times this quarter believe it without a source." Those are different questions and only the second one matters.
A single case study is not an average. "Anaconda reached SOC 2 Type I in four weeks" is a B claim and usable when attributed. "You'll be audit-ready in four weeks" is the same fact generalised into a claim nobody can support, and it fails on the first prospect who asks whether that is typical.
Silence is an answer, and usually a bad one. Where a buyer's first question has no documented answer, that is a High-risk row, not a blank. "What happens to our audit history if we switch?" with no published process is the largest unaddressed objection a switching buyer has, and it needs to be in the doc.
Required gains are not differentiators. Delivering a Required gain earns nothing; failing one loses the deal. Leading with a table-stakes capability wastes the headline. Differentiation lives in Desired and Unexpected.
Quality gate
- Every pain and gain links to at least one Job ID from the matrix.
- Every Job ID from the matrix appears on the customer side, including the ones with no answer.
- At least one row is graded Not addressed, or you have re-checked and can defend why not.
- Every fit row has a named gap.
- Every sales confidence rating carries its condition.
- Every claim in the proof audit has a specific source, not a page type.
- No C or D claim appears in the positioning statement, headlines, or pillars without a recorded override.
- Every override names the user's stated basis and is marked user-asserted in positioning.
- The competitive frame includes non-consumption.
- The do-not-claim list is populated and says why each item matters commercially.
Anti-patterns
| Do not | Instead |
|---|---|
| Grade every fit Strong | Use Adjacent where it is a genuine bake-off |
| Write a canvas with no gaps | Find them. They exist, and they are the useful part |
| Put an unverified claim in a headline | Send it to do-not-claim with the fix that would release it |
| Lead positioning with the category | Lead with the trigger that starts the search |
| List competitors as the whole competitive frame | Start with non-consumption, then the non-software substitute |
| Answer every objection confidently | Say "no strong response yet" where that is true |
| Apply a blanket override | Ask which specific claims, and on what basis |