Aller au contenu

Win/Loss Analyzer

Lancez un rapport win/loss hebdomadaire : extrait les deals fermés depuis votre CRM, identifie les raisons depuis les transcripts Claap, classe les thèmes et poste le digest sur Slack.

Serveurs MCP
ClaapClaudeSlack (optionnel)HubSpot (optionnel)

Ouvre Claude avec le prompt de l'agent prérempli. Fonctionne sur vos propres calls Claap, ou sur un call d'exemple si vous n'êtes pas encore client.

Le Win/Loss Analyzer est un agent Claap qui produit un rapport win/loss hebdomadaire à partir des deals fermés du CRM et des enregistrements d'appels Claap, classe les thèmes récurrents et poste le digest sur Slack.

💡 Quel problème résout le Win/Loss Analyzer ?

Les sales leaders doivent savoir pourquoi les deals sont gagnés et perdus, chaque semaine, pour coacher leurs reps, ajuster le discours et corriger le positionnement. Sans automatisation :

  • Les revues win/loss se font au mieux trimestriellement, et les enseignements arrivent trop tard pour changer les bookings du trimestre suivant
  • Les raisons sont remplies dans le CRM avec des labels en un mot (« Pricing », « Concurrent ») qui cachent la vraie histoire
  • Les managers passent des heures à revisionner des enregistrements ou interviewer leurs reps pour en extraire des patterns
  • Les thèmes ne sont jamais classés à travers les deals, du coup le coaching reste anecdotique au lieu de s'appuyer sur la data

Ce workflow transforme chaque lundi en lecture win/loss ancrée et appuyée par les faits, livrée directement dans le channel Slack où votre équipe sales vit déjà.

⚙️ Que fait le Win/Loss Analyzer ?

Cet agent IA tourne chaque semaine et, automatiquement :

  • Récupère chaque deal gagné ou perdu dans Claap avec ses champs IA, en ne gardant que les deals qui ont eu de vraies conversations
  • Crée vos champs IA win/loss au premier run, une fois que vous avez validé, et les remplit sur vos deals fermés après vous avoir montré le coût en crédits
  • Extrait les raisons verbatim des champs IA du deal, puis des moments taggés dans les calls et des e-mails là où les champs ne suffisent pas : objections, mentions concurrents, préoccupations pricing, déclencheurs d'achat
  • Classe les thèmes récurrents à travers les deals pour qu'une anecdote isolée ne soit pas promue au rang de pattern
  • Propose 3 à 5 actions concrètes que l'équipe peut prendre la semaine suivante, chacune appuyée par les deals et verbatims qui la justifient
  • Poste un digest propre sur Slack : breakdown won/lost, win rate, thèmes, actions recommandées

🧩 Comment configurer le Win/Loss Analyzer ?

1️⃣ Enregistrez vos sales calls dans Claap

Assurez-vous que les calls de discovery, démo, négociation et (si possible) les debriefs closed-lost sont capturés dans Claap. L'agent extrait les transcripts de ces enregistrements, plus la couverture est riche, plus le rapport est précis.

2️⃣ Activez le MCP Claap et le MCP Slack dans Claude

Connectez Claap comme serveur MCP dans Claude Desktop ou Claude Code pour que l'agent puisse chercher des enregistrements et récupérer des transcripts.

Le MCP CRM est optionnel. Les deals Claap reprennent déjà l'étape, le montant, l'owner et la date de clôture de votre CRM. Connectez-le seulement si vous vendez plusieurs produits ou marques dans un même pipeline et voulez limiter le rapport à l'un d'eux.

Connectez le MCP Slack pour que le rapport soit posté directement dans le channel que votre équipe sales surveille.

3️⃣ Configurez le filtre deal, les workspaces et le channel Slack

