---
name: os-win-loss-extract
description: Extracts why deals were won, lost, disqualified, or churned over 18 to 24 months in the buyer's own words, writes an evidence-based ICP, and proposes buying signals only after comparing their frequency in wins versus losses. Use when the user says "why do we win", "why do we lose", "win loss analysis", "build our ICP", "who actually buys from us", "which signals actually predict a win", or as the first KNOW step.
---

# os-win-loss-extract

Produce `context/deal-history.md`, `context/icp.md`, `artifacts/os-icp.md`, and the first rows of `context/signal-library.md`. A signal is only a signal if it shows up in wins more than in losses.

## Preflight (every run)
1. Confirm `GTM-AI-OS/` is accessible. If not: "I need access to your GTM-AI-OS folder. Select it in Cowork's folder picker, or run `os-install` from the core plugin." Stop until it is.
2. Read `CLAUDE.md`, `INDEX.md`, `context/fence.md`, and the last 20 lines of `signals/log.md`.
3. Check the prerequisites below. For anything missing, ask the cold-start questions and offer: (a) run the earlier skill now, or (b) fast path: answer the questions and this skill writes a minimal version of the missing artifact marked `status: draft (fast path)`.
4. Before any connector write or external send, check `context/fence.md` for the account's bucket and the action. Auto = proceed. Approve = ask. Never = decline and name the row.
5. On finish, update the artifact row in `INDEX.md` (with `[[wikilinks]]` to the files this run read) and append one line to `signals/log.md`: `<date> | <skill> | <files read> | <produced> | <human changed> | <open question>`.

## Prerequisites
- `context/stack.md` naming where deal data lives.
Cold-start: "Where does your closed-deal history live: a CRM, a spreadsheet, or can you paste 50 to 200 deals with outcome and notes?" Request access to whatever they name. If nothing is available today: "Describe your five best customers and five worst losses." Mark everything `Inferred` and continue.

## Step 1: Pull the set
Closed-won, closed-lost, disqualified, and churned records for the trailing 18 to 24 months with segment, size, source, cycle length, close reason, and dates. Pull loss and churn call transcripts from whatever call tool is connected. Record the sample size per outcome group.

## Step 2: Extract reasons in the buyer's words
For each group, the recurring reasons, quoted where possible. Tag each Verified (from a call, email, or note with a date), Inferred (pattern), Unknown. Include losses that involved existing automation, no budget, and no active project; those are the reasons that look like wins from the outside.

## Step 3: Segment the evidence
Which segments, sizes, industries, and entry points close, retain, and expand, and which stall or churn. Numbers, not adjectives.

## Step 4: Propose signals, then test them against losses
For each candidate signal (a situation observed before the buying decision):
1. Count how many wins had it and how many losses had it, in matched segments.
2. Compute the win share: wins with signal ÷ (wins + losses with signal).
3. Keep only signals with sample ≥ 5 and win share meaningfully above the base win rate. Show the table: signal · wins · losses · win share · base rate · sample.
4. Use only evidence available before the decision. A signal that appears after close is an outcome, not a signal.
Write kept signals to `context/signal-library.md` with default confidence, source type, expiry (default 45 days), and the win-vs-loss numbers. Write rejected signals to a "tested and dropped" section so nobody proposes them again.

## Step 5: Write the FIT band
ICP FIT = firmographic + situational conditions present in accounts that closed and retained. Write disqualifiers too.

## Step 6: Write
Fill `context/deal-history.md`, `context/icp.md` (`status: draft`), `artifacts/os-icp.md`. Link `[[deal-history]]` and `[[signal-library]]` in `INDEX.md`.

## Quality gate
Refuse to write a signal to the library without its win-vs-loss numbers. Refuse an ICP from fewer than 20 deals without marking every line Inferred and saying so at the top.

## Hand off
Say: "Now build the record. Run `os-account-context` on your best open account."
