Lead Enrichment
by @audsmith28
Turn a name into a full dossier in seconds. Feed in a name + company (or email, or LinkedIn URL) and get back a rich profile with social links, bio, company intel, recent activity, and personalized talking points. Aggregates data from multiple public sources β LinkedIn, Twitter, GitHub, company websites, news β so you can skip the manual research and jump straight to personalized outreach. Your agent does the detective work while you close deals. Supports single enrichment, batch processing, and
clawhub install lead-enrichmentπ About This Skill
name: lead-enrichment description: Turn a name into a full dossier in seconds. Feed in a name + company (or email, or LinkedIn URL) and get back a rich profile with social links, bio, company intel, recent activity, and personalized talking points. Aggregates data from multiple public sources β LinkedIn, Twitter, GitHub, company websites, news β so you can skip the manual research and jump straight to personalized outreach. Your agent does the detective work while you close deals. Supports single enrichment, batch processing, and multiple output formats (JSON, Markdown, CRM-ready). Use when researching prospects, preparing for sales calls, personalizing cold outreach, or building lead lists. Pairs perfectly with trawl for autonomous lead gen β enrichment β outreach pipelines. metadata: clawdbot: emoji: "π" requires: skills: - browser
Lead Enrichment β Research Prospects in Seconds
Stop spending hours stalking LinkedIn. Let your agent do it.
Sales teams waste 6+ hours per week manually researching prospects. You Google their name, check LinkedIn, scroll their Twitter, hunt for their email, read their company's About page, search for recent news... and then do it all over again for the next lead.
Lead Enrichment automates all of it. Give your agent a name and company (or email, or LinkedIn URL), and get back a complete dossier: contact info, social profiles, bio, company intel, recent posts, news mentions, and AI-generated talking points.
The pain: Generic outreach gets ignored. Personalization takes forever. You're always behind quota.
The fix: Your agent researches 10 leads while you grab coffee. Rich profiles ready when you need them. Spend your time selling, not searching.
What You Get
For each lead, the enrichment pulls:
Personal Profile:
Contact Discovery:
Company Context:
Intelligence & Timing:
AI-Generated Talking Points:
Setup
1. Run scripts/setup.sh to initialize config
2. Edit ~/.config/lead-enrichment/config.json with preferences
3. No API keys required for basic enrichment (uses public sources)
4. Optional: Add premium data sources (see config)
Scripts
| Script | Purpose |
|--------|---------|
| scripts/setup.sh | Initialize config and data directories |
| scripts/enrich.sh | Enrich a single lead (main script) |
| scripts/batch.sh | Process multiple leads from CSV/JSON |
| scripts/export.sh | Export enriched leads (JSON/MD/CSV) |
Usage
Single Lead
# By name + company
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp"By email
./scripts/enrich.sh --email "sarah@acmecorp.com"By LinkedIn URL
./scripts/enrich.sh --linkedin "https://linkedin.com/in/sarahchen"Output to file
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp" --output sarah-chen.jsonWith talking points
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp" --talking-points
Batch Processing
# From CSV (columns: name, company, email, linkedin_url)
./scripts/batch.sh --input leads.csv --output enriched/From JSON array
./scripts/batch.sh --input leads.json --output enriched/Process with concurrency
./scripts/batch.sh --input leads.csv --parallel 3
Export Formats
# Export as JSON (default)
./scripts/export.sh --format json enriched/*.json > leads.jsonExport as Markdown (readable)
./scripts/export.sh --format markdown enriched/*.json > leads.mdExport as CSV (CRM import)
./scripts/export.sh --format csv enriched/*.json > leads.csvPipe to your CRM
./scripts/export.sh --format json enriched/*.json | \
curl -X POST https://your-crm.com/api/leads -d @-
Config
Config lives at ~/.config/lead-enrichment/config.json. See config.example.json for full schema.
Key sections:
enrichment.sources β Which data sources to check (all public by default):
linkedin β Public profiles via searchtwitter β Social activity and biogithub β For technical leadscompany_website β About pages, team directoriesnews β Recent mentionscrunchbase β Company funding (public data)enrichment.depth β How thorough to be:
quick β Basic profile only (name, title, LinkedIn, company)standard β Above + social profiles + recent activity (default)deep β Above + news mentions + talking points + shared connectionsoutput.format β Default output format (json/markdown/csv)
output.include β What to include in output:
contact_info β Email attempts, phonesocial_profiles β All discovered linksrecent_activity β Posts, articles (last 30 days)company_intel β Company description, size, fundingtalking_points β AI-generated personalization hooksraw_sources β Source URLs for verificationtalking_points.enabled β Generate AI talking points (requires Claude)
talking_points.style β Tone for suggestions (professional/friendly/bold)
privacy.respect_robots β Skip profiles with clear "no scraping" signals
privacy.store_locally β Cache enriched profiles (default: true)
Data Sources
All sources are public and free:
1. LinkedIn β Public profiles via search (no API, respects robots.txt) 2. Twitter/X β Bio, recent tweets, follower count 3. GitHub β For technical roles (repos, activity, README) 4. Company websites β Team pages, About sections 5. Google News β Recent mentions 6. Crunchbase β Public company data (no API key needed for basic info) 7. Common email patterns β firstname@company.com, f.lastname@company.com, etc.
Premium sources (optional, requires API keys):
Add API keys to ~/.clawdbot/secrets.env if you have them. Enrichment works fine without them.
Output Schema
Each enriched lead is saved as JSON:
{
"lead_id": "sarah-chen-acme-corp",
"enriched_at": "2025-01-29T10:30:00Z",
"input": {
"name": "Sarah Chen",
"company": "Acme Corp"
},
"profile": {
"full_name": "Sarah Chen",
"title": "VP of Engineering",
"company": "Acme Corp",
"location": "San Francisco, CA",
"bio": "Building the future of...",
"photo_url": "https://...",
"social_profiles": {
"linkedin": "https://linkedin.com/in/sarahchen",
"twitter": "https://twitter.com/sarahchen",
"github": "https://github.com/sarahchen",
"personal_site": "https://sarahchen.com"
}
},
"contact": {
"emails": [
{ "address": "sarah@acmecorp.com", "confidence": 0.85, "verified": false },
{ "address": "s.chen@acmecorp.com", "confidence": 0.60, "verified": false }
],
"phones": [],
"preferred_channel": "email"
},
"company": {
"name": "Acme Corp",
"domain": "acmecorp.com",
"industry": "SaaS",
"size": "51-200 employees",
"description": "AI-powered...",
"funding": "Series B ($25M)",
"tech_stack": ["React", "Node.js", "AWS"],
"recent_news": [
{
"title": "Acme Corp raises $25M...",
"url": "https://...",
"date": "2025-01-15"
}
]
},
"intelligence": {
"recent_activity": [
{
"type": "twitter_post",
"content": "Excited to announce...",
"url": "https://...",
"date": "2025-01-20"
}
],
"job_change_signal": false,
"shared_connections": [],
"interests": ["AI", "startups", "engineering leadership"]
},
"talking_points": [
"Reference their recent Series B β congrats and ask about growth plans",
"Mention mutual interest in AI/ML engineering",
"Their tech stack (React/Node) aligns with your solution"
],
"sources": [
"https://linkedin.com/in/sarahchen",
"https://twitter.com/sarahchen",
"https://acmecorp.com/about"
],
"confidence_score": 0.88
}
Integration with Trawl
Lead Enrichment pairs perfectly with Trawl (autonomous lead gen):
# Trawl finds leads, enrichment researches them
trawl sweep.sh # Discover leads
trawl leads.sh list --json | # Export qualified leads
jq -r '.[] | "\(.name)|\(.company)"' |
while IFS='|' read name company; do
./enrich.sh --name "$name" --company "$company"
doneOr automate it via config:
trawl config: "post_qualify_action": "enrich"
Tips
Email Discovery:
Talking Points:
Batch Processing:
--parallel for speed (3-5 concurrent recommended)batch-errors.jsonData Freshness:
--refresh flagUse Cases
Sales Reps:
Recruiters:
Partnerships:
Investors:
Privacy & Ethics
This skill only uses publicly available data. It:
Be a human: Just because you CAN enrich someone doesn't mean you should spam them. Use this for genuine, personalized outreach.
Data Storage
Enriched leads are stored at ~/.config/lead-enrichment/data/leads/:
~/.config/lead-enrichment/
βββ config.json # User configuration
βββ data/
β βββ leads/ # Enriched profiles (one file per lead)
β β βββ sarah-chen-acme.json
β β βββ john-smith-techco.json
β βββ cache/ # Temporary data (30-day expiry)
β βββ batch-runs/ # Batch processing logs
βββ exports/ # Generated exports
FAQ
Q: Is this legal? A: Yes. All data is publicly available. We respect robots.txt and rate limits.
Q: How accurate are the emails? A: Pattern-based = 60-80% accuracy. Verified (if you add Hunter.io key) = 95%+.
Q: Can I enrich 1000 leads? A: Yes via batch.sh. Expect ~30 sec per lead (deep mode). That's 8 hours for 1000. Run overnight.
Q: Does this work for non-US leads? A: Yes. LinkedIn and Twitter are global. Some data sources are US-biased.
Q: Will this get me blocked by LinkedIn? A: No. We use search (public), not scraping. Rate-limited and respectful.
What's Next
Ideas for future versions:
Stop researching. Start selling.
Feed your agent a list of names. Get back a stack of dossiers. Personalize every message. Close more deals.
That's Lead Enrichment.
β‘ When to Use
π‘ Examples
Single Lead
# By name + company
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp"By email
./scripts/enrich.sh --email "sarah@acmecorp.com"By LinkedIn URL
./scripts/enrich.sh --linkedin "https://linkedin.com/in/sarahchen"Output to file
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp" --output sarah-chen.jsonWith talking points
./scripts/enrich.sh --name "Sarah Chen" --company "Acme Corp" --talking-points
Batch Processing
# From CSV (columns: name, company, email, linkedin_url)
./scripts/batch.sh --input leads.csv --output enriched/From JSON array
./scripts/batch.sh --input leads.json --output enriched/Process with concurrency
./scripts/batch.sh --input leads.csv --parallel 3
Export Formats
# Export as JSON (default)
./scripts/export.sh --format json enriched/*.json > leads.jsonExport as Markdown (readable)
./scripts/export.sh --format markdown enriched/*.json > leads.mdExport as CSV (CRM import)
./scripts/export.sh --format csv enriched/*.json > leads.csvPipe to your CRM
./scripts/export.sh --format json enriched/*.json | \
curl -X POST https://your-crm.com/api/leads -d @-
βοΈ Configuration
Config lives at ~/.config/lead-enrichment/config.json. See config.example.json for full schema.
Key sections:
enrichment.sources β Which data sources to check (all public by default):
linkedin β Public profiles via searchtwitter β Social activity and biogithub β For technical leadscompany_website β About pages, team directoriesnews β Recent mentionscrunchbase β Company funding (public data)enrichment.depth β How thorough to be:
quick β Basic profile only (name, title, LinkedIn, company)standard β Above + social profiles + recent activity (default)deep β Above + news mentions + talking points + shared connectionsoutput.format β Default output format (json/markdown/csv)
output.include β What to include in output:
contact_info β Email attempts, phonesocial_profiles β All discovered linksrecent_activity β Posts, articles (last 30 days)company_intel β Company description, size, fundingtalking_points β AI-generated personalization hooksraw_sources β Source URLs for verificationtalking_points.enabled β Generate AI talking points (requires Claude)
talking_points.style β Tone for suggestions (professional/friendly/bold)
privacy.respect_robots β Skip profiles with clear "no scraping" signals
privacy.store_locally β Cache enriched profiles (default: true)
π Tips & Best Practices
Email Discovery:
Talking Points:
Batch Processing:
--parallel for speed (3-5 concurrent recommended)batch-errors.jsonData Freshness:
--refresh flag