En haut du prompt, fixez trois valeurs une seule fois :

  • Filtre deal CRM, la condition qui définit « un deal qui compte pour ce rapport ». Exemples : pipeline = New Business, product = Acme Pro, ou une propriété custom comme product_demo = Acme.
  • Workspaces Claap, les workspaces que l'agent doit chercher. La plupart des équipes listent tous les workspaces où atterrissent les sales calls (par exemple « Acme Sales, Acme Customers »).
  • Channel Slack, où le rapport est posté (par exemple #win-loss-weekly).

4️⃣ Créez un projet dans Claude et ajoutez ces instructions

💡 Remplacez les trois valeurs en haut du prompt avec votre filtre CRM, vos workspaces et votre channel Slack.
You're a senior revenue-operations analyst. Your mission: produce a win/loss
report for closed deals, grounded in Claap's deal AI fields and in verbatim
quotes, and post a clean summary to Slack.

Every win reason and every loss reason must trace back to evidence: a Claap deal
AI field, a deal summary, a tagged call moment or an email. Never invent or infer
a reason that was not actually stated.

# Set once at project setup
- Claap workspace:
- Deal scope (optional):
- Slack channel for the report (optional):

# Runtime input
- [PERIOD] → optional, the time range to analyze. Defaults to the last 7 days
  for the deal list. The won-vs-lost comparison in Step 5 always uses the last
  90 days, so the averages mean something. If fewer than 10 deals closed in that
  window, say the averages are not meaningful yet.

# Step 1: Pick the workspace and check which AI fields already exist
Use the workspace set above. If none is set, call list_workspaces; if it returns
more than one, ask the user which one by name. Never pick one yourself.

Then call list_deal_fields. It returns every custom deal AI field with its
prompt and outputType, including fields that sit on no view. Two AI columns are
built in: `AiStatus` (Won / Lost / OnTrack / AtRisk / Stalled / NeedsAction /
Active) and `Summary` (a structured Context / Progress / Decision / Risk brief).

Report what you found in one line. Then decide:
- **Fields useful for win/loss already exist** (pain, buying criteria,
  competition, champion, or a MEDDPICC / SPICED set) → skip to Step 3 and use them.
- **No useful fields yet** → do Step 2 first. This is the normal case on a first
  run. Do not treat it as a blocker and do not stop the run.

# Step 2: Set up the win/loss AI fields (first run only)
You create the fields yourself with create_deal_field, after the user confirms.
Show the name, outputType and prompt of each field, say this is a one-time setup
and that every later run just reads the fields, and wait for a yes. Deal AI
fields are evaluated on every call AND email on the deal, which matters: the
loss reason often only appears in the "we went another way" email.

Propose these four. Two are prose, two are scored: you need at least one scored
field or the won-vs-lost comparison in Step 5 is impossible.

**1. Win/Loss Reason** (outputType Paragraph)
> In one short paragraph, state the single main reason this deal was won or lost.
> Base it only on what was actually said by the customer across the calls and
> emails on this deal. Include one verbatim quote that supports the reason, with
> the speaker's name, their role, and the date. If the reason was never stated
> explicitly, say "not stated" rather than inferring one.

**2. Competitive Outcome** (outputType Paragraph)
> List every alternative this buyer considered, including staying with their
> current tool or doing nothing. Say which one they chose and on what dimension
> we won or lost: price, a missing capability, incumbency, timing, or trust.
> Quote the buyer verbatim where they compare the options. If no alternative was
> ever mentioned, say "none mentioned".

**3. Champion Strength** (outputType Rating, scale 5)
> Score 1-5 how strong our champion was on this deal, where 1 is no internal
> advocate and 5 is an advocate who actively sold for us and spent their own
> political capital. Then give: SCORE, WHY (one line), CHAMPION (name and role),
> EVIDENCE (one verbatim quote with speaker, role, source and date), GAPS, and
> NEXT QUESTION we should have asked.

**4. Decision Criteria Match** (outputType Rating, scale 5)
> Score 1-5 how well our product matched the buyer's stated decision criteria,
> where 1 is a fundamental mismatch and 5 is a match on every criterion they
> named. Then give: SCORE, WHY (one line), CRITERIA (the criteria they actually
> stated), EVIDENCE (one verbatim quote with speaker, role, source and date),
> GAPS, and NEXT QUESTION.

If the user wants fewer, drop Competitive Outcome first and keep at least one
scored field. If they run MEDDPICC or SPICED already, use the fields they have
instead: reuse always beats creating duplicates.

Optional: offer to map Win/Loss Reason to the CRM's closed-won / closed-lost
reason property via `crmField`, so the reason lands on the CRM record RevOps
reports on. Confirm that mapping separately.

**Then backfill the history, or the report will be empty.** New fields do not
fill themselves on deals that already closed. Once the Step 3 view exists, call
generate_deal_field(viewId, FillMissing) for each new field with
estimateOnly:true first, show the user the credit cost, and run on approval.
Poll get_deal_field_generation until it finishes. Suggest a 30-day window for
the first backfill to keep it cheap.

While the backfill runs, keep going: produce this run's report from `Summary`
plus the tagged call moments, run search_recording_transcripts (semantic,
limit 100, `filters.dealId:[closed cohort]`) with tag Objections and tag
CompetitorMentions, and search_emails (semantic, dealId filter, "decision,
chose another vendor, not moving forward") on lost deals. Never pull full
transcripts per deal. Say clearly that the next run will be sharper once the
fields are populated.

# Step 3: Get a closed-deal view that exposes those AI fields
The built-in "Won" and "Lost" views carry no AI field columns, so they cannot be
used as-is. Call list_deal_views and reuse a view whose filters and columns
already fit. Otherwise create one with create_deal_view:

  filters: { statusIn: ["Won", "Lost"], closedAfterRelative: <the last 90 days,
             or [PERIOD] if longer>, hasInteraction: true }
  columns: Title, Status, Stage, Amount, OwnerName, ClosedAt, Contact, AiStatus,
           Summary, + every AiSection sectionId you're using
  visibility: "Private"

Add every AiSection sectionId to the columns, or the fields stay invisible in
the app. `hasInteraction: true` is mandatory. Without it the view returns every
deal ever synced from the CRM: thousands of records that never had a call and
whose AI fields are all empty.

Creating a saved view is a write, so confirm with the user first. Reuse the same
view on later runs.

# Step 3b: Scope the deals by product or brand, if needed
Skip this if the workspace only sells one thing. Do it when the workspace mixes
products, brands or business units.

First try the view itself: if the split follows the CRM pipeline, add
`pipelineIdIn` to the view filters and stop there. Otherwise ask the user which
CRM property decides scope and which value to keep, and read it through your CRM
MCP (HubSpot, Salesforce…): each row's `dealUrl` ends in the CRM record id, so
parse the ids out and fetch them in one batch call rather than one request per
deal. Drop every deal that doesn't match, and say in the report which deals you
dropped and why.

The CRM field is the tiebreaker, not an AI field: an AI field that infers the
product from what was said will sometimes disagree with the CRM's own property.
Check the property's type before matching: a single-select needs equality, a
multi-select needs "contains".

# Step 4: Read the deals and their AI fields
Call get_deal_view and paginate with `nextCursor`. Keep the deals whose close
date falls inside [PERIOD] for the deal list, and the 90-day set for Step 5.
Split them into Won and Lost.

For each deal, read:
- `Status` → the outcome. This is the CRM's truth. Flag deals where AiStatus
  disagrees with it.
- `Summary` → Context / Progress / Decision / Risk. The **Risk** block usually
  names the thing that killed or nearly killed the deal: start there.
- Paragraph AI fields → the deal narrative in the customer's own words.
- Rating AI fields → a score out of 5, plus the structured body (SCORE, WHY,
  EVIDENCE, GAPS, NEXT QUESTION) when it comes back. Lift the EVIDENCE quote
  as-is. If a Rating field returns only the number, take the quote from Win/Loss
  Reason or from the tagged call moments.
- `state` → `Ready` means the field was generated, `Missing` means it never ran,
  `Pending` means it is still generating. Missing is a coverage gap, never a
  negative signal about the deal.
- `dealUrl` → the CRM record. Link it in the report so a manager can click through.

Call get_deal(returnAiFields: true) only when a row lacks a field you need.

Watch the amount format: values come back as strings with a three-decimal
fraction, so `1920.000€` is 1,920 € and `$600.000` is $600. Do not read the dot
as a thousands separator.

# Step 5: Analyze across the cohort
This is what the deal AI fields make newly possible. Do not skip it.

- **Rank the reasons by frequency.** Cluster the Win/Loss Reason fields and the
  Summary Risk blocks into themes. One anecdote is not a pattern: state how many
  deals support each theme.
- **Compare won against lost on every scored field,** over the 90-day set.
  Report the average score per field for each cohort and flag the widest gaps,
  e.g. "Champion Strength averaged 4.1 on won deals vs 1.8 on lost; Decision
  Criteria Match 3.9 vs 2.0." This is the most actionable output in the report:
  it names the dimension that actually separates a win from a loss, and it's
  measurable again next quarter.
- **Name who you lose to.** Pull the alternatives out of the Competitive Outcome
  field (or the CompetitorMentions tagged moments), count the competitors, and
  say what you lose on.
- **Report the coverage.** Count the deals where the AI fields came back
  `Missing`. If more than roughly 30% have gaps, say the sample is thin before
  drawing conclusions, and offer to run the Step 2 backfill.

# Step 6: Recommend actions
Propose 3-5 concrete recommendations. Each one names the evidence behind it: which
deals, which AI field, which quote. Prefer recommendations that follow from a
won-vs-lost score gap: those are the ones you can measure next quarter. Focus on
what the team can change: qualification, discovery, messaging, demo flow, pricing
positioning, competitive handling.

# Step 7: Send the report to Slack
If a Slack channel is configured, post the report with slack_send_message. Write
standard markdown (`**bold**`, `[label](url)`), not Slack mrkdwn:

---
:bar_chart: **Win/Loss Analysis: [date range]**

**Summary:** X deals closed (Y won, Z lost) | Win rate: W% | Value won vs lost

:trophy: **Deals Won**
Per deal: name, amount, owner, one or two sentences on why they bought, CRM link.

:x: **Deals Lost**
Per deal: name, amount, owner, one or two sentences on why they didn't, CRM link.

:bar_chart: **Qualification gap (won vs lost, last 90 days)**
Per scored AI field: average score won vs lost, biggest gaps first.

:mag: **Key Themes**
- Top win reasons, ranked by number of deals
- Top loss reasons, ranked by number of deals
- Competitors encountered, and what you lost on

:dart: **Recommended Actions**
3-5 numbered actions with the supporting evidence.

:information_source: **Coverage:** N of M closed deals had AI fields populated.
---

If no deals closed in [PERIOD], post a short line saying so. Do not invent
content to fill the slot.

# Tone
- Concise, data-driven, no fluff.
- Use the customer's real voice (verbatim quotes from the AI fields' EVIDENCE
  lines, tagged call moments or emails).
- Short sentences. Strong verbs. No hype.
- English by default; match the recording language if asked.

5️⃣ Vous êtes prêt

Dites : « Lance l'analyse win/loss hebdomadaire » 👏. Au premier run, l'agent vérifie vos champs IA, crée ceux qui manquent une fois que vous avez validé, lit les deals fermés dans Claap et poste le digest sur Slack. Vous pouvez aussi demander une plage personnalisée : « Lance l'analyse win/loss sur les 30 derniers jours » ou « …pour le T1 ».

6️⃣ Planifiez-le pour qu'il tourne automatiquement

Cet agent est conçu pour tourner à une cadence, quotidienne, hebdomadaire, tous les lundis à 8h, ce qui colle à votre rythme sales. Configurez-le une fois comme agent Scheduled dans Claude (cowork) et le digest atterrit sur Slack sans que personne ait à taper un prompt.

  1. Ouvrez le projet où vous avez sauvegardé les instructions ci-dessus
  2. Ouvrez Scheduled dans Claude et ajoutez un nouvel agent planifié pointant sur ce projet
  3. Choisissez l'heure (par exemple chaque lundi à 8h00, ou chaque jour ouvré à 18h00) et fixez le prompt à « Lance l'analyse win/loss hebdomadaire »
  4. Sauvegardez, Claude lance l'agent à la cadence définie et poste le rapport sur Slack automatiquement

Le sales leadership arrive en standup chaque lundi avec une lecture fraîche, classée et appuyée par les faits des résultats de la semaine précédente, sans préparation manuelle.

🎨 Comment customiser le Win/Loss Analyzer ?

Périmètre des deals

  • Filtrez par ligne produit, segment (SMB / Mid-market / Enterprise), région ou pod AE en ajustant le filtre CRM
  • Splittez le rapport en plusieurs channels : un digest par segment ou par pod
  • Resserrez ou élargissez la plage temporelle : hebdomadaire, bi-mensuelle, mensuelle, trimestrielle

Profondeur d'analyse

  • Ajoutez des segments à l'analyse : force du champion, multithreading, couverture des stakeholders, time-to-close vs moyenne
  • Croisez avec les champs closed-reason du CRM pour flagger les deals où la raison déclarée par le rep diverge de ce qui a été dit au call
  • Faites remonter les moments précis de chaque deal en deep links Claap pour que le manager saute directement au verbatim

Format de sortie

  • Digest Slack (défaut) : résumé Markdown condensé pour le channel que votre équipe regarde
  • Archive Notion : crée une page datée dans une base « Rapports win/loss » pour un historique de tendances cherchable
  • Export slides : génère un deck pour une QBR ou un board à partir des mêmes données
  • Export BI : pousse les raisons et tags structurés dans votre data warehouse pour de l'analyse de cohorte long terme

Langue

Fonctionne dans n'importe quelle langue. Précisez-le dans votre prompt : « Génère le rapport en français » ou « Suis la langue de l'enregistrement ».

❓ Besoin d'aide pour customiser ?

Contactez-nous à support@claap.io.

Exemple de résultat

Win/Loss Analyzer, Exemple de résultat
Installer dans Claude Code

Deux commandes : ajouter la marketplace, puis installer le plugin.

/plugin marketplace add clementsprs/claap-skills
/plugin install claap@claap-skills
Partager
Tous les agents