
Deal Reengagement
- 2 installs
- 7 repo stars
- Updated April 12, 2026
- extruct-ai/gtm-cowork-skills
Re-engages a stale deal or cold contact by reading Attio, Gmail, and Granola context, suggesting reactivation angles, and drafting a re-engagement email.
About
Gathers full deal and contact context from CRM, email, and meeting notes, proposes 2-3 reactivation angles, then drafts a re-engagement email. A salesperson uses it to revive a cold deal or win back a lapsed contact.
- Resolves person and deal records and calculates how stale the deal is
- Suggests angles before drafting the re-engagement email
Deal Reengagement by the numbers
- 2 all-time installs (skills.sh)
- Ranked #730 of 853 Sales & Marketing skills by installs in the Skillselion catalog
- Data as of Jul 13, 2026 (Skillselion catalog sync)
npx skills add https://github.com/extruct-ai/gtm-cowork-skills --skill deal-reengagementAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 7 |
| Last updated | April 12, 2026 |
| Repository | extruct-ai/gtm-cowork-skills ↗ |
What it does
Re-engages a stale deal or cold contact by reading Attio, Gmail, and Granola context, suggesting reactivation angles, and drafting a re-engagement email.
Files
Re-engage Stale Deal
Help write a re-engagement email for a stale deal or cold contact. First gather all context, then suggest angles, then draft.
Inputs
The user provides one or more of:
- A contact name, email, or company name
- A deal name or Attio deal ID
- Specific context on why they want to re-engage
If not provided, ask for the contact or deal reference.
Workflow
Step 1: Build full context
1a. Attio — Person + Deal records
Resolve the contact in Attio:
- Use
search-recordswithobject = "people"and the contact's name or email as query.
From the person record, extract:
- Name, job title, company
- Origin, registration date
- Subscription status, plan, LTV (if any)
- Last interaction date
- Associated deal IDs
For each associated deal:
- Use
get-records-by-idswithobject = "deals"and the deal record IDs. - Extract: deal name, stage, value, created date, last activity
- Calculate how long the deal has been stale
Check pending tasks:
- Use
list-taskswithis_completed = false. - Filter for tasks linked to this person or their deals
1b. Gmail — Full email history
1. Call gmail_search_messages with: from:{contact_email} OR to:{contact_email} Limit to 20 messages to get the full arc.
2. Call gmail_read_thread on the 2-3 most substantive threads.
Extract:
- The full relationship timeline (first contact → last contact)
- What was proposed or discussed
- Any pricing, offers, or commitments made
- Where the conversation dropped off and why (if apparent)
- The tone and style of the relationship
1c. Granola — Past meetings
1. Call query_granola_meetings with "meetings with {contact_name}" 2. If found, call get_meetings for full details 3. If transcript needed, call get_meeting_transcript
Extract:
- What was discussed in meetings
- Action items that were or weren't completed
- Pain points the contact expressed
- Objections or hesitations raised
Step 2: Diagnose the stall
Before drafting, analyze why the deal went cold. Common patterns:
- Timing: they weren't ready, budget cycle, other priorities
- Fit: product didn't match their immediate needs
- Champion left: the contact changed roles or companies
- Dropped ball: follow-up was missed on our side
- Price: proposal was too high or unclear value
- Competitor: they went with someone else
State the diagnosis explicitly to the user.
Step 3: Suggest 2-3 re-engagement angles
Based on the context, propose 2-3 distinct angles. Each angle should include:
- Hook: what makes this relevant now (new feature, time passed, market change)
- Value prop: why it's worth reconnecting
- Ask: specific low-friction CTA
Example angle types:
- Value-first: share something useful (insight, data, resource) without asking for anything
- Trigger-based: reference a change (new role, funding, product update, industry shift)
- Direct check-in: honest, low-pressure "how are things going"
- New offer: revised pricing, new capability, different packaging
- Social proof: similar company succeeded with your product
Present angles to the user and let them pick one (or combine).
Step 4: Draft the re-engagement email
Based on the chosen angle:
Structure: 1. Opening — personal, reference something specific from history (1 sentence) 2. Bridge — why you're reaching out now (1-2 sentences) 3. Value — what's new or different (1-2 sentences) 4. Ask — specific, low-friction CTA (1 sentence)
Tone rules:
- Match the existing relationship tone from email history
- Never apologize for the gap ("sorry for the silence")
- Never guilt trip ("I haven't heard back")
- Confident but not pushy
- Reference specific things from your history, not generic filler
Constraints:
- Under 150 words (shorter than a regular follow-up — stale deals need brevity)
- No emojis unless the contact uses them
- Subject line should NOT be a reply to the old thread (fresh start)
Step 5: Save artifacts locally
After gathering context, persist to revops/customers/{company-slug}/:
1. Read first: Check for existing context.md and past meeting notes — use as input. 2. Save meeting notes: If Granola data was fetched, persist to meetings/YYYY-MM-DD_{title-slug}.md. 3. Save key emails: If the email thread contains commercial significance (proposals, pricing), snapshot to emails/YYYY-MM-DD_{subject-slug}.md. 4. Update context.md: Update deal history and current status.
Granola data can be deleted — the local copy is the source of truth. See revops/customers/README.md for templates and naming rules.
Step 6: Present and act
Show the draft with:
- To: address
- Subject: line (new thread, not a reply)
- Body
- Angle used: which re-engagement angle was chosen
- Context: brief note on sources used
Ask the user if they want to: 1. Edit the draft 2. Try a different angle 3. Create a Gmail draft via gmail_create_draft
Attio MCP Tool Reference
Use these MCP tools (NOT raw API calls):
| Task | Tool | Key parameters |
|---|---|---|
| Search people or companies | search-records | object, query |
| Get specific records | get-records-by-ids | object, record_ids |
| Get pending tasks | list-tasks | is_completed=false |
Environment
| Variable | Source | Purpose |
|---|---|---|
| Attio | MCP (Attio connector) | CRM — people, deals, tasks |
| Gmail | MCP (claude.ai Gmail) | Email history and drafting |
| Granola | MCP (Granola) | Meeting notes and transcripts |
Reference
- CRM enrichment context:
revops/CRM_ENRICHMENT.md - Customer artifacts:
revops/customers/(see README.md for structure and templates)