revops
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
Find 5-10 key decision makers per company with verified emails using Parallel, Apollo, and MillionVerifier APIs
Full skill instructions
Use this skill when: user asks to "enrich leads", "find decision makers", "get contacts for companies", "find emails", or any request to turn a company list into actionable contacts.
This skill takes a list of companies and finds key decision makers with:
Uses a 3-stage pipeline:
Before running enrichment, verify these keys exist:
| Key | Service | Get it at |
|---|---|---|
PARALLEL_API_KEY | Parallel (contact discovery) | platform.parallel.ai |
APOLLO_API_KEY | Apollo (email enrichment) | app.apollo.io |
MILLIONVERIFIER_API_KEY | MillionVerifier (verification) | app.millionverifier.com |
If keys are missing:
.env fileFind 5-10 decision makers per company from public sources.
For each company, call Parallel Task API with:
Extract from results:
Executive level:
VP level:
Director level:
Manager level:
from parallel_web import Parallel
client = Parallel(api_key=os.getenv("PARALLEL_API_KEY"))
result = client.task.create(
prompt=f"""Find up to 5 key decision makers at {company_name}.
Website: {website}
For each person, extract:
- Full name
- Job title
- Work email (if available)
- LinkedIn URL
Target titles: {target_titles}
""",
processor="base" # or "core", "pro"
)
{
"company": "Example Corp",
"contacts": [
{
"name": "John Smith",
"title": "VP Supply Chain",
"email": "[email protected]",
"linkedin": "linkedin.com/in/johnsmith"
}
]
}
Find emails for contacts that Parallel didn't return emails for.
Filter contacts where email is null/empty
For each contact, call Apollo People Match:
Apollo returns:
import requests
def apollo_enrich(first_name, last_name, domain):
url = "https://api.apollo.io/v1/people/match"
headers = {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"X-Api-Key": os.getenv("APOLLO_API_KEY")
}
data = {
"first_name": first_name,
"last_name": last_name,
"domain": domain
}
response = requests.post(url, headers=headers, json=data)
return response.json()
Verify all discovered emails before outreach.
import requests
def verify_email(email):
url = f"https://api.millionverifier.com/api/v3/?api={api_key}&email={email}"
response = requests.get(url)
return response.json()
| Field | Values | Meaning |
|---|---|---|
quality | good, bad, risky, unknown | Overall quality |
result | ok, catch_all, unknown, invalid | Specific result |
resultcode | 1, 2, 3, 6 | Numeric code |
role | true/false | Is it a role address (info@, sales@) |
free | true/false | Is it a free email provider |
| Quality | Action |
|---|---|
| good | Safe to send |
| risky | Send with caution, may bounce |
| bad | Do not send |
| unknown | Manual review |
Role addresses (info@, sales@, support@) have lower response rates. Flag them:
Store progress in JSONL files for resumability:
leads/progress/
parallel.jsonl - Company + contacts + status
apollo.jsonl - Contact + email + status
millionverifier.jsonl - Email + quality + status
{"company": "Example Corp", "status": "done", "contacts": [...]}
{"company": "Another Inc", "status": "done", "contacts": [...]}
Before processing:
company,segment,website,person1_name,person1_title,person1_email,person1_linkedin,person2_name,person2_title,person2_email,person2_linkedin,...
Up to 5 contacts per company (person1 through person5).
{
"company": "Example Corp",
"segment": "Tier1_Gloves",
"website": "example.com",
"contacts": [
{
"name": "John Smith",
"title": "VP Supply Chain",
"email": "[email protected]",
"email_quality": "good",
"linkedin": "linkedin.com/in/johnsmith"
}
]
}
If pga-2026/scripts/enrichment/ exists with:
enrich_contacts_parallel.pyenrich_emails_apollo.pyverify_emails_millionverifier.pyRun them in sequence:
uv run pga-2026/scripts/enrichment/enrich_contacts_parallel.py
uv run pga-2026/scripts/enrichment/enrich_emails_apollo.py
uv run pga-2026/scripts/enrichment/verify_emails_millionverifier.py
For small lists (under 10 companies):
For new campaigns without existing scripts:
[campaign]/scripts/enrichment/| Error | Action |
|---|---|
| 401 Unauthorized | Check API key is valid |
| 429 Rate Limited | Wait 60 sec, retry |
| 500 Server Error | Wait, retry up to 3 times |
| Timeout | Retry with longer timeout |
| Issue | Fallback |
|---|---|
| No contacts found (Parallel) | Manual web search |
| No email found (Apollo) | Try LinkedIn outreach |
| Bad email (MillionVerifier) | Remove from list |
Before delivering enriched list:
Approximate costs (check current pricing):
| Service | Cost |
|---|---|
| Parallel | ~$0.01-0.05 per task |
| Apollo | Credits-based, varies by plan |
| MillionVerifier | ~$0.0003 per email |
For 100 companies with 5 contacts each:
This skill is generic - works for any campaign, not just Performance Leather.
Design and optimize systems connecting marketing, sales, and customer success into a unified revenue engine.
Strategic planning and optimization for email capture offers and gated content.
Directory submissions: the foundation layer of distribution that passes backlinks and discovery surface area into your marketing pages.
Sequence and choreograph multi-step animations with precise timing control and nested timelines.
Structured framework for planning product launches, feature announcements, and go-to-market strategies.
Upload files to Google Drive with automatic MIME type detection and metadata.
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.
firecrawl lead gen
firecrawl lead research
firecrawl demo walkthrough
Team leadership persona with standup coordination, meeting prep, task delegation, and team communication.
Identify large Google Drive files consuming storage quota.
Revolutionize Video Creation with AI-Generated Avatars and Voices
Social media on autopilot
Design custom logos instantly with AI.
Text-heavy marketing and design images
Boost Your SEO with Content and SEO Silos
Revolutionize Your Marketing with AI-Powered MarketingBlocks!
10X faster & free AI content creation for 100+ use cases
Tribescaler | Make Your Tweets Go Viral