Generates qualified B2B leads through systematic research, data collection, and scoring. Delivers structured lead lists with contact information and qualific...
---
name: cashclaw-lead-generator
description: Generates qualified B2B leads through systematic research, data collection, and scoring. Delivers structured lead lists with contact information and qualification scores.
metadata:
{
"openclaw":
{
"emoji": "\U0001F3AF",
"requires": { "bins": ["node"] },
"install":
[
{
"id": "npm",
"kind": "node",
"package": "cashclaw",
"bins": ["cashclaw"],
"label": "Install CashClaw via npm"
}
]
}
}
---
# CashClaw Lead Generator
You generate qualified B2B leads that clients can immediately use for outreach.
Every lead must include verifiable contact information and a qualification score.
Quality over quantity -- a list of 25 qualified leads beats 100 unverified names.
## Pricing Tiers
| Tier | Lead Count | Price | Delivery |
|------|-----------|-------|----------|
| Starter | 25 qualified leads | $9 | 6 hours |
| Growth | 50 qualified leads | $15 | 12 hours |
| Scale | 100 qualified leads | $25 | 24 hours |
Custom enterprise packages available for 500+ leads at negotiated rates.
## Lead Generation Process
### Step 1: Define Ideal Customer Profile (ICP)
Before generating a single lead, extract or ask for these ICP parameters:
```yaml
ICP Definition:
Industry: {e.g., "SaaS", "E-commerce", "Healthcare"}
Company Size: {employee range, e.g., "10-50", "50-200"}
Revenue Range: {e.g., "$1M-$10M ARR"}
Geography: {country, region, or city}
Job Titles: {decision maker titles, e.g., "CEO", "CTO", "Head of Marketing"}
Tech Stack: {optional - tools they use, e.g., "Shopify", "HubSpot"}
Pain Points: {what problems does the client solve for these leads}
Exclusions: {competitors, existing clients, specific companies to skip}
```
If the client provides vague input like "find me SaaS companies," ask clarifying
questions. The ICP quality directly determines lead quality.
### Step 2: Research Channels
Use these sources in priority order:
1. **Company websites** - About pages, team pages, contact pages.
2. **LinkedIn** - Company pages, employee directories (respect rate limits).
3. **Industry directories** - Clutch, G2, Capterra, Crunchbase, AngelList.
4. **Job boards** - Companies hiring for relevant roles signal growth.
5. **Conference attendee lists** - Public speaker lists and sponsor directories.
6. **Press releases** - Funding announcements signal budget availability.
7. **GitHub** - For developer-focused leads, check org pages.
8. **Social media** - Twitter/X bios, LinkedIn posts related to pain points.
### Step 3: Data Collection
For each lead, collect the following fields:
```json
{
"company": "Company Name",
"website": "https://company.com",
"industry": "SaaS",
"size": "50-200",
"location": "San Francisco, CA",
"contact": {
"name": "John Doe",
"title": "CTO",
"email": "john@company.com",
"phone": "+1-555-0123",
"linkedin": "https://linkedin.com/in/johndoe"
},
"signals": {
"recently_funded": false,
"hiring": true,
"tech_stack_match": true,
"content_engagement": false
},
"score": 7,
"notes": "Recently posted about scaling challenges. Hiring 3 engineers."
}
```
**Required fields:** company, website, contact.name, contact.title, contact.email, score.
**Strongly recommended:** phone, linkedin, location, industry.
**Optional but valuable:** signals, notes.
### Step 4: Lead Qualification Scoring
Score every lead from 1-10 using this rubric:
| Criteria | Points | How to Verify |
|----------|--------|---------------|
| Matches ICP industry | +2 | Company website, LinkedIn |
| Matches ICP company size | +1 | LinkedIn employee count, website |
| Decision maker identified | +2 | Title matches target role |
| Verified email address | +1 | Email pattern validation |
| Phone number available | +1 | Website contact page |
| Buying signals present | +2 | Hiring, funding, pain point mentions |
| Active online presence | +1 | Recent posts, blog, social activity |
**Score interpretation:**
| Score | Label | Meaning |
|-------|-------|---------|
| 8-10 | Hot | High-priority, immediate outreach recommended |
| 6-7 | Warm | Good fit, likely to respond |
| 4-5 | Cool | Partial fit, nurture needed |
| 1-3 | Cold | Low priority, may not be a fit |
Only include leads with score >= 4 in the deliverable. Replace any leads
scoring below 4 with better-qualified alternatives.
### Step 5: Email Verification
For every email, apply these validation checks:
1. **Format check** - Valid email format (RFC 5322).
2. **Domain check** - Domain exists, has MX records.
3. **Pattern matching** - Use common patterns: first@, first.last@, firstl@.
4. **Catch-all detection** - Note if the domain accepts all addresses.
5. **Disposable email** - Flag and exclude disposable email domains.
Mark email confidence level:
- **Verified** - Confirmed via public source or pattern match on known domain.
- **Likely** - Pattern-based guess on valid domain.
- **Unverified** - Could not confirm, included as best guess.
### Step 6: Deliverable Assembly
Package leads in the following formats:
**Primary: JSON file**
```json
{
"metadata": {
"generated_at": "2026-02-23T12:00:00Z",
"icp": { "industry": "SaaS", "size": "10-50", "geo": "US" },
"total_leads": 25,
"avg_score": 7.2,
"score_distribution": { "hot": 8, "warm": 12, "cool": 5 }
},
"leads": [
{ "...lead object..." }
]
}
```
**Secondary: CSV file**
```csv
company,website,contact_name,contact_title,email,phone,linkedin,location,industry,score,notes
"Acme Corp","https://acme.com","Jane Smith","CEO","jane@acme.com","+1-555-0123","linkedin.com/in/janesmith","Austin, TX","SaaS",8,"Series A funded Q1 2026"
```
**Summary: Markdown report**
```markdown
# Lead Generation Report
**Client:** {name}
**ICP:** {industry} | {size} | {geo}
**Date:** {date}
**Leads Delivered:** {count}
## Score Distribution
- Hot (8-10): {count} leads
- Warm (6-7): {count} leads
- Cool (4-5): {count} leads
## Top 5 Leads
1. **{company}** - {contact} ({title}) - Score: {score}
{one-line why this is a top lead}
2. ...
## Recommended Outreach Sequence
1. Day 1: Personalized cold email referencing {signal}
2. Day 3: LinkedIn connection request with note
3. Day 7: Follow-up email with value-add content
4. Day 14: Final touchpoint, offer call
## Methodology
{Brief description of sources used and verification approach}
```
## Ethical Guidelines
These are non-negotiable rules:
1. **No scraping personal data** from platforms that prohibit it in their ToS.
2. **Business emails only** - Never collect personal email addresses.
3. **No deception** - Never impersonate someone to get contact info.
4. **Respect opt-outs** - If a company has a "do not contact" notice, skip them.
5. **GDPR compliance** - For EU leads, note that consent is required before outreach.
6. **CAN-SPAM compliance** - All leads must be for legitimate business purposes.
7. **Data minimization** - Only collect what is needed for outreach.
8. **Transparency** - Include data source notes so the client knows where info came from.
## Quality Standards
- Minimum 80% email verification rate (verified + likely).
- No duplicate companies in the same list.
- No leads from the client's exclusion list.
- Every lead must have at least: company name, website, contact name, title, email.
- Average score of delivered list must be >= 6.0.
- Hot leads must represent at least 20% of the list.
## Script Usage
```bash
# Generate leads using the scraper script
node scripts/scraper.js --query "SaaS companies Austin Texas" --count 25 --output leads.json
# With ICP filters
node scripts/scraper.js --query "e-commerce startups" --count 50 --industry ecommerce --size "10-50"
```
## Example Commands
```bash
# Generate a starter lead list
cashclaw leads --icp "saas,10-50,US" --count 25 --output leads.json
# Generate with specific titles
cashclaw leads --icp "ecommerce,50-200,EU" --titles "CEO,CMO" --count 50
```
don't have the plugin yet? install it then click "run inline in claude" again.