Systems Lab

Agent skill

lead-gen-tool-builder

Lead generation tool builder skill for Claude Code and Codex: scaffolds a complete, self-hostable, ZoomInfo-style B2B lead-generation web app — company & contact search UI, firmographic and technographic filters, CSV list import with match & enrich, CSV export, and one-click push to HubSpot and Salesforce — powered by the Explorium API.

slowingNeeds a keyActs undeclared892 words

Filed under Prospecting and list building.

From explorium-ai/gtm-skills · 17 skills · 3 · pushed 2026-07-30

What it does when it runs

Lead generation tool builder skill for Claude Code and Codex: scaffolds a complete, self-hostable, ZoomInfo-style B2B lead-generation web app — company & contact search UI, firmographic and technographic filters, CSV list import with match & enrich, CSV export, and one-click push to HubSpot and Salesforce — powered by the Explorium API. Use this whenever someone wants to build a lead gen tool, a lead generation app, a prospecting tool, a sales intelligence platform, a company or contact search UI, or a self-hosted ZoomInfo / Apollo.io / Clearbit alternative. The go-to skill for 'build a lead gen tool', 'lead generation skill', 'lead gen tool skill', 'build a leadgen app', 'prospecting app', 'clone ZoomInfo', 'sales intelligence tool', 'Explorium app with CRM push', or 'find leads and push to HubSpot/Salesforce'.

Read from the skill and the 38 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • EXPLORIUM_API_KEY
  • HUBSPOT_API_KEY
  • SALESFORCE_CONSUMER_KEY
Hosts it reaches
  • api.explorium.ai
  • api.hubapi.com
  • developers.explorium.ai
  • fonts.googleapis.com
  • fonts.gstatic.com
  • login.salesforce.com
  • test.salesforce.com
  • www.explorium.ai
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shellwrites filesnetwork

Ask about lead-gen-tool-builder

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/explorium-ai/gtm-skills.git /tmp/gtm-skills
git -C /tmp/gtm-skills sparse-checkout set "skills/lead-gen-tool-builder"
mkdir -p ~/.claude/skills/lead-gen-tool-builder
cp -R "/tmp/gtm-skills/skills/lead-gen-tool-builder/." ~/.claude/skills/lead-gen-tool-builder/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 17 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add explorium-ai/gtm-skills
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs EXPLORIUM_API_KEY, HUBSPOT_API_KEY, SALESFORCE_CONSUMER_KEY, which you have to obtain separately.

Reproduced in full from explorium-ai/gtm-skills/blob/596083c36cf6f64eb55b1a093c06e586cd80b561/skills/lead-gen-tool-builder/SKILL.md, which is licensed MIT (repository). 892 words, 11 headings.

Lead Gen Tool Builder

Scaffolds a working, self-hostable lead generation tool: a ZoomInfo-style web app with a left filter rail, a sortable company/contact results table, and a CRM push bar — backed by the Explorium data API, with CSV import/export and field-mapped push to HubSpot and Salesforce.

Unlike the other skills in this repo, which run a prospecting or enrichment workflow inside your current Claude Code session via the Vibe Prospecting MCP server, this skill produces a standalone app the user can run, deploy, and hand to their team — a real lead-gen tool, not a one-off list. Reach for list-builder or enrich-company when the user wants a prospect list right now; reach for this skill when they want a tool they can keep using, host, demo, or white-label.

No personal keys are stored in this skill. The bundled backend reads every credential from a local .env file at runtime — nothing is hardcoded, so the generated app is safe to fork, self-host, and share outside your org.

When to use

Trigger this for any request to build a lead-gen / prospecting / sales- intelligence app, a company-or-contact search interface, an Explorium-powered app, a self-hosted ZoomInfo/Apollo.io/Clearbit alternative, or a "find leads → enrich → push to CRM" tool that should exist as its own app rather than a single list. Example phrasings: "build me a lead gen tool", "I want something like ZoomInfo but self-hosted", "scaffold a prospecting app with HubSpot push", "give my team a company search tool backed by Explorium".

