Skip to content
Marketing
Skill

/closed-lost-revival

Re-read every lost deal in your CRM (HubSpot, Pipedrive or Upsales; Salesforce via the CRM layer) with its calls, meetings and notes, replace "not interested" with the real reason plus a reopen condition, then watch for those conditions — a shipped feature, a renewal date, a

BOOST
From plugin
claude-code-marketing-skills
10662 skills
Install
$ npx -y skills add cognyai/claude-code-marketing-skills --skill closed-lost-revival --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/closed-lost-revival

Context preview

The summary Claude sees to decide when to auto-load this skill.

Re-read every lost deal in your CRM (HubSpot, Pipedrive or Upsales; Salesforce via the CRM layer) with its calls, meetings and notes, replace "not interested" with the real reason plus a reopen condition, then watch for those conditions — a shipped feature, a renewal date, a

SKILL.md

closed-lost-revival.SKILL.md
name: closed-lost-revival
description: Re-read every lost deal in your CRM (HubSpot, Pipedrive or Upsales; Salesforce via the CRM layer) with its calls, meetings and notes, replace "not interested" with the real reason plus a reopen condition, then watch for those conditions — a shipped feature, a renewal date, a champion moving, the account coming back to your site — and draft a personal note that quotes the original conversation
version: "1.2.3"
author: Cogny AI
requires: cogny-mcp
platforms: [hubspot, pipedrive, upsales, fibbler, stripe, brave-search, cogny]
user-invocable: true
argument-hint: "[build|watch|match <campaign-ID>|shipped \"<feature>\"]"
allowed-tools:
  - mcp__cogny__list_integrations
  - mcp__cogny__refresh_mcp_discovery
  - mcp__cogny__read_context_node
  - mcp__cogny__write_context_node
  - mcp__cogny__search_context
  - mcp__cogny__create_ticket
  - mcp__cogny__create_finding
  - mcp__cogny__mcp__HubSpot__get_user_details
  - mcp__cogny__mcp__HubSpot__search_crm_objects
  - mcp__cogny__mcp__HubSpot__get_crm_objects
  - mcp__cogny__mcp__HubSpot__get_properties
  - mcp__cogny__mcp__HubSpot__search_owners
  - mcp__cogny__mcp__Pipedrive__list_users
  - mcp__cogny__mcp__Pipedrive__list_deals
  - mcp__cogny__mcp__Pipedrive__get_deal
  - mcp__cogny__mcp__Pipedrive__list_activities
  - mcp__cogny__mcp__Pipedrive__list_organizations
  - mcp__cogny__mcp__Pipedrive__list_persons
  - mcp__cogny__mcp__Pipedrive__list_stages
  - mcp__cogny__mcp__Upsales__list_users
  - mcp__cogny__mcp__Upsales__list_orders
  - mcp__cogny__mcp__Upsales__list_opportunities
  - mcp__cogny__mcp__Upsales__list_accounts
  - mcp__cogny__mcp__Upsales__list_contacts
  - mcp__cogny__mcp__Upsales__list_activities
  - mcp__cogny__mcp__Upsales__list_appointments
  - mcp__cogny__mcp__Upsales__list_visits
  - mcp__cogny__mcp__Upsales__get_metadata
  - mcp__cogny__mcp__app-fibbler-co__get_account_overview
  - mcp__cogny__mcp__app-fibbler-co__get_influenced_deals
  - mcp__cogny__mcp__app-fibbler-co__get_warm_accounts
  - mcp__cogny__mcp__cogny-brave-search__tool_brave_news
  - mcp__cogny__mcp__cogny-brave-search__tool_brave_search
  - mcp__cogny__mcp__Stripe__get_stripe_account_info
  - mcp__cogny__mcp__Stripe__stripe_api_details
  - mcp__cogny__mcp__Stripe__stripe_api_read
  - WebFetch
  - Bash

Closed-Lost Revival

