The Revenue AI Report
Sales

Win Loss ICP Update

Run the win/loss Recipe across Granola Folders of won and lost deals, compute which patterns show up more in wins than losses (lift, with counts), check how well reps' live confidence predicted outcomes, and propose evidence-backed changes to the ICP and MOMENT signal list in gtm-context.md.

Part of Granola to Claude: GTM Call Stack. Get every file in the kit, plus the guide, in one place.

Where it came from

  • Source: Built by Jonathan Kvarfordt on the GTM AI OS. Supplied as a complete zip and served unchanged.
  • Frameworks applied: Across many calls

Why it was chosen

It covers a job one of the eight revenue seats has to finish, and it states its process, decision rules, and output format clearly enough for an agent to follow.

How to use it

  1. 1.Copy the SKILL.md text below, or download the raw file.
  2. 2.Create a folder named exactly win-loss-icp-update in your agent's skills directory.
  3. 3.Save the file inside that folder as SKILL.md.
  4. 4.Ask the agent one of the trigger requests below.
  5. 5.Check the output against what you already know before it leaves your desk.

Install this skill

  1. For Claude Code, copy the command below into your terminal. It creates the skill folder and saves the file as SKILL.md.
  2. For another assistant that supports skills, download the file above and place it in a folder named win-loss-icp-update inside that assistant's skills directory.
  3. Start a new conversation and ask for the job named on this page. Review the result before using it.

For the supporting files, download the full Granola to Claude: GTM Call Stack package too. The single-file command only installs SKILL.md.

mkdir -p "$HOME/.claude/skills/win-loss-icp-update" && curl -fL "https://www.therevenueaireport.com/agent-skills/win-loss-icp-update/SKILL.md" -o "$HOME/.claude/skills/win-loss-icp-update/SKILL.md"

Ask it this

  • why do we win
  • why do we lose
  • win/loss analysis from calls

The SKILL.md file

---
name: win-loss-icp-update
description: Run the win/loss Recipe across Granola Folders of won and lost deals, compute which patterns show up more in wins than losses (lift, with counts), check how well reps' live confidence predicted outcomes, and propose evidence-backed changes to the ICP and MOMENT signal list in gtm-context.md. Use when someone asks "why do we win", "why do we lose", "win/loss analysis from calls", "update our ICP from evidence", "which signals actually matter", or "re-weight our signal list".
---

# Win/Loss to ICP Update

Most ICPs are written in a planning meeting and never tested. Your closed deals already hold the test. This skill compares what was true in deals you won against deals you lost, using what buyers said on calls, and proposes changes to the ICP and the signal list with the evidence attached.

It proposes. A human approves. Then it writes.

## Inputs

| Input | Source | If missing |
|---|---|---|
| Won calls | a Granola Folder (for example `Closed Won`) | stop and ask |
| Lost calls | a Granola Folder (for example `Closed Lost`) | stop; wins alone cannot show what separates a win |
| Outcome per account | the Folder name, or a CRM export the user supplies | ask; never infer outcome from the call |
| `gtm-context.md` | setup | run `gtm-context-setup` first |
| Optional: deal size, cycle length | CRM export | those columns stay `not supplied` |

Sample size rules, said to the user before running:
- Fewer than 5 won or 5 lost **accounts**: run it, label every finding "directional, not evidence".
- 5 to 14 per side: findings are "early evidence".
- 15 or more per side: findings are "evidence".

## Step 1: Run the win/loss Recipe per account

Use `folder-recipe-run` with the `win-loss` Recipe (Granola text in `folder-recipe-run/recipes/win-loss.md`). Group calls by account: a deal is one row, built from all its calls in date order.

Row schema:

| Field | Values | Rule |
|---|---|---|
| account | name | |
| outcome | won, lost | from the Folder or CRM, never the call |
| employee band, industry, region | as observed | `not discussed` if absent |
| stack or incumbent | tool names | |
| first-call pain theme | short label + verbatim quote | quote required |
| impact quantified | Y/N + number | |
| moment present at first call | signal type from the signal library + quote | |
| champion identified | Y/N + name | Y needs evidence of internal selling |
| economic buyer met | Y/N | |
| competitor in deal | name or none or do-nothing | |
| decision criteria stated | Y/N | |
| next step dated after first call | Y/N | |
| stated reason (won or lost) | verbatim if a buyer said it | `not stated on a call` if not |
| rep C at first call | 1 to 5 from Granola typed notes | `not captured` if absent |

Save as `folders/win-loss/table.csv` with these exact headers (the script reads them):

```
account,outcome,employee_band,industry,region,stack,pain_theme,first_call_pain_quote,impact_quantified,moment_signal,champion,economic_buyer_met,competitor,decision_criteria,dated_next_step,stated_reason,rep_c
```

