Full lead generation pipeline — from discovery to CRM to outreach. Find prospects, enrich their data, qualify them, push to your CRM, and automate follow-up sequences.
bash
pip3 install requests
config.json)#HUNTER_API_KEY, free 25 searches/mo)HUBSPOT_API_KEY)PIPEDRIVE_API_KEY + PIPEDRIVE_DOMAIN)ZOHO_ACCESS_TOKEN)SENDGRID_API_KEY or SMTP config)Not all are required — use what fits your stack.
text
lead-gen/
├── config.json # API keys, CRM selection, scoring rules
├── leads/ # Lead database (JSON files)
│ ├── raw/ # Newly discovered leads
│ ├── enriched/ # Leads with contact data
│ ├── qualified/ # Scored and qualified
│ └── archived/ # Closed/rejected
├── campaigns/ # Outreach campaign configs
├── templates/ # Email templates
└── reports/ # Pipeline reports
Run scripts/init-workspace.sh to create this structure.
Find leads matching your ideal customer profile:
bash
scripts/discover-leads.sh --query "ai agency owner" --count 20
scripts/discover-leads.sh --query "shopify store owner" --industry ecommerce --location "United States"
scripts/discover-leads.sh --directory yelp --category "marketing agencies" --location "Los Angeles"
Discovery sources:
Output: raw lead JSON files in leads/raw/.
Add contact data and company info to raw leads:
bash
scripts/enrich-lead.sh <lead-id>
scripts/enrich-leads.sh --batch raw # Enrich all raw leads
Enrichment adds:
Score leads based on configurable criteria:
bash
scripts/score-leads.sh # Score all enriched leads
scripts/score-leads.sh --threshold 70 # Only qualify leads scoring 70+
Default scoring rubric (customizable in config.json):
Leads scoring above threshold move to leads/qualified/.
Push qualified leads to your CRM:
bash
scripts/push-to-crm.sh <lead-id>
scripts/push-to-crm.sh --batch qualified # Push all qualified leads
scripts/push-to-crm.sh --crm hubspot # Override default CRM
Supported CRMs:
See references/crm-setup.md for per-CRM configuration.
Run automated outreach campaigns with follow-ups:
bash
scripts/create-campaign.sh --name "q1-outreach" --template cold-intro --leads qualified
scripts/send-campaign.sh --campaign "q1-outreach" --dry-run # Preview first
scripts/send-campaign.sh --campaign "q1-outreach" # Send for real
Campaign features:
Critical: Never send without user approval. --dry-run always first.
bash
scripts/pipeline-report.sh # Current pipeline summary
scripts/pipeline-report.sh --weekly # Weekly activity report
scripts/pipeline-report.sh --conversion # Conversion funnel metrics
Store in templates/ as JSON:
json
{
"name": "cold-intro",
"subject": "Quick question about {company_name}",
"body": "Hi {first_name},\n\nI noticed {company_name} is {personalization_hook}.\n\nWe help companies like yours {value_prop}.\n\nWould you be open to a quick chat this week?\n\nBest,\n{sender_name}",
"follow_ups": [
{
"delay_days": 3,
"subject": "Re: Quick question about {company_name}",
"body": "Hi {first_name},\n\nJust following up on my previous note. {follow_up_hook}\n\nHappy to share more details if helpful.\n\nBest,\n{sender_name}"
},
{
"delay_days": 7,
"subject": "Last note from me",
"body": "Hi {first_name},\n\nDon't want to be a pest — just one last check. If {value_prop_short} isn't a priority right now, no worries at all.\n\nIf timing changes, I'm here.\n\nBest,\n{sender_name}"
}
]
}
references/crm-setup.md — Setup guides for HubSpot, Pipedrive, Zohoreferences/email-best-practices.md — Deliverability, compliance, templatesreferences/scoring-customization.md — How to tune the scoring model