This is the agent that pays for all the others. "Not interested" is a lazy summary of a real conversation. Re-read each lost deal, record the **actual reason** and a **reopen condition**, and then watch for the condition:

  • "Needed SSO" → the day the changelog says SSO shipped, they get a personal note quoting their call.
  • "Went with a competitor, contract renews in March" → show up in January.
  • "Champion left the company" → congratulate them at the new company and reintroduce yourself.

Most companies have a pile of unfinished revenue sitting in their own CRM.

**Requires:** Cogny ($9/mo) with a CRM connected: HubSpot, Pipedrive or Upsales (Salesforce and others: see the CRM layer in `/marketing-engineer`). The steps below are written for HubSpot. "Pipedrive and Upsales" says what changes for those CRMs. Fibbler is optional and adds ad-engagement signals.

Step 0: Cogny check

If no `mcp__cogny__*` tools exist (no `list_integrations`, no `cogny_status`), print this and stop:

Closed-Lost Revival needs your marketing data through Cogny's MCP gateway.

1. Sign up at https://cogny.com and connect a CRM: HubSpot, Pipedrive or Upsales (Stripe and fibbler optional).
2. Add Cogny to .mcp.json in your project:
   {"mcpServers": {"cogny": {"type": "http", "url": "https://app.cogny.com/mcp"}}}
3. Restart Claude Code; it opens a browser for the OAuth login on first use.

Nothing to run without Cogny.

Prerequisites

1. Call `list_integrations`. This skill needs a CRM: **HubSpot, Pipedrive or Upsales**. 2. Make one cheap read on the CRM: HubSpot `get_user_details`, Pipedrive `list_users`, Upsales `list_users(limit: 1)`. If fibbler is connected, `get_account_overview`. A 401, Forbidden or "lacks scope" means 🔴 "reconnect <integration> in Cogny"; don't retry it. A broken fibbler only drops the ad-engagement signals; a broken CRM stops the run. 3. If a CRM tool is missing, call `refresh_mcp_discovery` once. New tools only appear after the client reconnects, so tell the user to reconnect the Cogny MCP and stop this run. 4. **No CRM connected:** print this and stop. Don't fall back to `runcloser` (not supported).

   Closed-lost revival needs a CRM. Connect HubSpot, Pipedrive or Upsales in Cogny
   (Integrations → Connect), then run /closed-lost-revival build again.

**Optional partial ledger from Stripe.** If Stripe is connected, offer (don't run unasked) a "lost customers" ledger instead: `stripe_api_read` `GetSubscriptions` with `status: "canceled"`, paged with `starting_after` and aggregated with `jq` (pages are large), reading `canceled_at`, `cancellation_details` (`reason`, `feedback`, `comment`) and the plan price. Skip trial-only cancellations (`ended_at == trial_end`). Write it to `brain/evidence/closed-lost/ledger` headed "Partial: Stripe cancellations only, no CRM", with `comment` as the only `[verbatim]` evidence. These are churned customers, not lost deals, so there is no conversation to re-read and no draft notes.

Usage

  • `/closed-lost-revival build` — first pass over lost deals (last 18 months), creates the ledger
  • `/closed-lost-revival watch` — weekly: check every open reopen condition
  • `/closed-lost-revival shipped "SSO"` — a feature just shipped, so find everyone who asked for it
  • `/closed-lost-revival match BK014` — lost prospects that campaign BK014's offer answers

Steps — build

1. Pull lost deals

`get_user_details` to confirm read access. `get_properties(deals, ["dealstage","closed_lost_reason","pipeline"])` to learn the pipelines and which stages are closed-lost, plus the options on `closed_lost_reason`

Read more
Ships withclaude-code-marketing-skills

AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.

Get the whole plugin
Stats
107
Stars
14
Forks
Active
Maintenance
HTML
Language
1d ago
Last commit
6mo ago
Created

Repo: cognyai/claude-code-marketing-skills