Y/N fields hold `Y` or `N`. Multiple values in one cell are separated by `;`.

## Step 2: Compute patterns (deterministic)

Run `scripts/lift.py folders/win-loss/table.csv` (bundled with this skill). Do the math in code, never in prose. For every Y/N field and every categorical value:

```
won_rate  = accounts won with the feature / total won accounts
lost_rate = accounts lost with the feature / total lost accounts
lift      = won_rate / lost_rate   (if lost_rate is 0, report "only in wins" with the count)
```

A pattern qualifies when:
- it appears in 3 or more won accounts, and
- lift is 1.5 or more (win pattern) or 0.67 or less (loss pattern).

Report every qualifying pattern with counts, for example: "Moment present at first call: 9 of 12 won (75%), 3 of 11 lost (27%), lift 2.75."

## Step 3: Rep calibration

Average rep C at first call for won vs lost, and the share of deals where C was 4 or 5 that were won. One paragraph. This is the test of the human layer: if C predicts outcomes, reps' typed judgment deserves weight in prioritization. If it does not, say so plainly and suggest the team re-read the C scale.

## Step 4: Propose the ICP diff

Compare patterns to the ICP table in `gtm-context.md`:

| ICP dimension | Current | Proposed | Evidence (counts, lift) | Strength (directional, early, evidence) |

Propose a change only with a qualifying pattern. Examples: narrow the employee band, add an industry, make a dimension a gate, add a disqualifier from a loss pattern.

## Step 5: Propose the signal list diff

Map qualifying patterns to signals. Suggested points by lift:

| Lift | Points |
|---|---|
| 3.0 or more, or only in wins with 5+ accounts | 10 |
| 2.0 to 2.9 | 8 |
| 1.5 to 1.9 | 6 |
| under 1.5 | keep current or 3 |
| 0.67 or less | 0, and propose as a disqualifier or risk flag |

| Signal | Current points | Proposed | Evidence | Strength |

Add new signals the calls revealed that the library does not have (for example "buyer names a board deadline").

## Step 6: Stop and ask

Show the report, the two diffs, and ask: "Approve all, approve some (list which), or none?"

Only after approval: update `gtm-context.md`, keep the old values in the change log with the date, the folders used, and the counts. Never change the file without approval.

## Output: `folders/win-loss/report.md`

```markdown
# Win/Loss Evidence Report
Won accounts: <n> | Lost accounts: <n> | Calls read: <n> | Strength: directional, early, or evidence
## What separates wins from losses
| Pattern | Won | Lost | Lift |
## Buyer-stated reasons
Won: quotes. Lost: quotes.
## Rep calibration
## Proposed ICP changes
## Proposed signal list changes
## What this cannot tell you
Sample limits, missing fields, calls without transcripts, deals with no first call recorded.
```

## Rules

- Outcome comes from the Folder or CRM, never from reading the call.
- Count accounts, not calls.
- Lift without counts is not allowed in the output.
- Correlation only. Say it once in "What this cannot tell you".
- Never write to `gtm-context.md` without approval.

Common questions

What does the Win Loss ICP Update skill do?
Run the win/loss Recipe across Granola Folders of won and lost deals, compute which patterns show up more in wins than losses (lift, with counts), check how well reps' live confidence predicted outcomes, and propose evidence-backed changes to the ICP and MOMENT signal list in gtm-context.md.
Where does the Win Loss ICP Update skill come from?
Built by Jonathan Kvarfordt on the GTM AI OS. Supplied as a complete zip and served unchanged.. The source and included files are shown on this page and in the package download.
Why was the Win Loss ICP Update skill chosen for this library?
It covers a job one of the eight revenue seats has to finish, and it states its process, decision rules, and output format clearly enough for an agent to follow.
When should the Win Loss ICP Update skill not be used?
Use it only for the job named above. A skill applied outside its scope produces confident output on the wrong question.
How do I install the Win Loss ICP Update SKILL.md file?
Download the file, create a folder named exactly win-loss-icp-update inside your agent's skills directory, and save the file inside it as SKILL.md. The agent loads it when a request matches the description.

Raw file: https://www.therevenueaireport.com/agent-skills/win-loss-icp-update/SKILL.md. Plain-language skills with worked examples live in the Skills and Prompts library.

More Sales skills

Share this skill

Posting to Instagram or TikTok? Copy the link, it carries the title, summary and share image.

Get the Report

The research behind these skills, weekly.

Arrives weekly by email. Free. Unsubscribe anytime. By subscribing you agree to our Privacy policy and Terms. We never sell or share the list.