Revive stalled and lost B2B deals worth reopening: reconstruct the real loss reason, score revival worthiness with hard gates, track champions who changed companies, time re-entry by loss reason and trigger, and send one-change re-entry messages that restart the conversation. Use when working closed-lost lists, dormant opportunities, former champions at new companies, or competitor losses nearing renewal. For a deal that is still open and slipping, use deal_risk_review instead.
name: deal_revival_playbook description: "Revive stalled and lost B2B deals worth reopening: reconstruct the real loss reason, score revival worthiness with hard gates, track champions who changed companies, time re-entry by loss reason and trigger, and send one-change re-entry messages that restart the conversation. Use when working closed-lost lists, dormant opportunities, former champions at new companies, or competitor losses nearing renewal. For a deal that is still open and slipping, use deal_risk_review instead."
Deal Revival Playbook
Purpose
Most lost deals were not lost forever. They were lost to a budget freeze, a shelved project, a champion who could not carry the room, or no decision at all. Those conditions change. Budgets reset, projects restart, people move, competitor contracts come up for renewal, and the buyer who chose someone else learns what that choice is worth in daily use. Forrester reported in The State Of Business Buying, 2024 that 86 percent of B2B purchases stall during the buying process and 81 percent of buyers are dissatisfied with the provider they chose, which is why a closed file is a starting point, not a verdict.
This skill runs the revival as a system, not a burst of nostalgia emails. It answers four questions, in order:
- Why did this deal really die?
- Is it worth reopening, scored against gates, not hope?
- When does re-entry make sense, and what trigger sets the date?
- What one message, built on one real change, restarts it?
Scope boundary: this skill starts after a deal is closed lost or has gone dormant past its cycle. A deal that is still open and slipping belongs to deal_risk_review. A pipeline-wide pattern of stalls belongs to sales_pipeline_leak_diagnosis. Customer win-back for people who already bought and left belongs to churn and retention work, not here. This skill is tool-neutral: every step runs from a CRM export and an inbox, whatever the CRM is.
Workflow
1. Pull the pool and close the data gaps first
Build the working list from the CRM:
- Closed lost or dormant deals from the last 18 months, or two full sales cycles, whichever is longer
- No open opportunity at the same account
- Loss reason, close date, amount, and every contact on the deal, tagged by role where the record allows it
Then fix the records that cannot support a decision:
- Loss reasons must come from a short dropdown set: timing, budget, no decision, chose competitor, price or value, missing feature or fit, champion left, went dark. Free-text reasons cannot be filtered or timed, so recode them from the deal notes as you work the list.
- Where the reason is blank or says "other", reconstruct it in step 2 before the deal is scored. An unscored guess is worse than a marked unknown.
- Flag any contact who opted out or asked not to be contacted. That flag travels with the deal into scoring, where it is a hard gate.
2. Reconstruct the real loss reason
The CRM reason is what was easiest to record, and it is often wrong. Price is the classic stand-in for a value case that never landed, a champion who lost the room, or a buyer who did not believe the implementation story.
Rebuild the reason from the deal's own record:
- Find the turning point: the call or email where engagement changed. Fewer stakeholders replying, shorter answers, a new person asking a hard question, a date that slipped with no reason given.
- Read what the buyer said at and just before that point. Hesitations, unresolved concerns, and mentions of other priorities or other people are where the real reason sits.
- Check what the seller did with that concern: answered it with evidence, answered it with reassurance, or moved past it.
- Record a primary reason and any contributing causes, each with the moment or message that supports it. Keep this separate from the original CRM field. The gap between the two is coaching data.
One distinction decides the whole revival: was this a "no" or a "not now"? A genuine timing loss, where the buyer's own priorities or budget moved, is the strongest revival candidate there is. A fit loss, where the product could not do the job, is revived only by the gap actually closing.
If the buyer is willing, a short learning conversation soon after the loss is the cleanest source of the real reason. Ask what decided it, what the chosen path does better, and whether the door is open later. No pitch in that conversation, ever. Its value is the answer, and buyers can tell when the ask was a trojan horse.
3. Score revival worthiness, gates first
Score every remaining deal with the scorer so a monthly pass stays consistent from rep to rep and month to month:
bash
python3 ~/workspace/skills/deal-revival-playbook/bin/score_revival.py scores.json
Five criteria, 0 to 2 each, defined in full in the scorer:
- Fit still valid: the account still matches the buyer profile and the problem still plausibly exists
- Reason changeability: the loss reason is the kind that changes on its own (timing, budget, no decision), changes on a specific event (competitor renewal, missing feature ships), or is structural
- Trigger strength: a dated trigger is live now, a soft window is approaching, or there is nothing but the calendar
- What has changed: one concrete change that answers the loss reason, a minor update, or nothing new to say
- Relationship: a named contact who engaged is still reachable, the contact left but a second thread exists, or the single thread is gone
Verdicts:
- REVIVE_NOW, 8 to 10: write this cycle, on the live trigger, with the matched message from step 5
- NURTURE, 5 to 7: no outreach beyond useful touches until the dated trigger or window arrives, then re-score
- PARK, 3 to 4: record the trigger that would reopen it and a review date. No message now
- KILL, 0 to 2: close the revival file with the reason recorded. Killing a deal cleanly is a result, not a failure
Gates override points, and the scorer enforces them:
- An opted-out or do-not-contact contact is KILL at any score
- Fit of 0 is KILL at any score
- A structural loss reason caps the verdict at PARK
- A total high enough for REVIVE_NOW still drops to NURTURE when there is no live trigger or nothing new to say. A revival needs both a reason to write now and something true to write about
4. Set the re-entry date from the reason and the trigger
Do not work the list in one blast. Each surviving deal gets one owner, one next date, and the trigger that set it, written in the CRM the same day it is scored.
Timing rules by loss reason, trigger list, and the full tracking procedure are in references/timing-and-triggers.md. The short version:
- A buyer-given revisit date or condition outranks every default. Work back 2 weeks and check the condition actually happened
- Budget losses land 4 to 6 weeks before the account's budget lock, not after it
- Competitor losses get one check-in after implementation has had time to land, and one window 60 to 90 days before renewal. Never both in one quarter
- Missing-feature losses revive only when the gap shipped and a customer is using it. A roadmap date is not a trigger
- No-decision losses need a trigger or new proof that prices the cost of standing still in the buyer's own numbers. The calendar alone never reopens them
- Your quarter end is never a trigger
5. Track champions who changed companies
Run this check monthly, alongside the revival pass. Procedure in full in references/timing-and-triggers.md.
- Tag contacts by role on the day a deal closes: champion, economic buyer, user, blocker. Untagged contacts cannot be tracked later
- Each month, check tagged contacts from closed-lost deals, and closed-won accounts too, for company or title changes, and verify a move from two signals before acting on it
- A champion who moved to a company that fits is the warmest revival play there is, and it is a new deal at a new account, not a reopened one. First touch is congratulations only, inside 2 weeks. The working touch comes at 30 to 60 days, once they know the place
- A champion who left the original account also revives the original deal's risk: the replacement is a new thread to open early, and the parked deal gets re-scored against them
- A move to a company that does not fit still earns the congratulations. Mark the record alumni and review it twice a year. People move again
6. Send one message built on one change
Pick the message pattern that matches the loss reason from references/revival-messages.md. Seven worked messages are there: the stated date arrived, the blocker shipped, the competitor check-in, the champion who moved, the new leader at the account, the no-decision revisit, and the clean close.
Every revival message has the same four parts:
- The past, named honestly, in one line, in the buyer's terms
- One thing that changed, tied to the loss reason or the trigger. One, not a product update list
- One small ask: a short check on whether the problem is still live, permission to send one page, a name of the new owner
- A clean exit line that makes no a safe and easy answer
Run at most three touches in a revival sequence, spaced by the timing rules. Then park it with a date or kill it with a reason. The clean close message earns a surprising share of the honest replies in this work: a real date, a new owner, or a real no. All three move the list forward.
When a deal re-engages:
- Create a new opportunity, linked to the original. Closed deals stay closed, so the new cycle and its win rate are measured honestly and the original loss stays intact for analysis
- Start it at discovery, whatever stage the old deal reached. People, budget, and priorities have changed since
- Flag it as revived, with the original close date, loss reason, and trigger type, so revived pipeline is reported separately from fresh pipeline
7. Run the pass monthly and report it plainly
One pass per month over new losses, the parked list hitting its review dates, and the alumni check. A full worked pass, with scores, verdicts, and the report block, is in references/worked-example.md.
Report, every pass:
- Pool reviewed, scored, and killed before scoring, with reasons
- Verdict counts: revive now, nurture, park, kill
- Alumni moves found and how each was routed
- New opportunities created from revival, flagged as revived
- Clean no answers closed out, counted as progress
Judge the program on meetings earned and revived win rate against fresh win rate, tracked separately. A revival program that reports only emails sent is measuring its own noise.
Output Contract
Every revival pass produces one document or CRM update set with these sections:
- Pool summary: how many deals were reviewed, from what window, and how many were excluded or killed before scoring, with reasons
- Reconstructed reasons: for each scored deal, the recorded reason, the reconstructed reason if it differs, and the evidence for the change
- Scores and verdicts: scorer output per deal, verdict, owner, next date, and the trigger that set the date
- Alumni moves: each confirmed move, old and new company and title, fit check, and the routing decision
- Messages sent: which pattern, to whom, the one change it was built on, and the ask it made
- New opportunities: each one created, linked to its original deal, flagged revived, started at discovery
- Park and kill list: every parked deal with its reopening trigger and review date, every killed deal with its reason
Operating Rules
- Evidence beats the CRM dropdown. Score the reconstructed reason, and keep the evidence line with the score.
- Gates are gates. No score, relationship, or deal size overrides an opt-out, a do-not-contact, or a fit of zero.
- Never invent the change. If the feature has not shipped, the price has not changed, or the proof does not exist, the message does not go out. A revival built on a false trigger spends the account's trust in one send.
- Closed stays closed. Revival creates a new opportunity linked to the old one. Reopening the original corrupts the loss data every future pass depends on.
- One deal, one change, one ask, three touches at most. After that, park it with a trigger or kill it with a reason.
- Never run down the competitor they chose, and never pitch inside a learning conversation or a congratulations message. Each of those is a separate trust, and spending it on a pitch ends all three.
- Verify a job change twice before congratulating anyone on it. A wrong move acted on confidently does more damage than a month of silence.
- Record every verdict the day it is made. A revival list that lives in a spreadsheet nobody updates decays back into the stale pool it was built to fix.
No ratings yet — be the first to rate it.