Closed-lost deal revival: rank last year's lost deals by what changed since

This recipe uses the official Salesforce, PredictLeads and G2 MCP servers, and all of them work in Claude and ChatGPT. Every step only reads data.

IntermediateAEsSDRs

Who is this for?

AEs and SDRs who want a short, ranked list of deals lost 6 to 12 months ago that are worth another try, with the original loss reason and the new trigger side by side. Salesforce can be swapped for HubSpot, Attio or Pipedrive, and PredictLeads for UserGems.

What do you get?

Ranked revival list, 12 lost deals checked. Sample output: every company and person in it is fictional.

Closed-lost opportunities, close date 6 to 12 months ago: 12. Dropped before checking signals: 2 (loss reason 'Company closed' and 'Acquired, product retired').

| Rank | Account | Lost | Original loss reason | New since the loss | Owner check |
|---|---|---|---|---|---|
| 1 | Quarry Lane Analytics (fictional) | Feb 2026 | No budget this year | Series C announced Aug 2026 (PredictLeads financing). G2 intent on our category in the last 30 days | No open opportunity. Last activity 7 months ago |
| 2 | Larkspur Freightworks (fictional) | Dec 2025 | Champion left mid-deal | News: new VP Revenue Operations hired Jul 2026 | No open opportunity |
| 3 | Mossgate Labs (fictional) | Nov 2025 | Chose a competitor | G2 intent: viewed our product and a competitor's page this month | No open opportunity |
| – | Fernhill Software (fictional) | Jan 2026 | No budget | Funding round dated Dec 2025, before the loss | Not new. Skipped |
| – | Tidewell Robotics (fictional) | Mar 2026 | Timing | G2 intent this month | Open opportunity owned by Priya Raman. Skipped |

No new trigger found for 5 accounts. They stay off the list.

Why Quarry Lane is first: the deal died on budget, and new funding is the most direct answer to that. Sam Whitlock was the contact on the lost deal.

Nothing was written to Salesforce. This is a read-only list.

How long does it take, and what does it cost?

Estimate About 20–30 minutes a month, most of it reading the ranked table.

Assumptions: One monthly run over about 12 closed-lost opportunities, with 10 checked for signals after the dead-end loss reasons are dropped.

Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.

Which MCP servers does it use?

Every server is confirmed in: ClaudeChatGPT

How do I set it up in a chat app?

Every server in this recipe is confirmed for Claude and ChatGPT. Connect each one, then paste the prompts below into one conversation.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • Salesforce: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • PredictLeads: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • G2: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.

Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.

{
  "mcpServers": {
    "salesforce": {
      "url": "https://api.salesforce.com/platform/mcp/v1/platform/sobject-all"
    },
    "predictleads": {
      "url": "None"
    },
    "g2": {
      "url": "https://mcp.g2.com/mcp"
    }
  }
}

Step-by-step prompts

  1. In Salesforce, check the Opportunity schema and tell me which field holds the loss reason. Then find my closed-lost opportunities with a close date between {start_date} and {end_date}: account, account website, amount, close date, loss reason and primary contact. Show me the distinct loss reasons and how many deals have each. Don't change any records.
  2. Drop the deals with these loss reasons: {dead_reasons}. For each remaining account, check Salesforce for any open opportunity or activity in the last {days} days, and list the owner. Mark those accounts as skipped.
  3. For the accounts that are left, look up PredictLeads financing and news by the account's website domain. Keep only events dated after that deal's close date. Flag any funding, and any news about a new executive in {buyer_roles}.
  4. Check G2 buyer intent for my product and category over the last {intent_days} days, and match the accounts by domain. Then give me one ranked table: account, close date, original loss reason, new trigger with its date, and one line on why the trigger answers the loss reason. Put skipped accounts at the bottom with the reason.

Can I run it on a schedule? (optional)

Where does this go wrong?

Gotchas

Download

Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.

Download closed-lost-revival.md