Skip to main content

What It Does

Lead Hand is an autonomous lead generation engine that discovers prospects matching your Ideal Customer Profile (ICP), enriches them with web research, scores them 0-100, deduplicates against your existing database, and delivers qualified leads in CSV/JSON/Markdown format—on a schedule. This is not a one-time scrape. Lead Hand runs daily (or weekly) and continuously builds your lead database over time.

Key Features

  • ICP-based discovery: Targets specific industries, roles, company sizes, and geographies
  • Multi-query web research: 5-10 search strategies per run to find prospects
  • Enrichment: Company size, tech stack, funding, recent news
  • Scoring: 0-100 lead quality score based on ICP match, growth signals, and data completeness
  • Deduplication: Never delivers the same lead twice
  • Scheduled delivery: Daily at 7/8/9 AM, weekdays only, or weekly

Activation

# Activate the Lead Hand
openfang hand activate lead

# Activate with custom ICP
openfang hand activate lead --settings "target_industry=SaaS,target_role=CTO,company_size=startup"

# Check status
openfang hand status lead

Configuration Settings

target_industry
text
Industry vertical to focus on (e.g., SaaS, fintech, healthcare, e-commerce)
target_role
text
Decision-maker titles to target (e.g., CTO, VP Engineering, Head of Product)
company_size
select
default:"any"
Filter leads by company size:
  • any: Any size (default)
  • startup: 1-50 employees
  • smb: 50-500 employees
  • enterprise: 500+ employees
lead_source
select
default:"web_search"
Primary method for discovering leads:
  • web_search: Web search (default)
  • linkedin_public: LinkedIn public profiles
  • crunchbase: Crunchbase data
  • custom: Specify in prompt
output_format
select
default:"csv"
Report delivery format:
  • csv: CSV spreadsheet (default)
  • json: JSON data
  • markdown_table: Markdown table
leads_per_report
select
default:"25"
Number of leads to include in each report:
  • 10 leads
  • 25 leads (default)
  • 50 leads
  • 100 leads
delivery_schedule
select
default:"daily_9am"
When to generate and deliver lead reports:
  • daily_7am: Daily at 7 AM
  • daily_9am: Daily at 9 AM (default)
  • weekdays_8am: Weekdays at 8 AM
  • weekly_monday: Weekly on Monday
geo_focus
text
Geographic region to prioritize (e.g., US, Europe, APAC, global)
enrichment_depth
select
default:"standard"
How much context to gather per lead:
  • basic: Name, title, company
  • standard: + company size, industry, tech stack (default)
  • deep: + funding, recent news, social profiles

Required Tools

Lead Hand requires access to these tools (all built-in):
  • shell_exec — Platform detection
  • file_read, file_write, file_list — Database and report files
  • web_fetch, web_search — Lead discovery and enrichment
  • memory_store, memory_recall — State persistence
  • schedule_create, schedule_list, schedule_delete — Daily/weekly scheduling
  • knowledge_add_entity, knowledge_add_relation, knowledge_query — ICP tracking

System Prompt Overview

Lead Hand operates in 7 phases:
1

Platform Detection

Detects OS, loads lead database, checks if this is a scheduled run or manual trigger.
2

Target Profile Construction

Builds an Ideal Customer Profile (ICP) from settings: industry, role, company size, geography. Stores ICP in knowledge graph.
3

Lead Discovery

Executes 5-10 search queries combining industry + role + growth signals (hiring, funding, news). Aims to discover 2-3x the target number to allow for filtering.
4

Lead Enrichment

For each discovered lead, fetches additional data based on enrichment depth: company website, employee count, tech stack, funding news, social profiles.
5

Deduplication & Scoring

Compares new leads against existing database, skips duplicates, scores each lead 0-100 based on ICP match, growth signals, enrichment completeness, recency, and accessibility.
6

Report Generation

Generates report in configured format (CSV/JSON/Markdown), saves to lead_report_YYYY-MM-DD.{csv,json,md}.
7

State Persistence

Updates leads_database.json with all known leads (new + existing), saves state to memory, updates dashboard metrics.

Usage Examples

Daily Lead Generation

# Configure ICP and schedule
openfang hand configure lead \
  --set target_industry="fintech" \
  --set target_role="Head of Engineering,VP Engineering" \
  --set company_size="smb" \
  --set geo_focus="US" \
  --set delivery_schedule="daily_9am"

# Activate
openfang hand activate lead
Lead Hand will now run every day at 9 AM, discover fintech companies with 50-500 employees in the US, find their engineering leaders, and deliver a report.

Manual Lead Run

# Run immediately without waiting for schedule
openfang hand run lead

Deep Enrichment for High-Value Leads

openfang hand configure lead \
  --set enrichment_depth="deep" \
  --set leads_per_report="10"

