Batch mode:
"build cadence for these 5 companies: [list]" → runs pipeline for each → presents batch draft → loads approved contacts
Trigger phrases:
- "research prospect [company/domain]"
- "build cadence for [company]"
- "outreach for [company]"
- "research-to-cadence [company]"
- "enrich and sequence [list]"
- "new prospect batch"
Pipeline Stages
INPUT RESEARCH DRAFT APPROVE LOAD
─────────────────────────────────────────────────────────────────────────────────────────────────────
Company/Domain → Apollo Org Enrich → Email Sequences → Tim Reviews → Apollo Sequence
→ Apollo People Search → Call Scripts → Approves/Edits → Contact Create
→ Epiphan CRM Check → ICP Score → → Add to Cadence
→ Web Research → Pain Hypothesis → →
Stage 1: Research (Tools Used)
1a. Company Intelligence
Use these MCP tools in parallel:
| Tool |
Purpose |
Key Data |
apollo_organizations_enrich |
Firmographics |
Industry, size, revenue, tech stack |
apollo_organizations_job_postings |
Hiring signals |
AV/IT roles = buying signal |
hubspot_search_companies |
Existing relationship check |
Deals, lifecycle stage |
crm_search_customers |
Epiphan CRM customer match |
Device count, orders, channel flag |
analytics_search_by_email |
Device registration lookup |
Registered devices by contact email |
| Web search |
Recent news |
Funding, expansion, leadership changes |
1a-bis. Clay Enrichment (Waterfall)
For companies/contacts where Apollo data is incomplete (missing phone, tech stack, or funding data):
| Tool |
Purpose |
Key Data |
find-and-enrich-contacts-at-company (Clay) |
Deep contact enrichment |
Phone waterfall, social profiles, employment history |
add-contact-data-points (Clay) |
Append missing data points |
Phone verification, org chart depth |
find-and-enrich-company (Clay) |
Company intelligence |
Technographics, hiring signals, funding |
Clay acts as a waterfall fallback — it aggregates 50+ data providers. Use it when Apollo returns incomplete results, especially for phone numbers.
1b. Golden Rules Filter
STOP and skip if ANY of these are true:
lifecyclestage = 'customer' in HubSpot
first_conversion contains 'Pearl', 'setup', 'Connect', 'signup'
- Company
device_count >= 1 in Epiphan CRM
engagement_overview contains product usage
is_channel = true
hubspot_owner_id IN ('82625923', '423155215', '190030668') — AEs: Lex Evans, Ron Epstein, Phillip Sandler
→ 90-Day Stale Exception: If hs_lastmodifieddate > 90 days ago → SURFACE as STALE AE LEAD with ATL/BTL tier + deal value. Tim reviews to re-engage, push to demo, or help close.
→ Ron Epstein: all leads. Lex & Phil: NA only. <90 days → still exclude.
OPERATING PRINCIPLE: Tim is NET-NEW first, but can re-engage STALE AE leads (90+ days inactive) to recover pipeline value.
Stage S — Suppression Gate
Before including any contact in outreach or dial output:
- EXCLUDE if
bdr_suppression_until IS SET AND bdr_suppression_until > TODAY
- INCLUDE if
bdr_suppression_until IS NOT SET (never suppressed)
- INCLUDE if
bdr_suppression_until < TODAY (cooling period expired)
HubSpot filter: propertyName: "bdr_suppression_until", operator: "NOT_HAS_PROPERTY" OR operator: "LT", value: TODAY_ISO
Reference: lead-suppression-spec (bdr_suppressed, bdr_suppression_reason, bdr_suppression_until)
1c. Contact Discovery
Use apollo_mixed_people_api_search with filters:
- Titles (ATL-only): VP, Director, Dean, CIO, CTO, CFO, Provost, Superintendent, Court Administrator, City Manager, Senior Pastor
- Gray Zone Titles (flag for review): Manager (AV/Facilities/IT) — include ONLY if Apollo confirms reports to Director+ AND has delegated budget >$25K
- Exclude (NEVER ATL): Warehouse Manager, Network Manager, Systems Administrator, AV Technician, Graphic Design Instructor, Program Administrator, Web Designer, Classroom Support, Lab Coordinator, Maintenance, Building Engineer, Multimedia Services Manager, Video Production Specialist, Streaming Crew
- Seniority: director, vp, c_suite
- Departments: IT, engineering, operations, education
- Limit: 3-5 contacts per company
For each contact, run apollo_people_match to get verified email + phone.
ATL/BTL Classification (applied to each discovered contact)
Classify each contact using approved title patterns (CLAUDE.md § ATL/BTL Classification v1.0):
- ATL: Chief, VP, Director, Dean, Provost, Superintendent, Court Administrator, City Manager, Senior Pastor, Executive Pastor
- BTL: Technician, Specialist, Coordinator, Support, Administrator (Systems/Network/Database), Engineer (AV/Network/Systems), Operator, Instructor/Professor/Faculty, Designer, Assistant, Clerk (non-Court Admin), Volunteer, Intern, Student, Resident, Help Desk
- NEVER ATL: Warehouse Manager, Network Manager, Systems Administrator, AV Technician, Graphic Design Instructor, Program Administrator, Web Designer, Classroom Support, Lab Coordinator, Maintenance, Building Engineer, Multimedia Services Manager, Video Production Specialist, Streaming Crew
- GRAY: Manager (AV/Facilities/IT) — ATL only if reports to Director+ AND has delegated budget >$25K. Flag for Tim's manual review before sequence load
Tag each contact: atl_btl_tier = 'ATL' | 'BTL' | 'GRAY'
Only ATL contacts are auto-approved for sequence loading. GRAY contacts require Tim's explicit approval. BTL contacts are deprioritized (included in batch but called last).
For contacts where apollo_people_match returns no phone number, fall back to Clay's find-and-enrich-contacts-at-company for phone waterfall.
Phone Verification Priority
ALWAYS attempt phone verification. Tim needs 50+ daily dials. Every contact loaded into a sequence MUST have a verified phone number. Priority order: Apollo phone → Clay waterfall → skip if no phone found (flag for manual research).
1d. ICP Scoring
Score the prospect using Tim's ICP verticals:
| Vertical |
Score |
| Higher Ed |
90 |
| Courts/Legal |
85 |
| Government |
80 |
| Corporate AV |
80 |
| Healthcare |
75 |
| Houses of Worship |
70 |
| K-12 |
65 |
Boost +5 for: hiring AV roles, recent facility expansion, CMS mentioned in tech stack
Boost +10 for: Extron/Matrox replacement signal (competitors exited market)
Stage 2: Draft Outreach
Email Sequence (3-touch)
Load reference/email-templates.md for templates. Customize with:
- Touch 1 (Day 0): Pain-forward, reference specific news/signal, single CTA (15-min call)
- Touch 2 (Day 3): Value prop with peer social proof (similar vertical), ask different question
- Touch 3 (Day 7): Breakup email with resource offer (case study or guide)
Rules:
- Under 100 words per email
- No "I hope this finds you well"
- Lead with THEIR problem, not Epiphan features
- Reference a specific trigger (job posting, news, tech stack gap)
- CTA = specific time ask ("15 minutes this Thursday?")
Call Script
Generate MEDDIC-structured call script:
OPENER (15 sec): Reference email + trigger signal
PAIN PROBE (60 sec): "What's your current setup for [use case]?"
METRICS: "How are you measuring [quality/uptime/cost]?"
ECONOMIC BUYER: "Who else would need to sign off?"
DECISION CRITERIA: "What would you evaluate?"
CHAMPION TEST: "If this made sense, would you be open to a quick demo?"
Deliverable Format
Present draft as structured output:
═══════════════════════════════════════════
PROSPECT RESEARCH: [Company Name]
ICP Score: [XX/100] | Vertical: [vertical]
═══════════════════════════════════════════
COMPANY INTEL:
- Industry: [...]
- Size: [...] employees | Revenue: [...]
- Tech stack: [...]
- Trigger signal: [...]
- Epiphan angle: [...]
CONTACTS (ready for sequence):
┌──────────────────────────────────────────┐
│ 1. [Name] — [Title] [ATL/GRAY/BTL] │
│ Email: [...] | Phone: [...] │
│ LinkedIn: [...] │
│ Personalization hook: [...] │
└──────────────────────────────────────────┘
EMAIL SEQUENCE:
Touch 1: [subject] → [body]
Touch 2: [subject] → [body]
Touch 3: [subject] → [body]
CALL SCRIPT:
[MEDDIC-structured script]
═══════════════════════════════════════════
APPROVE? (y/edit/skip)
═══════════════════════════════════════════
Stage 3: Approve
- Present draft to Tim using AskUserQuestion tool
- Options: "Approve & Load", "Edit first", "Skip this prospect"
- If edit: Tim provides changes, re-draft, re-present
Stage 4: Load to Apollo Sequence
On approval:
Create contacts in Apollo via apollo_contacts_create:
- first_name, last_name, email, organization_name, title
Find target sequence via apollo_emailer_campaigns_search:
- Search by sequence name Tim specifies (or default active sequence)
Add to sequence via apollo_emailer_campaigns_add_contact_ids:
- Pass contact IDs + sequence ID
- Confirm enrollment count
Optional: Create Gmail draft via gmail_create_draft:
- For high-ICP prospects (score 80+), also create a direct Gmail draft
Sibling Skills Referenced
sales-revenue-skill — Email templates, lead scoring tiers, MEDDIC framework
hubspot-revops-skill — Golden Rules filter logic, HubSpot query patterns
research-skill — Competitive intelligence, firmographic research patterns
CLAUDE.md § ATL/BTL Classification v1.0 — Approved title keyword patterns for ATL/BTL/Gray classification (2026-03-17)
Emit Outcome Sidecar
As the final step, write to ~/.claude/skill-analytics/last-outcome-prospect-research-to-cadence.json:
{"ts":"[UTC ISO8601]","skill":"prospect-research-to-cadence","version":"1.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"prospects_researched":[n],"emails_drafted":[n],"sequences_loaded":[n],"atl_count":[n],"icp_avg_score":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}
Use status "partial" if some stages failed but results were produced. Use "error" only if no output was generated.
1---2name: prospect-research-to-cadence3description: End-to-end prospect research pipeline: Apollo enrichment → personalized email + call scripts → draft review → Apollo sequence load. Eliminates manual research bottleneck. Use when: 'research prospect', 'prospect [company]', 'build cadence for', 'outreach for [company]', 'research-to-cadence', 'enrich and sequence', 'new prospect batch'.4---5
6<objective>
7Automate the full prospect research → outreach pipeline. Takes a company name, domain, or contact and produces enriched firmographics, personalized multi-touch email sequences, call scripts with MEDDIC hooks, and optionally loads contacts into Apollo sequences — all in one workflow. Draft + approve mode: research and drafts are generated, then paused for Tim's approval before loading sequences.
8</objective>
9
10<quick_start>
11**Single prospect:**
12"research prospect Baylor University" → enriches org + decision-makers → drafts personalized outreach → presents for approval → loads to Apollo sequence
13
14**Batch mode:**
15"build cadence for these 5 companies: [list]" → runs pipeline for each → presents batch draft → loads approved contacts
16
17**Trigger phrases:**
18- "research prospect [company/domain]"
19- "build cadence for [company]"
20- "outreach for [company]"
21- "research-to-cadence [company]"
22- "enrich and sequence [list]"
23- "new prospect batch"
24</quick_start>
25
26<success_criteria>
27- Company enriched with firmographics, tech stack, news, and Epiphan use case angle
28- 3-5 ATL decision-maker contacts identified per approved title patterns (VP/Director/Dean/Chief/Provost = economic buyers; Managers flagged as GRAY for manual review)
29- Personalized 3-touch email sequence drafted per contact
30- Call script with MEDDIC discovery hooks generated
31- Draft presented for Tim's approval BEFORE any sequence loading
32- On approval: contacts created in Apollo + added to specified sequence
33- Golden Rules exclusions enforced (no customers, no channel, no product-usage contacts)
34</success_criteria>
35
36<workflow>
37
38## Pipeline Stages
39
40```
41INPUT RESEARCH DRAFT APPROVE LOAD
42─────────────────────────────────────────────────────────────────────────────────────────────────────
43Company/Domain → Apollo Org Enrich → Email Sequences → Tim Reviews → Apollo Sequence
44 → Apollo People Search → Call Scripts → Approves/Edits → Contact Create
45 → Epiphan CRM Check → ICP Score → → Add to Cadence
46 → Web Research → Pain Hypothesis → →
47```
48
49## Stage 1: Research (Tools Used)
50
51### 1a. Company Intelligence
52Use these MCP tools in parallel:
53
54| Tool | Purpose | Key Data |
55|------|---------|----------|
56| `apollo_organizations_enrich` | Firmographics | Industry, size, revenue, tech stack |
57| `apollo_organizations_job_postings` | Hiring signals | AV/IT roles = buying signal |
58| `hubspot_search_companies` | Existing relationship check | Deals, lifecycle stage |
59| `crm_search_customers` | Epiphan CRM customer match | Device count, orders, channel flag |
60| `analytics_search_by_email` | Device registration lookup | Registered devices by contact email |
61| Web search | Recent news | Funding, expansion, leadership changes |
62
63### 1a-bis. Clay Enrichment (Waterfall)
64For companies/contacts where Apollo data is incomplete (missing phone, tech stack, or funding data):
65
66| Tool | Purpose | Key Data |
67|------|---------|----------|
68| `find-and-enrich-contacts-at-company` (Clay) | Deep contact enrichment | Phone waterfall, social profiles, employment history |
69| `add-contact-data-points` (Clay) | Append missing data points | Phone verification, org chart depth |
70| `find-and-enrich-company` (Clay) | Company intelligence | Technographics, hiring signals, funding |
71
72Clay acts as a **waterfall fallback** — it aggregates 50+ data providers. Use it when Apollo returns incomplete results, especially for phone numbers.
73
74### 1b. Golden Rules Filter
75**STOP and skip if ANY of these are true:**
76- `lifecyclestage = 'customer'` in HubSpot
77- `first_conversion` contains 'Pearl', 'setup', 'Connect', 'signup'
78- Company `device_count >= 1` in Epiphan CRM
79- `engagement_overview` contains product usage
80- `is_channel = true`
81- `hubspot_owner_id` IN ('82625923', '423155215', '190030668') — AEs: Lex Evans, Ron Epstein, Phillip Sandler
82 → **90-Day Stale Exception:** If `hs_lastmodifieddate` > 90 days ago → SURFACE as `STALE AE LEAD` with ATL/BTL tier + deal value. Tim reviews to re-engage, push to demo, or help close.
83 → Ron Epstein: all leads. Lex & Phil: NA only. <90 days → still exclude.
84
85**OPERATING PRINCIPLE:** Tim is NET-NEW first, but can re-engage STALE AE leads (90+ days inactive) to recover pipeline value.
86
87### Stage S — Suppression Gate
88
89Before including any contact in outreach or dial output:
90- **EXCLUDE** if `bdr_suppression_until` IS SET AND `bdr_suppression_until` > TODAY
91- **INCLUDE** if `bdr_suppression_until` IS NOT SET (never suppressed)
92- **INCLUDE** if `bdr_suppression_until` < TODAY (cooling period expired)
93
94HubSpot filter: `propertyName: "bdr_suppression_until", operator: "NOT_HAS_PROPERTY"` OR `operator: "LT", value: TODAY_ISO`
95Reference: `lead-suppression-spec` (bdr_suppressed, bdr_suppression_reason, bdr_suppression_until)
96
97---
98
99### 1c. Contact Discovery
100Use `apollo_mixed_people_api_search` with filters:
101- **Titles (ATL-only):** VP, Director, Dean, CIO, CTO, CFO, Provost, Superintendent, Court Administrator, City Manager, Senior Pastor
102- **Gray Zone Titles (flag for review):** Manager (AV/Facilities/IT) — include ONLY if Apollo confirms reports to Director+ AND has delegated budget >$25K
103- **Exclude (NEVER ATL):** Warehouse Manager, Network Manager, Systems Administrator, AV Technician, Graphic Design Instructor, Program Administrator, Web Designer, Classroom Support, Lab Coordinator, Maintenance, Building Engineer, Multimedia Services Manager, Video Production Specialist, Streaming Crew
104- **Seniority:** director, vp, c_suite
105- **Departments:** IT, engineering, operations, education
106- **Limit:** 3-5 contacts per company
107
108For each contact, run `apollo_people_match` to get verified email + phone.
109
110### ATL/BTL Classification (applied to each discovered contact)
111Classify each contact using approved title patterns (CLAUDE.md § ATL/BTL Classification v1.0):
112- **ATL:** Chief, VP, Director, Dean, Provost, Superintendent, Court Administrator, City Manager, Senior Pastor, Executive Pastor
113- **BTL:** Technician, Specialist, Coordinator, Support, Administrator (Systems/Network/Database), Engineer (AV/Network/Systems), Operator, Instructor/Professor/Faculty, Designer, Assistant, Clerk (non-Court Admin), Volunteer, Intern, Student, Resident, Help Desk
114- **NEVER ATL:** Warehouse Manager, Network Manager, Systems Administrator, AV Technician, Graphic Design Instructor, Program Administrator, Web Designer, Classroom Support, Lab Coordinator, Maintenance, Building Engineer, Multimedia Services Manager, Video Production Specialist, Streaming Crew
115- **GRAY:** Manager (AV/Facilities/IT) — ATL only if reports to Director+ AND has delegated budget >$25K. Flag for Tim's manual review before sequence load
116
117Tag each contact: `atl_btl_tier = 'ATL' | 'BTL' | 'GRAY'`
118Only ATL contacts are auto-approved for sequence loading. GRAY contacts require Tim's explicit approval. BTL contacts are deprioritized (included in batch but called last).
119
120For contacts where `apollo_people_match` returns no phone number, fall back to Clay's `find-and-enrich-contacts-at-company` for phone waterfall.
121
122### Phone Verification Priority
123**ALWAYS attempt phone verification.** Tim needs 50+ daily dials. Every contact loaded into a sequence MUST have a verified phone number. Priority order: Apollo phone → Clay waterfall → skip if no phone found (flag for manual research).
124
125### 1d. ICP Scoring
126Score the prospect using Tim's ICP verticals:
127
128| Vertical | Score |
129|----------|-------|
130| Higher Ed | 90 |
131| Courts/Legal | 85 |
132| Government | 80 |
133| Corporate AV | 80 |
134| Healthcare | 75 |
135| Houses of Worship | 70 |
136| K-12 | 65 |
137
138Boost +5 for: hiring AV roles, recent facility expansion, CMS mentioned in tech stack
139Boost +10 for: Extron/Matrox replacement signal (competitors exited market)
140
141## Stage 2: Draft Outreach
142
143### Email Sequence (3-touch)
144Load `reference/email-templates.md` for templates. Customize with:
145- **Touch 1 (Day 0):** Pain-forward, reference specific news/signal, single CTA (15-min call)
146- **Touch 2 (Day 3):** Value prop with peer social proof (similar vertical), ask different question
147- **Touch 3 (Day 7):** Breakup email with resource offer (case study or guide)
148
149Rules:
150- Under 100 words per email
151- No "I hope this finds you well"
152- Lead with THEIR problem, not Epiphan features
153- Reference a specific trigger (job posting, news, tech stack gap)
154- CTA = specific time ask ("15 minutes this Thursday?")
155
156### Call Script
157Generate MEDDIC-structured call script:
158```
159OPENER (15 sec): Reference email + trigger signal
160PAIN PROBE (60 sec): "What's your current setup for [use case]?"
161METRICS: "How are you measuring [quality/uptime/cost]?"
162ECONOMIC BUYER: "Who else would need to sign off?"
163DECISION CRITERIA: "What would you evaluate?"
164CHAMPION TEST: "If this made sense, would you be open to a quick demo?"
165```
166
167### Deliverable Format
168Present draft as structured output:
169
170```
171═══════════════════════════════════════════
172PROSPECT RESEARCH: [Company Name]
173ICP Score: [XX/100] | Vertical: [vertical]
174═══════════════════════════════════════════
175
176COMPANY INTEL:
177- Industry: [...]
178- Size: [...] employees | Revenue: [...]
179- Tech stack: [...]
180- Trigger signal: [...]
181- Epiphan angle: [...]
182
183CONTACTS (ready for sequence):
184┌──────────────────────────────────────────┐
185│ 1. [Name] — [Title] [ATL/GRAY/BTL] │
186│ Email: [...] | Phone: [...] │
187│ LinkedIn: [...] │
188│ Personalization hook: [...] │
189└──────────────────────────────────────────┘
190
191EMAIL SEQUENCE:
192Touch 1: [subject] → [body]
193Touch 2: [subject] → [body]
194Touch 3: [subject] → [body]
195
196CALL SCRIPT:
197[MEDDIC-structured script]
198
199═══════════════════════════════════════════
200APPROVE? (y/edit/skip)
201═══════════════════════════════════════════
202```
203
204## Stage 3: Approve
205- Present draft to Tim using AskUserQuestion tool
206- Options: "Approve & Load", "Edit first", "Skip this prospect"
207- If edit: Tim provides changes, re-draft, re-present
208
209## Stage 4: Load to Apollo Sequence
210On approval:
211
2121. **Create contacts** in Apollo via `apollo_contacts_create`:
213 - first_name, last_name, email, organization_name, title
214
2152. **Find target sequence** via `apollo_emailer_campaigns_search`:
216 - Search by sequence name Tim specifies (or default active sequence)
217
2183. **Add to sequence** via `apollo_emailer_campaigns_add_contact_ids`:
219 - Pass contact IDs + sequence ID
220 - Confirm enrollment count
221
2224. **Optional: Create Gmail draft** via `gmail_create_draft`:
223 - For high-ICP prospects (score 80+), also create a direct Gmail draft
224
225</workflow>
226
227<dependencies>
228## Required MCP Tools
229- **Apollo MCP:** organizations_enrich, organizations_job_postings, mixed_people_api_search, people_match, contacts_create, emailer_campaigns_search, emailer_campaigns_add_contact_ids, email_accounts_index (resolve `send_email_from_email_account_id` when loading contacts into sequences)
230- **Clay MCP:** find-and-enrich-contacts-at-company, find-and-enrich-company, add-contact-data-points (waterfall enrichment fallback for phone numbers and deep firmographics)
231- **Epiphan CRM MCP:** crm_search_customers, analytics_search_by_email, hubspot_search_companies, hubspot_search_contacts
232- **Gmail MCP:** gmail_create_draft (for high-ICP direct outreach)
233- **Web Search:** For news, trigger signals
234
235## Sibling Skills Referenced
236- `sales-revenue-skill` — Email templates, lead scoring tiers, MEDDIC framework
237- `hubspot-revops-skill` — Golden Rules filter logic, HubSpot query patterns
238- `research-skill` — Competitive intelligence, firmographic research patterns
239- `CLAUDE.md § ATL/BTL Classification v1.0` — Approved title keyword patterns for ATL/BTL/Gray classification (2026-03-17)
240</dependencies>
241
242## Emit Outcome Sidecar
243
244As the final step, write to `~/.claude/skill-analytics/last-outcome-prospect-research-to-cadence.json`:
245```json
246{"ts":"[UTC ISO8601]","skill":"prospect-research-to-cadence","version":"1.0.0","variant":"default",
247 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
248 "metrics":{"prospects_researched":[n],"emails_drafted":[n],"sequences_loaded":[n],"atl_count":[n],"icp_avg_score":[n]},
249 "error":null,"session_id":"[YYYY-MM-DD]"}
250```
251Use status "partial" if some stages failed but results were produced. Use "error" only if no output was generated.