
Pipeline Review
- 2 installs
- 7 repo stars
- Updated April 12, 2026
- extruct-ai/gtm-cowork-skills
Scans active sales deals for risk signals across Attio, Gmail, Granola, and Google Calendar and outputs a prioritized deal-risk report with recommended actions.
About
Surfaces at-risk deals by detecting stakeholder silence, stalled next steps, and velocity drops from Attio, Gmail, Granola, and Calendar signals. A sales rep uses it to run a pipeline health check and get a ranked risk report before winnable deals go dark.
- Detects engagement, momentum, and MEDDPICC qualification-gap risks
- Pulls signals from Attio, Gmail, Granola, and Google Calendar
Pipeline Review 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 pipeline-reviewAdd 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
Scans active sales deals for risk signals across Attio, Gmail, Granola, and Google Calendar and outputs a prioritized deal-risk report with recommended actions.
Files
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:
1. Call list-records with object: "deals" and filter for active stages (POC, In Progress). 2. 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-idsto pull full deal record (MEDDPICC fields, value, stage, confidence, associated people/company, created_at)list-tasksfiltered to the deal to check for overdue taskslist-commentson the deal for recent activity
2b. Email Activity
gmail_search_messageswith 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_meetingswith company name to find recent meetingsgcal_list_eventssearching 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:
1. Re-engage a specific deal (hand off to deal-reengagement skill) 2. Score a call for a deal that needs MEDDPICC update (hand off to meddpicc-post-call skill) 3. Prep for a meeting with an at-risk account (hand off to meeting-prep skill) 4. Draft a follow-up email to break silence (hand off to meeting-followup skill) 5. 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 |