lfg
/install lead-gen-factory
lgf — Lead Gen Factory
A CLI pipeline that takes a free-text ICP (Ideal Customer Profile) and returns a scored, deduplicated list of B2B leads as both CSV and structured JSON.
Prerequisites
Install lgf once (requires Python 3.12+):
# From the repo root
pip install -e .
# Or via pipx for isolated install
pipx install git+https://github.com/Catafal/lead-gen-factory.git
Verify installation:
lgf doctor
Required API keys (set in ~/.lgf/.env):
TAVILY_API_KEY— web searchOPENROUTER_API_KEY— LLM scoring + extraction
Core Command
lgf research --icp-text "\x3Cyour ICP>" --json 2>/dev/null
The --json flag outputs a structured JSON envelope to stdout — perfect for
AI agents to capture and process without touching the filesystem.
All human-facing progress output goes to stderr (suppressed with 2>/dev/null).
Usage Patterns
1. Quick inline ICP (most common)
lgf research --icp-text "HR Directors at SaaS companies in Spain, 50-500 employees" --json 2>/dev/null
2. ICP from file (for complex profiles)
lgf research --icp icp_examples/skillia_spain.md --json 2>/dev/null
3. Narrow with a focus constraint
lgf research --icp-text "Tech companies in Madrid" --focus "only companies hiring L&D managers" --json 2>/dev/null
4. Filter by minimum ICP score
lgf research --icp-text "..." --min-score 8 --json 2>/dev/null
5. Dry-run — see search queries only (no crawling, no LLM calls)
lgf research --icp-text "..." --dry-run
6. Check current config
lgf config
JSON Output Schema
When --json is used, the envelope printed to stdout has this structure:
{
"leads": [
{
"business": "Acme Corp",
"first": "Ana",
"last": "García",
"email": "[email protected]",
"linkedin": "https://linkedin.com/in/anagarcia",
"website": "https://acme.com",
"phone": null,
"date": "2026-03-09",
"place_of_work": "Acme Corp, Madrid",
"icp_fit_score": 9,
"icp_fit_reason": "HR Director at 120-person SaaS, exact ICP match",
"source_url": "https://acme.com/team"
}
],
"count": 1,
"output_file": "leads_20260309.csv",
"icp": {
"target_roles": ["HR Director", "People Director"],
"company_size_min": 50,
"company_size_max": 500,
"industries": ["SaaS", "Tech"],
"geographies": ["Spain"],
"min_fit_score": 7
}
}
Useful jq extractions
# All emails
lgf research --icp-text "..." --json 2>/dev/null | jq '.leads[].email'
# Count of leads found
lgf research --icp-text "..." --json 2>/dev/null | jq '.count'
# First lead's company + score
lgf research --icp-text "..." --json 2>/dev/null | jq '.leads[0] | {business, icp_fit_score}'
# Filter leads scoring 9+
lgf research --icp-text "..." --json 2>/dev/null | jq '[.leads[] | select(.icp_fit_score >= 9)]'
# LinkedIn URLs only
lgf research --icp-text "..." --json 2>/dev/null | jq '[.leads[].linkedin | select(. != null)]'
Writing a Good ICP
Include:
- Roles: job titles of your decision makers (e.g. "HR Director", "L&D Manager", "CPO")
- Company size: employee range (e.g. "50-500 employees")
- Industries: sectors (e.g. "SaaS", "fintech", "consulting")
- Geography: countries or cities (e.g. "Spain", "Barcelona", "LATAM")
- Signals (optional): growth stage, tech stack, hiring activity
Example ICP text:
HR Directors and People Ops leads at B2B SaaS companies in Spain with 50-500 employees.
Focus on companies with active hiring in engineering or sales. Avoid BPO and consulting firms.
All Available Commands
| Command | Purpose |
|---|---|
lgf research |
Full pipeline: search → crawl → extract → score → CSV |
lgf validate-icp |
Parse and display an ICP without running the pipeline |
lgf config |
Show effective configuration (API keys masked) |
lgf config set KEY VALUE |
Update a setting in ~/.lgf/.env |
lgf profile list |
List saved ICP profiles |
lgf profile add \x3Cname> |
Save current ICP as a named profile |
lgf doctor |
Health check: API keys + live connectivity |
lgf init |
First-time setup wizard |
Score Interpretation
| Score | Meaning |
|---|---|
| 8–10 | Strong ICP fit — prioritize these |
| 6–7 | Moderate fit — worth reviewing |
| \x3C 6 | Weak fit — pipeline default filter |
Default min score is 7. Override with --min-score.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install lead-gen-factory - 安装完成后,直接呼叫该 Skill 的名称或使用
/lead-gen-factory触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
lfg 是什么?
Run B2B lead research with lgf (Lead Gen Factory). Use when asked to find leads, prospect companies, research ICPs, find decision makers, or generate a lead... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 319 次。
如何安装 lfg?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install lead-gen-factory」即可一键安装,无需额外配置。
lfg 是免费的吗?
是的,lfg 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
lfg 支持哪些平台?
lfg 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 lfg?
由 Jordi Catafal(@catafal)开发并维护,当前版本 v1.0.0。