Contact Hunter
Stage G — Golden Rules Gate (run BEFORE any search)
Disqualify any contact or company matching these criteria before spending enrichment credits:
- Customers:
lifecyclestage = customerORdevice_count >= 1→ EXCLUDE - Channel Partners:
is_channel = true→ EXCLUDE - AE-Owned (Active):
hubspot_owner_idIN[82625923, 423155215, 190030668]AND last activity < 90 days → EXCLUDE - Geo Gate: Non-USA/Canada contacts → EXCLUDE (unless explicitly requested)
If the target company is already a customer, stop and notify Tim. Do not enrich.
Stage 1: Search HubSpot First
MCP Tool: mcp__claude_ai_Epiphan_Ai__hubspot_search_contacts
Search by: company name OR person name OR email domain
Filter: USA/Canada only, NOT lifecyclestage=customer, NOT is_channel=true
Return: contactId, firstName, lastName, email, phone, jobtitle, hubspot_owner_id,
lifecyclestage, device_count, bdr_suppression_until, last_activity_date
If contact found in HubSpot → jump to Stage 3 (ATL/BTL classification). If not found → continue to Stage 2.
Stage 2: Apollo Enrichment Waterfall
MCP Tool: mcp__claude_ai_Apollo_io__apollo_contacts_search
Search by: person_title OR organization_name
Filters: country IN [US, CA], seniority IN [director, vp, c_suite, owner]
Limit: 10 results
If Apollo has email but no phone → run Clay enrichment:
MCP Tool: mcp__claude_ai_Clay__find-and-enrich-contacts-at-company
company: [company name]
title_keywords: [from search parameters]
enrich_phone: true
Stage 3: ATL/BTL Classification
Assign tier using CLAUDE.md ATL/BTL keyword rules:
- ATL: Chief, VP, President, Director, Dean, Superintendent, Provost → prioritize
- NEVER ATL: AV Technician, Network Manager, Systems Administrator → skip
- GRAY: Manager + reports to Director + budget >$25K → surface for manual review
Stage 4: Suppression Check
Before including any contact in output:
- Check
bdr_suppression_untilproperty - EXCLUDE if
bdr_suppression_untilIS SET AND > TODAY - INCLUDE if property IS NOT SET or date < TODAY
Stage 5: Output Contact Cards
For each contact that passed Stages G–4, output:
┌─────────────────────────────────────────────────────┐
│ JOHN SMITH [ATL — VP] │
│ VP of Engineering @ Acme Corp │
├─────────────────────────────────────────────────────┤
│ Email: john.smith@acme.com (Apollo, verified) │
│ Phone: +1 (415) 555-0123 (Clay waterfall) │
│ LinkedIn: linkedin.com/in/johnsmith │
│ Location: San Francisco, CA │
├─────────────────────────────────────────────────────┤
│ HubSpot: https://app.hubspot.com/contacts/21530819/│
│ record/0-1/{contactId} │
│ Owner: Unowned (eligible for BDR outreach) │
│ Suppressed: No │
└─────────────────────────────────────────────────────┘
Bulk output (CSV format for sequence-load):
First,Last,Title,Company,Email,Phone,LinkedIn,ATL_Tier,HubSpot_ID
John,Smith,VP Engineering,Acme Corp,john.smith@acme.com,+14155550123,linkedin.com/in/johnsmith,ATL,{id}
Summary line after each hunt:
Found: [N] contacts | [A] ATL | [G] Gray | [B] BTL | [X] excluded by Golden Rules | [S] suppressed
Compliance: All data sourced from HubSpot (existing CRM records), Apollo (public professional data), or Clay (verified enrichment). No scraping. Follow CAN-SPAM for outreach. 3. Use title filter: "VP of Engineering" 4. Location: "San Francisco Bay Area"
Google:
- "John Smith" "VP of Engineering" "Acme Corp"
- "John Smith" "Acme Corp" email
- site:linkedin.com/in "John Smith" "Acme"
- site:acme.com "John Smith"
Company Website:
- Check: https://acme.com/about
- Check: https://acme.com/team
- Check: https://acme.com/leadership
- Check: https://acme.com/contact
Email Pattern Guessing: Common patterns at acme.com: • john.smith@acme.com • john@acme.com • jsmith@acme.com • j.smith@acme.com • smithj@acme.com
GitHub (for technical roles): • Search: "John Smith Acme" • Look for company in bio
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📝 DATA COLLECTION TEMPLATE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Once you find the information, fill this template:
Full Name: [First Last] Job Title: [Exact title] Company: [Company name] Email: [email@domain.com] Phone: [(xxx) xxx-xxxx] LinkedIn: [linkedin.com/in/username] Location: [City, State/Country] Department: [Engineering, Sales, etc.]
Additional Info: • Reports to: [Manager name] • Team size: [Number] • Start date: [When they joined] • Previous companies: [List] • Education: [Degree, School]
Data Sources: • [LinkedIn profile URL] • [Company website URL] • [Other sources]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ VERIFICATION STEPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Cross-reference multiple sources
- Check LinkedIn profile matches company
- Verify email format matches company pattern
- Validate phone number format
- Confirm job title is current
- Check for recent company changes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⚠️ COMPLIANCE & ETHICS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• Only use publicly available information • Respect privacy and GDPR regulations • Don't scrape private databases • Honor do-not-contact preferences • Use for legitimate business purposes only • Keep CAN-SPAM compliance for cold outreach
5. **Organize Results**:
**Individual Contact Card**:
┌─────────────────────────────────────────┐ │ JOHN SMITH │ │ VP of Engineering @ Acme Corp │ ├─────────────────────────────────────────┤ │ 📧 john.smith@acme.com │ │ 📱 (415) 555-0123 │ │ 💼 linkedin.com/in/johnsmith │ │ 📍 San Francisco, CA │ ├─────────────────────────────────────────┤ │ Department: Engineering │ │ Reports to: Sarah Chen (CTO) │ │ Team size: ~45 engineers │ │ Tenure: 2+ years at Acme │ ├─────────────────────────────────────────┤ │ 🔍 Sources: │ │ • LinkedIn (verified) │ │ • Company website │ │ • Verified: 2024-01-15 │ └─────────────────────────────────────────┘
**Bulk Results** (CSV/Excel format):
```csv
Name,Title,Company,Email,Phone,LinkedIn,Location,Source,Verified
John Smith,VP Engineering,Acme Corp,john.smith@acme.com,(415) 555-0123,linkedin.com/in/johnsmith,San Francisco,LinkedIn,2024-01-15
Jane Doe,Director Marketing,Acme Corp,jane.doe@acme.com,(415) 555-0124,linkedin.com/in/janedoe,San Francisco,Company Website,2024-01-15
Email Pattern Detection:
When searching company contacts, detect email patterns:
🔍 DETECTED EMAIL PATTERN: Acme Corp Confirmed Emails Found: • john.smith@acme.com • sarah.chen@acme.com • michael.jones@acme.com Detected Pattern: firstname.lastname@acme.com Confidence: 95% Alternative Patterns (if primary fails): • firstname@acme.com • firstnamelastname@acme.com • f.lastname@acme.com To Verify Unknown Email: 1. Use email verification tool 2. Check for bounce/invalid 3. Look for SMTP response 4. Verify on LinkedInData Enrichment:
For existing contacts, enrich with:
- Current job title
- Company changes
- Updated contact info
- Social profiles
- Company information
- Reporting structure
- Recent activity/posts
Export Formats:
- CSV: For CRM import
- JSON: For API integration
- vCard: For contact managers
- Salesforce CSV: Pre-formatted for SFDC
- HubSpot CSV: Pre-formatted for HubSpot
Search Strategies
For Company Employees:
site:linkedin.com/in "[Company Name]"
OR
site:[company-domain.com] "team" OR "about" OR "leadership"
For Specific Roles:
"[Job Title]" "[Company]" email
OR
"[Job Title]" site:linkedin.com "[Company]"
For Email Validation:
- Check company website for email format
- Use email verification services
- Look for pattern in existing emails
- Test with email finder tools
For Phone Numbers:
- Company website contact page
- LinkedIn profile (sometimes public)
- Professional directories
- Industry associations
Example Triggers
- "Find the VP of Sales at Acme Corp"
- "Get contact info for John Smith at Microsoft"
- "Find engineering managers at Stripe"
- "Enrich this list of contacts with emails"
- "What's the email pattern at Google?"
- "Find the marketing team at HubSpot"
Compliance Guidelines
What's Allowed:
- Publicly available information
- Business contact information
- LinkedIn public profiles
- Company websites
- Professional directories
- Published contact lists
What's NOT Allowed:
- Scraping private databases
- Purchasing questionable contact lists
- Bypassing email verification
- Ignoring opt-out requests
- Violating GDPR/CCPA
- Harassing contacts
Best Practices:
- Always cite data sources
- Respect privacy preferences
- Use for legitimate business purposes
- Keep data up to date
- Provide opt-out mechanisms
- Follow CAN-SPAM for outreach
- Comply with data protection laws
Output Quality
Ensure contact information:
- Includes all available fields
- Cites data sources
- Has confidence/verification level
- Follows data privacy laws
- Is formatted consistently
- Includes contact preferences
- Notes data freshness
- Provides context (tenure, role, team)
- Flags any uncertainties
- Suggests verification steps
Provide structured, ethically-sourced contact information with full transparency.
Emit Outcome Sidecar
As the final step, write to ~/.claude/skill-analytics/last-outcome-contact-hunter.json:
{"ts":"[UTC ISO8601]","skill":"contact-hunter","version":"1.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"contacts_searched":[n],"contacts_found":[n],"phones_found":[n],"emails_found":[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.