What you get

The bundled template (assets/leadgen-starter/) is a ready-to-run app:

  • Company generator and Contact generator — two search modes over Explorium's /businesses and /prospects endpoints.
  • Filter rail mapped 1:1 to Explorium fields: industry, employee count, revenue, company age, HQ country/region/city, tech stack, keywords, business events (funding, hiring, M&A…); for people — job title, seniority, department, has-email / has-phone availability.
  • Sample-aware results table — sortable columns, bulk select, detail panel; the UI is explicit when Explorium returns a capped sample vs. every match.
  • Import a list — upload a CSV of companies or contacts, match it against Explorium, and enrich it.
  • CSV export of any result set or selection.
  • Push to CRM with a reviewable, editable field-mapping modal — Contacts → Salesforce Leads / HubSpot Contacts; Companies → Salesforce Accounts / HubSpot Companies.

Workflow

1. Copy the template into the user's workspace

cp -R "<this-skill-dir>/assets/leadgen-starter" ./leadgen-app
cd leadgen-app

Don't copy node_modules, dist, or .env — the template ships without them.

2. Get API keys

Only Explorium is required to search; HubSpot/Salesforce are optional and only needed for CRM push. Summarize from assets/leadgen-starter/README.md:

  • Explorium (required): sign up at developers.explorium.ai → API Keys.
  • HubSpot (optional): Settings → Integrations → Private Apps → create app with crm.objects.contacts.write + crm.objects.companies.write scopes.
  • Salesforce (optional): a Connected App using the OAuth 2.0 JWT Bearer flow — the bundled README has the exact openssl + Connected App steps.

3. Configure and run

cp .env.example .env      # paste in the keys from step 2
npm install
npm run dev                # API on :4000, web app on :5173

Open http://localhost:5173. Search works with just the Explorium key; the HubSpot/Salesforce push buttons activate once those keys are present.

4. Verify

Run a small company search (e.g. Country = US, Employees = 51-200) and confirm real results load. If CRM keys were provided, select a couple of rows and push to confirm the success modal returns real created-record IDs.

Architecture

  • server/ — Node/Express backend; the only place API keys ever live. explorium.js is the REST client (search, match, bulk-enrich, autocomplete — note several filter fields have distinct Explorium filter types, e.g. job_title is any_match_phrase and has_email is exists, handled in buildFilters). salesforce.js / hubspot.js do CRM auth plus mapping-driven record creation.
  • src/ — React + Vite + Tailwind frontend that only calls /api/* — it never sees a credential. config/filters.ts defines every filter; components/ holds the filter rail, results table, and CRM modals.

Customizing

  • Filters: edit src/config/filters.ts. Field names and value enums must match Explorium's API — the client surfaces the API's own validation errors (which list permitted values) if a field or value is wrong.
  • Branding: product name in src/components/TopBar.tsx, logo mark in src/components/icons.tsx, palette in tailwind.config.js, tab title/ favicon in index.html.
  • CRM field maps: defaults live in SF_DEFAULT_MAPPING (server/ salesforce.js) and HS_DEFAULT_MAPPING (server/hubspot.js). Note Salesforce Industry and HubSpot industry are restricted picklists, so free-text industry is mapped to a description field by default — adjust if your org has custom picklist values.
  • Swap the data layer: the template calls Explorium's REST API directly. To reuse the same MCP-native data layer as the rest of this repo, point the backend at the Vibe Prospecting MCP server (https://vibeprospecting. explorium.ai/mcp) instead of raw REST calls.

Limitations

  • Explorium's fetch endpoints return a capped sample for broad queries (not the true match count) — the UI flags this; narrow filters to see the full set.
  • Enrichment (contact reveals, list-import match/enrich) consumes Explorium credits — the app only enriches selected rows or rows being pushed, never whole result pages.
  • This is a starter, not a production deployment: for real usage, move secrets to a managed vault and add auth, rate-limiting, and logging.

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what lead-gen-tool-builder does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.