openfang hand run lead
Lead Hand will fetch funding news, recent company activity, and social profiles for each lead. With deep enrichment, it delivers fewer leads per run but with much richer context.

Lead Scoring Framework

Each lead is scored 0-100 based on five factors:
  • Industry match: +10
  • Company size match: +5
  • Geography match: +5
  • Role/title match: +10
  • Recent funding: +8
  • Actively hiring: +6
  • Product launch: +3
  • Press coverage: +3
  • Email found: +5
  • LinkedIn found: +5
  • Full company data: +5
  • Tech stack known: +5
  • Active this month: +15
  • Active this quarter: +10
  • Active this year: +5
  • No recent activity: +0
  • Direct contact info: +15
  • Company contact: +10
  • Social only: +5
  • No contact info: +0
Score Interpretation:
  • 80-100 (A): Hot lead — prioritize outreach
  • 60-79 (B): Warm lead — nurture
  • 40-59 (C): Cool lead — enrich further
  • 0-39 (D): Cold lead — deprioritize

Dashboard Metrics

Lead Hand tracks four key metrics:

Leads Found

Total unique leads discovered across all runs.

Reports Generated

Total lead reports delivered.

Last Report

Date and time of the most recent report.

Unique Companies

Total unique companies in the database.
View in the dashboard at http://localhost:4200/hands/lead.

Output Formats

CSV Format

Name,Title,Company,Company URL,LinkedIn,Industry,Size,Score,Discovered,Notes
"Jane Smith","VP Engineering","Acme Corp","https://acme.com","https://linkedin.com/in/janesmith","SaaS","SMB (120 employees)",85,"2025-01-15","Series B funded, hiring 5 engineers"

JSON Format

[
  {
    "name": "Jane Smith",
    "title": "VP Engineering",
    "company": "Acme Corp",
    "company_url": "https://acme.com",
    "linkedin": "https://linkedin.com/in/janesmith",
    "industry": "SaaS",
    "company_size": "SMB",
    "employee_count": 120,
    "score": 85,
    "discovered": "2025-01-15",
    "enrichment": {
      "funding": "Series B, $15M",
      "hiring": true,
      "tech_stack": ["React", "Python", "AWS"],
      "recent_news": "Launched enterprise plan Q4 2024"
    },
    "notes": "Strong ICP match, actively growing"
  }
]

Markdown Table Format

| # | Name | Title | Company | Score | Key Signal |
|---|------|-------|---------|-------|------------|
| 1 | Jane Smith | VP Engineering | Acme Corp | 85 | Series B funded, hiring |
| 2 | John Doe | CTO | Beta Inc | 72 | Product launch Q1 2025 |

Best Practices

Lead Hand uses only publicly available information. It will never scrape behind login walls or paywalls. All data must be ethically sourced.
Start with a narrow ICP (specific industry + role + size). Once you validate the quality, broaden the criteria.
Check your leads_database.json regularly. Lead Hand never forgets a lead—if you want to reset, delete this file.
Use deep enrichment for high-value enterprise leads. Use basic enrichment for volume plays.

Advanced Configuration

Custom Search Queries

You can manually trigger Lead Hand with custom search guidance:
openfang chat lead
> "Find CTOs at Series A fintech startups in NYC that recently launched a product."
Lead Hand will adjust its search queries to match this specific request.

Integration with CRM

Export leads to your CRM:
# Generate JSON format
openfang hand configure lead --set output_format=json

# Run and pipe to your CRM's API
cat lead_report_2025-03-07.json | curl -X POST https://your-crm.com/api/leads \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d @-

Deduplication Strategy

Lead Hand uses a three-level matching algorithm:
  1. Exact match: Normalized company name + person name
  2. Fuzzy match: Levenshtein distance < 2 on company name + same person
  3. Domain match: Same company website domain = same company
When a duplicate is found, Lead Hand merges the enrichment data (keeps the most complete record).

Example Output

# Lead Report: 2025-03-07
**ICP**: SaaS | VP Engineering | SMB | US
**Leads Delivered**: 25 | **Average Score**: 68

## Top 5 Leads

1. **Jane Smith** (85) — VP Engineering at Acme Corp
   - Company: 120 employees, Series B funded ($15M)
   - Signal: Hiring 5 engineers, launched enterprise plan Q4 2024
   - LinkedIn: https://linkedin.com/in/janesmith

2. **John Doe** (72) — CTO at Beta Inc
   - Company: 80 employees, Series A funded
   - Signal: Product launch Q1 2025
   - LinkedIn: https://linkedin.com/in/johndoe

[Full CSV attached: lead_report_2025-03-07.csv]

Next Steps

Collector Hand

Monitor your leads over time with intelligence collection

Researcher Hand

Deep-dive research on high-value accounts

Build docs developers (and LLMs) love