← Back to Skills Marketplace
catafal

lfg

by Jordi Catafal · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
319
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install lead-gen-factory
Description
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...
README (SKILL.md)

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 search
  • OPENROUTER_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.

Usage Guidance
Before installing or enabling this skill, consider the following: - Inconsistency: SKILL.md requires a local 'lgf' CLI and two API keys (TAVILY_API_KEY, OPENROUTER_API_KEY), but the registry metadata does not list those requirements. Treat this as a warning sign. - Verify the source: inspect the GitHub repository (https://github.com/Catafal/lead-gen-factory.git) yourself. Review the code (especially install/setup scripts) and check issues/stars/maintainer reputation before pip-installing. - Avoid installing system-wide: if you decide to install, do so in an isolated environment (VM, container, or dedicated user account) or use pipx with isolation, and avoid providing high‑privilege credentials. - Use least-privilege credentials: create dedicated API keys with limited scope and rotate them if used for testing. Do not reuse sensitive production keys. - Protect secrets on disk: SKILL.md points at ~/.lgf/.env — ensure its permissions are restrictive and be aware that the agent (with Read permission) could access that file. - Confirm registry metadata: ask the publisher to update the skill manifest to declare required binaries and env vars formally, and to provide an install spec referencing a vetted release (e.g., GitHub release tarball or PyPI package) rather than a raw git URL if possible. If you cannot review the repository or prefer lower risk, do not install the CLI and instead look for a skill that either provides a vetted install spec or is purely instruction-only without requiring new system binaries or undeclared credentials.
Capability Analysis
Type: OpenClaw Skill Name: lead-gen-factory Version: 1.0.0 The skill requires broad permissions (Bash, Read, Write) and instructs the agent to install software directly from a remote GitHub repository (github.com/Catafal/lead-gen-factory.git), which presents a supply chain risk. It also manages sensitive API keys (TAVILY_API_KEY, OPENROUTER_API_KEY) in a local configuration file (~/.lgf/.env) and uses shell redirection (2>/dev/null) to suppress stderr. While these behaviors are plausibly necessary for a CLI-based lead generation tool, they represent significant attack surfaces and risky capabilities without a centralized vetting process.
Capability Assessment
Purpose & Capability
The skill claims to run B2B lead research but the package metadata lists no required binaries or env vars while SKILL.md clearly expects a local 'lgf' CLI and two API keys (TAVILY_API_KEY and OPENROUTER_API_KEY). The registry entry also gives the skill name as 'lfg' while SKILL.md uses 'lgf' (likely a typo). Asking for an external CLI and API keys is coherent with lead-gen functionality, but the registry should have declared these requirements; their absence is an inconsistency.
Instruction Scope
SKILL.md instructs the agent/user to install a third‑party Python CLI and to store API keys in ~/.lgf/.env, and suggests running CLI commands that crawl and extract contact data. The instructions allow reading ICP files and writing CSV/JSON. There are no explicit instructions to exfiltrate secrets, but the skill enables the agent to read local config (~/.lgf/.env) and run networked searches/LLM scoring; because the declared metadata omitted these data/credential needs, the instruction scope is broader than what the registry signals.
Install Mechanism
The skill package has no install spec, but SKILL.md recommends installing the CLI from a GitHub repo (pip install -e . or pipx install git+https://github.com/Catafal/lead-gen-factory.git). Installing from a third‑party GitHub URL executes and places external code on the system and can run arbitrary code—this is higher risk, especially when the registry did not declare the dependency or provide a vetted install spec.
Credentials
SKILL.md requires two sensitive API keys (TAVILY_API_KEY for web search and OPENROUTER_API_KEY for LLM calls) stored in ~/.lgf/.env, but the skill metadata lists no required env vars. These credentials are relevant to lead generation, so they are proportionate to the task, but their absence from the registry is a red flag: an agent or user may not realize sensitive keys will be needed and potentially read/written by the skill.
Persistence & Privilege
The skill is not marked 'always' and does not request system-wide persistent privileges. Autonomous invocation is allowed (the default) — combined with the above issues (undeclared credentials and external install), this increases blast radius if the agent is permitted to run Bash/Read/Write. There is no evidence the skill attempts to modify other skills or global agent config.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install lead-gen-factory
  3. After installation, invoke the skill by name or use /lead-gen-factory
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Init
Metadata
Slug lead-gen-factory
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is 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... It is an AI Agent Skill for Claude Code / OpenClaw, with 319 downloads so far.

How do I install lfg?

Run "/install lead-gen-factory" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is lfg free?

Yes, lfg is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does lfg support?

lfg is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created lfg?

It is built and maintained by Jordi Catafal (@catafal); the current version is v1.0.0.

💬 Comments