Pipeline Review
Surface deal risks as they emerge — before a winnable deal silently becomes a lost one.
Risk Categories
1. Engagement Risk (Stakeholder Silence)
Signals that key contacts have gone quiet:
| Signal |
How to detect |
Severity |
| No email in 14+ days |
Gmail: search for threads with associated contacts, check last message date |
HIGH if deal is In Progress/POC |
| No email in 7-13 days |
Same as above |
MEDIUM |
| No meeting in 21+ days |
Granola: list_meetings + query_granola_meetings for company name |
HIGH if In Progress |
| No upcoming meeting scheduled |
Google Calendar: gcal_list_events searching for company/contact name |
MEDIUM |
| One-sided communication |
Gmail: check if last 2+ emails are outbound with no reply |
HIGH |
2. Momentum Risk (Deal Velocity)
Signals that the deal is losing speed:
| Signal |
How to detect |
Severity |
| Stuck in stage 30+ days |
Attio: compare created_at or stage change date vs today |
HIGH |
| Stuck in stage 14-29 days |
Same |
MEDIUM |
| No deal value set |
Attio: value field is empty |
MEDIUM if past Lead stage |
| No associated people |
Attio: associated_people is empty |
HIGH |
| Next steps overdue |
Attio: check tasks linked to deal with past deadlines |
HIGH |
3. Competitive Risk
Signals that competition threatens the deal:
| Signal |
How to detect |
Severity |
| Competitor mentioned |
Attio: meddpicc_competition field contains named competitors |
MEDIUM |
| Build vs buy tension |
Attio: meddpicc_competition mentions internal build |
HIGH |
| "Do nothing" risk flagged |
Attio: meddpicc_competition mentions "do nothing" |
HIGH |
| Competition score 0 |
Attio: meddpicc_competition starts with "0/4" — unknown landscape |
MEDIUM (blind spot) |
4. Qualification Risk (MEDDPICC Gaps)
Signals that the deal is under-qualified for its stage:
| Stage |
Expected strong (3-4) |
Gap = risk if below 2 |
| POC |
Pain, Metrics, Decision Criteria |
Any of these below 2 = HIGH |
| In Progress |
Pain, Metrics, Criteria, Competition |
Any below 2 = HIGH |
| Signal |
How to detect |
Severity |
| MEDDPICC score = 0 |
Attio: meddpicc_score is 0 or empty |
CRITICAL — deal is unqualified |
| MEDDPICC score < 40 |
Attio: meddpicc_score < 40 |
HIGH |
| Key dimension at 0 for stage |
Parse score from meddpicc_metrics, meddpicc_decision_criteria, meddpicc_competition |
HIGH |
| No budget discussed |
Attio: meddpicc_budget_total is empty AND stage is In Progress |
MEDIUM |
5. Data Risk
Signals that you're flying blind:
| Signal |
How to detect |
Severity |
| No Granola meetings found |
Granola returns empty for company name |
MEDIUM |
| No Attio notes on deal |
semantic-search-notes returns empty |
MEDIUM |
| No Gmail threads |
Gmail search returns empty |
HIGH — no communication trail |
| All three empty |
Combined |
CRITICAL — ghost deal |
Workflow
Step 1: Identify Target Deals
If the user specifies deals, use those. Otherwise:
- Call
list-records with object: "deals" and filter for active stages (POC, In Progress).
- Collect all deal record IDs, names, stages, and associated contacts.
Step 2: Gather Signals (Per Deal)
For each deal, run these checks in parallel where possible:
2a. Attio Deal Data
get-records-by-ids to pull full deal record (MEDDPICC fields, value, stage, confidence, associated people/company, created_at)
list-tasks filtered to the deal to check for overdue tasks
list-comments on the deal for recent activity
2b. Email Activity
gmail_search_messages with the company name or associated contact emails
- Check the date of the most recent message
- Check if the last 2+ messages are outbound-only (no reply)
2c. Meeting Activity
query_granola_meetings with company name to find recent meetings
gcal_list_events searching for company/contact name to check for upcoming meetings
Step 3: Score Risks
For each deal, evaluate all risk categories and assign:
- CRITICAL — Immediate action needed. Deal is at serious risk of being lost.
- HIGH — Action needed this week. Multiple warning signs.
- MEDIUM — Monitor closely. Early warning signs present.
- LOW — On track. No significant risks detected.
Overall deal risk = highest individual risk found.
Count the number of HIGH+ signals to determine urgency ranking across deals.
Step 4: Generate Risk Report
Present a prioritized report, sorted by risk level (CRITICAL first):
## Pipeline Risk Report — {date}
### CRITICAL: {Deal Name}
**Stage:** {stage} | **Value:** {value} | **MEDDPICC:** {score}/100
**Days in stage:** {N}
Risk signals:
- {signal 1 with evidence}
- {signal 2 with evidence}
Recommended actions:
1. {specific action with timeline}
2. {specific action}
---
### HIGH: {Deal Name}
...
Step 5: Offer Actions
After presenting the report, offer:
- Re-engage a specific deal (hand off to
deal-reengagement skill)
- Score a call for a deal that needs MEDDPICC update (hand off to
meddpicc-post-call skill)
- Prep for a meeting with an at-risk account (hand off to
meeting-prep skill)
- Draft a follow-up email to break silence (hand off to
meeting-followup skill)
- Create tasks in Attio for the recommended actions
Attio MCP Tool Reference
| Task |
Tool |
Key parameters |
| List active deals |
list-records |
object: "deals", filter by stage |
| Get deal details |
get-records-by-ids |
object: "deals", record_ids |
| Check MEDDPICC fields |
Already in deal record |
Parse from attributes |
| List deal tasks |
list-tasks |
filter by linked deal |
| List deal comments |
list-comments |
parent_object: "deals", parent_record_id |
| Search notes |
semantic-search-notes |
query with company name |
Gmail MCP Tool Reference
| Task |
Tool |
| Search for threads |
gmail_search_messages (query with company/contact) |
| Read thread content |
gmail_read_thread (thread_id) |
Granola MCP Tool Reference
| Task |
Tool |
| Find meetings |
query_granola_meetings (query with company name) |
| List recent meetings |
list_meetings |
Google Calendar MCP Tool Reference
| Task |
Tool |
| Check upcoming meetings |
gcal_list_events (search for company/contact) |
Environment
| Variable |
Source |
Purpose |
| Attio |
MCP (Attio connector) |
CRM — deals, MEDDPICC, tasks, notes |
| Granola |
MCP (Granola connector) |
Meeting history |
| Gmail |
MCP (Gmail connector) |
Email engagement signals |
| Google Calendar |
MCP (Google Calendar connector) |
Upcoming meeting check |
1---2name: pipeline-review3description: Early warning system for active deals. Surfaces risks before they become lost deals: stakeholder silence, stalled next steps, competitor threats, deal velocity drops, MEDDPICC qualification gaps. Pulls signals from Attio, Gmail, Granola, and Google Calendar to produce a prioritized risk report with recommended actions. MANDATORY TRIGGERS: Use this skill whenever the user mentions "pipeline review", "deal risk", "deal health", "pipeline risk", "stale deals", "what's at risk", "deal warnings", "pipeline health check", "which deals need attention", "risk report", "deal alerts", or asks about deals that might be slipping, going dark, or losing momentum.4---56# Pipeline Review78Surface deal risks as they emerge — before a winnable deal silently becomes a lost one.910## Risk Categories1112### 1. Engagement Risk (Stakeholder Silence)1314Signals that key contacts have gone quiet:1516| Signal | How to detect | Severity |17|--------|--------------|----------|18| No email in 14+ days | Gmail: search for threads with associated contacts, check last message date | HIGH if deal is In Progress/POC |19| No email in 7-13 days | Same as above | MEDIUM |20| No meeting in 21+ days | Granola: `list_meetings` + `query_granola_meetings` for company name | HIGH if In Progress |21| No upcoming meeting scheduled | Google Calendar: `gcal_list_events` searching for company/contact name | MEDIUM |22| One-sided communication | Gmail: check if last 2+ emails are outbound with no reply | HIGH |2324### 2. Momentum Risk (Deal Velocity)2526Signals that the deal is losing speed:2728| Signal | How to detect | Severity |29|--------|--------------|----------|30| Stuck in stage 30+ days | Attio: compare `created_at` or stage change date vs today | HIGH |31| Stuck in stage 14-29 days | Same | MEDIUM |32| No deal value set | Attio: `value` field is empty | MEDIUM if past Lead stage |33| No associated people | Attio: `associated_people` is empty | HIGH |34| Next steps overdue | Attio: check tasks linked to deal with past deadlines | HIGH |3536### 3. Competitive Risk3738Signals that competition threatens the deal:3940| Signal | How to detect | Severity |41|--------|--------------|----------|42| Competitor mentioned | Attio: `meddpicc_competition` field contains named competitors | MEDIUM |43| Build vs buy tension | Attio: `meddpicc_competition` mentions internal build | HIGH |44| "Do nothing" risk flagged | Attio: `meddpicc_competition` mentions "do nothing" | HIGH |45| Competition score 0 | Attio: `meddpicc_competition` starts with "0/4" — unknown landscape | MEDIUM (blind spot) |4647### 4. Qualification Risk (MEDDPICC Gaps)4849Signals that the deal is under-qualified for its stage:5051| Stage | Expected strong (3-4) | Gap = risk if below 2 |52|-------|-----------------------|----------------------|53| POC | Pain, Metrics, Decision Criteria | Any of these below 2 = HIGH |54| In Progress | Pain, Metrics, Criteria, Competition | Any below 2 = HIGH |5556| Signal | How to detect | Severity |57|--------|--------------|----------|58| MEDDPICC score = 0 | Attio: `meddpicc_score` is 0 or empty | CRITICAL — deal is unqualified |59| MEDDPICC score < 40 | Attio: `meddpicc_score` < 40 | HIGH |60| Key dimension at 0 for stage | Parse score from `meddpicc_metrics`, `meddpicc_decision_criteria`, `meddpicc_competition` | HIGH |61| No budget discussed | Attio: `meddpicc_budget_total` is empty AND stage is In Progress | MEDIUM |6263### 5. Data Risk6465Signals that you're flying blind:6667| Signal | How to detect | Severity |68|--------|--------------|----------|69| No Granola meetings found | Granola returns empty for company name | MEDIUM |70| No Attio notes on deal | `semantic-search-notes` returns empty | MEDIUM |71| No Gmail threads | Gmail search returns empty | HIGH — no communication trail |72| All three empty | Combined | CRITICAL — ghost deal |7374## Workflow7576### Step 1: Identify Target Deals7778If the user specifies deals, use those. Otherwise:79801. Call `list-records` with `object: "deals"` and filter for active stages (POC, In Progress).812. Collect all deal record IDs, names, stages, and associated contacts.8283### Step 2: Gather Signals (Per Deal)8485For each deal, run these checks in parallel where possible:8687#### 2a. Attio Deal Data88- `get-records-by-ids` to pull full deal record (MEDDPICC fields, value, stage, confidence, associated people/company, created_at)89- `list-tasks` filtered to the deal to check for overdue tasks90- `list-comments` on the deal for recent activity9192#### 2b. Email Activity93- `gmail_search_messages` with the company name or associated contact emails94- Check the date of the most recent message95- Check if the last 2+ messages are outbound-only (no reply)9697#### 2c. Meeting Activity98- `query_granola_meetings` with company name to find recent meetings99- `gcal_list_events` searching for company/contact name to check for upcoming meetings100101### Step 3: Score Risks102103For each deal, evaluate all risk categories and assign:104105- **CRITICAL** — Immediate action needed. Deal is at serious risk of being lost.106- **HIGH** — Action needed this week. Multiple warning signs.107- **MEDIUM** — Monitor closely. Early warning signs present.108- **LOW** — On track. No significant risks detected.109110Overall deal risk = highest individual risk found.111112Count the number of HIGH+ signals to determine urgency ranking across deals.113114### Step 4: Generate Risk Report115116Present a prioritized report, sorted by risk level (CRITICAL first):117118```119## Pipeline Risk Report — {date}120121### CRITICAL: {Deal Name}122**Stage:** {stage} | **Value:** {value} | **MEDDPICC:** {score}/100123**Days in stage:** {N}124125Risk signals:126- {signal 1 with evidence}127- {signal 2 with evidence}128129Recommended actions:1301. {specific action with timeline}1312. {specific action}132133---134135### HIGH: {Deal Name}136...137```138139### Step 5: Offer Actions140141After presenting the report, offer:1421431. **Re-engage** a specific deal (hand off to `deal-reengagement` skill)1442. **Score a call** for a deal that needs MEDDPICC update (hand off to `meddpicc-post-call` skill)1453. **Prep for a meeting** with an at-risk account (hand off to `meeting-prep` skill)1464. **Draft a follow-up** email to break silence (hand off to `meeting-followup` skill)1475. **Create tasks** in Attio for the recommended actions148149## Attio MCP Tool Reference150151| Task | Tool | Key parameters |152|------|------|---------------|153| List active deals | `list-records` | `object: "deals"`, filter by stage |154| Get deal details | `get-records-by-ids` | `object: "deals"`, record_ids |155| Check MEDDPICC fields | Already in deal record | Parse from attributes |156| List deal tasks | `list-tasks` | filter by linked deal |157| List deal comments | `list-comments` | `parent_object: "deals"`, parent_record_id |158| Search notes | `semantic-search-notes` | query with company name |159160## Gmail MCP Tool Reference161162| Task | Tool |163|------|------|164| Search for threads | `gmail_search_messages` (query with company/contact) |165| Read thread content | `gmail_read_thread` (thread_id) |166167## Granola MCP Tool Reference168169| Task | Tool |170|------|------|171| Find meetings | `query_granola_meetings` (query with company name) |172| List recent meetings | `list_meetings` |173174## Google Calendar MCP Tool Reference175176| Task | Tool |177|------|------|178| Check upcoming meetings | `gcal_list_events` (search for company/contact) |179180## Environment181182| Variable | Source | Purpose |183|----------|--------|---------|184| Attio | MCP (Attio connector) | CRM — deals, MEDDPICC, tasks, notes |185| Granola | MCP (Granola connector) | Meeting history |186| Gmail | MCP (Gmail connector) | Email engagement signals |187| Google Calendar | MCP (Google Calendar connector) | Upcoming meeting check |