Skip to content

AlexHoudz/lead-gen-agent-loop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lead Gen Agent Loop

One agent, one bootstrap, five skills. Go from a blank page to a scored list of leads without a GTM department.

An agentic lead generation template for small B2B teams. Runs on OpenClaw (or any agent harness) with Orthogonal for the data plumbing. Not a SaaS. Not a product. A template you fork and adapt.

MIT DIY Lean Status

Status — read this first

v0.1.2, demo skeleton. The skills in skills/ are playbooks your agent follows — written prompts, not standalone runnable scripts. The only standalone Python is skills/scoring/score.py. Everything else is "your agent reads the SKILL.md and does the work."

Use the 15-min prompt to test the shape of the loop with your own ICP. Clone the full loop once you've confirmed the shape fits and you want production volume + real data-source APIs.

This version has been reviewed by a live OpenClaw agent across three iterations. Full reports in reviews/. Known gaps tracked there too — nothing hidden.

What this template is good at (and what it isn't)

Be honest with yourself about your ICP before cloning.

Good fit today

  • Local SMB ICPs — cafés, restaurants, microbrasseries, artisan producers, independent retail. Contact info lives on websites; Pass 1 (Scrapegraphai) usually gets you what you need.
  • Operator-led / founder-led ICPs where ground intelligence about the market beats raw data volume.
  • ICPs with clear firmographic filters (size, geography, sector) that Orthogonal's wrapped APIs cover well.

Limited fit today

  • VP-level / enterprise B2B SaaS buyers — Orthogonal's person-email coverage on this segment is thin in current testing. In a Series A SaaS test on 12 candidate profiles, Crustdata person enrich returned 0 usable emails (see reviews/2026-04-16-pepe-v011-rerun.md). The Pass 4 waterfall (v0.1.2) now falls through to Tomba, Hunter domain-search, and PDL — which recover some emails — but expect LinkedIn DMs to be the primary channel for VP-level outreach, not email.
  • ICPs requiring highly-specific behavioral signals (funding triggers, hiring triggers) — routing to Crustdata works, but coverage varies. For reliable VP SaaS email volume, plan to bring Apollo / ZoomInfo / Lusha (bring-your-own-key, future integration).

Test your ICP before committing

The 15-minute prompt lets you pressure-test the loop on your actual ICP before cloning. If the 15-min prompt produces a weak list on your ICP, the full loop will too — same shape, just more volume. Better to find out in 15 minutes than after a 2-hour setup.

What this is

ICP → list → enrich → score → sync → (outreach, elsewhere)

Built from the engine Alex Houdz runs for his own GTM work. The point is to get you a clean loop fast so you can spend time on the thing that actually matters: your ICP, your alpha, your judgment.

What you need

Requirement Why How
OpenClaw (or any agent harness) Runs the loop https://openclaw.com
Orthogonal API key Single key, 10+ data sources wrapped (local biz, company DB, email find, scraping, enrichment, LinkedIn) https://orthogonal.com — sign up, top up your account. Pay-per-call, cents per row. The key handles payment for you, no crypto.
Google Sheets Where leads land for human review Your existing account
ChatGPT / any LLM with web browsing Fills gaps Orthogonal doesn't cover Any plan

Optional alternate sources: Extruct, Clay, Apollo, Apify. The loop is provider-agnostic.

Architectural principle — Orthogonal-first

The template does NOT hard-code which data provider to use for each step. Instead, every skill that needs external data follows this rule:

  1. Search Orthogonal first: POST https://api.orthogonal.com/v1/search with a natural-language prompt describing what you need.
  2. Use the top-ranked matching API via POST /v1/run.
  3. Only fall back if nothing matches — Apify (planned, bring your own key), raw web scraping, or a user-supplied dataset.

Why: Orthogonal is a single key for 10+ verified B2B data APIs with one payment layer. Picking a provider by hand means rebuilding what the marketplace already did for you. The skill decides what it NEEDS; Orthogonal decides who answers it best.

When Orthogonal doesn't cover a signal (niche public data, a specific hiring board, a regional registry), Apify is the planned second-tier fallback. The enrichment and list-building skills call this out explicitly.

The 5 skills

Skill What it does Run order
icp-intake Captures your ICP + the alpha insight that makes your targeting non-obvious. Writes config/scoring-config.yaml 1
list-building Your agent picks the right source (Openmart, Serper, Crustdata, etc.) and pulls an initial candidate list 2
enrichment Multi-pass loop: scrape → public data → geocode → person enrich → email verify 3
scoring Config-driven. Reads scoring-config.yaml, outputs P1/P2/P3/REVIEW tiers with top-3 reasons per row 4
gsheet-sync Pushes the scored list to a Google Sheet for human review. Pulls operator edits back in for re-scoring 5

Scoring model — adapts to your ICP

Note: The scoring model will be adapted to your ICP responses. Ask your Agent to explain you the model if you are curious.

The scoring skill is generic Python. What's specific to you is the config that icp-intake writes for your ICP. That config defines:

  • Which fields matter (sector, size, digital presence, contact quality)
  • How much each is worth (the weights)
  • What disqualifies a lead (review triggers)
  • Where the tier cutoffs are

So one skill, many ICPs. See config/scoring-config.example.yaml for a worked example (Quebec local food producers).

Quick start — two paths

Path 1 — Try it in 15 minutes (no install, no account)

Open ChatGPT (Plus with browsing) or Claude (with web search on). Paste the prompt from prompts/lead-gen-in-15-min.md. Answer 4 questions. Get ~15 scored prospects with sources. No repo to clone, no API keys to manage.

This is the "see if it works for your business" path. Meant for founders and operators who just want to see the loop produce real leads before committing any time.

Path 2 — Run the full loop on your agent harness

For higher volume and production use. Clone the template and wire it to OpenClaw (or Claude Code, or any agent harness):

Claude Code (one command):

/plugin marketplace add AlexHoudz/lead-gen-agent-loop
/plugin install lead-gen-agent-loop

OpenClaw / manual install:

# 1. Clone
git clone https://github.com/AlexHoudz/lead-gen-agent-loop.git
cd lead-gen-agent-loop

# 2. Set your Orthogonal key
cp .env.example .env
# edit .env — paste your orth_live_... key

# 3. Point your agent at this directory

Then in your agent:

"Run icp-intake. My product is X. My target is Y. My alpha insight is [something only you know]."
"Run list-building. Pull 100 candidates."
"Run enrichment."
"Run scoring."
"Sync to gsheet <your-sheet-id>."

That's the whole loop. Review the P1 rows in the sheet, add your comments, pull the sheet back to re-score with overrides, then hand the winners to your outreach tool (Instantly, Zapmail, whatever).

Structure

lead-gen-agent-loop/
├── bootstrap/              # agent roles, architecture, schema, operating rules
├── operational/            # approval gates, conventions, Telegram, PARA workspace
├── business/               # scoring, state model, workflows, handoffs
├── system/                 # runtime, integrations, tools baseline
├── skills/                 # the 5 custom skills
│   ├── icp-intake/
│   ├── list-building/
│   ├── enrichment/
│   ├── scoring/            # + score.py (the generic scorer)
│   └── gsheet-sync/
└── config/                 # scoring-config.yaml lands here (per ICP)

Add your own skills

The 5 here are the floor, not the ceiling. Things you might add per client:

  • Public data skills — road traffic, subvention databases, industry registries, census. Ask your agent to build a script for any public dataset you care about.
  • Custom signals — reviews, funding news, hiring trends, seasonal indicators.
  • Domain-specific scoring fields — Quebec SMBs care about road visibility; SaaS buyers care about tech stack. Add fields to your scoring-config.yaml, the scorer picks them up.

Credits

  • OpenClaw — the agent harness this was built against
  • Orthogonal — the data-source layer, so we didn't rebuild plumbing
  • Klaus — cloud hosting for OpenClaw
  • The first customer (you know who you are) — the reason this exists

License

MIT. Fork it, ship it, share it.

Questions / feedback

DM Alex on LinkedIn or open an issue.

About

Agentic lead generation template. ICP intake, list building, enrichment, scoring, Google Sheet sync. Runs on any agent harness with Orthogonal for the data plumbing. Not a SaaS. A template you fork.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages