00-gtm-router
Plan and run the full API-first GTM chain - the orchestrator (step 00) that turns an ICP description plus optional budget, volume, and urgency into the right…
B2B company discovery and list building via the Prospeo search API. Use when the user wants to find companies from an ICP, build a prospect or TAM list, search by ICP, or size a market - e.g. "build a list of B2B SaaS in the US", "how many companies match this ICP", "TAM
$ npx -y skills add Zevenue/headless-gtm --skill 01-prospeo-discover --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/01-prospeo-discoverContext preview
The summary Claude sees to decide when to auto-load this skill.
B2B company discovery and list building via the Prospeo search API. Use when the user wants to find companies from an ICP, build a prospect or TAM list, search by ICP, or size a market - e.g. "build a list of B2B SaaS in the US", "how many companies match this ICP", "TAM
name: 01-prospeo-discover description: > B2B company discovery and list building via the Prospeo search API. Use when the user wants to find companies from an ICP, build a prospect or TAM list, search by ICP, or size a market - e.g. "build a list of B2B SaaS in the US", "how many companies match this ICP", "TAM sizing", "company search", or any mix of industry + location + headcount + funding filters. Handles seed-based "similar to X" requests too by building an ICP from the seeds; 01-prospeo-lookalike is the deeper specialist when you want the matches themselves returned and ranked.
Turn a plain-English ICP into Prospeo filter JSON, run a company search against Prospeo's 30M+ company database (33 filters), present the result, and export to Google Sheets on request.
1. Work out what the user has given you and what's still missing. 2. Map their language to exact Prospeo filter values. Resolve anything you're unsure of via the API rather than inventing enum values. 3. Cover the mandatory filters, using the smart defaults below for anything they skip. 4. Recommend a few high-impact optional filters, then stop. 5. Run the search, show the count plus a 25-row preview, and export only when asked.
Credits are real money: each search page costs 1 credit; account and suggestion calls are free. Guard spend, especially on export.
Auth reads from environment variables. Nothing is hardcoded.
The curl examples use `$PROSPEO_API_KEY` as the key. **A `.env` file is not visible to curl** - load it into the shell first, in the same command as the call, or curl sends an empty `X-KEY` header and the API returns a confusing auth error instead of a missing-key one:
set -a; [ -f .env ] && . ./.env; set +a curl -s -H "X-KEY: $PROSPEO_API_KEY" https://api.prospeo.io/account-information
Check `$PROSPEO_API_KEY` is non-empty before the first paid call. The Python scripts under `scripts/` read `.env` themselves and need no such prelude.
Base URL: https://api.prospeo.io Auth header: X-KEY: $PROSPEO_API_KEY Content-Type: application/json
Three endpoints:
The one body-shape rule that breaks searches when you get it wrong: filters go inside a `"filters": {}` wrapper, and `"page"` is a sibling of `"filters"`, not inside it.
curl -s -X POST "https://api.prospeo.io/search-company" \
-H "X-KEY: $PROSPEO_API_KEY" -H "Content-Type: application/json" \
-d '{"filters": { ...filter JSON... }, "page": 1}'`search-suggestions` takes exactly one search key per request (min 2 chars) and is how you resolve any value you are not certain of. The full table of search keys and response keys, the worked curl examples, and the wrong formats to avoid live in `references/api-curl.md` - read it before resolving values for the first time in a session.
Do this silently before prompting the user. Don't narrate it or show step numbers.
**Plan and credits.** Call `GET /account-information` and read `current_plan` and `remaining_credits` from the `response` object (plus the renewal date if the response carries one). Store them. If `remaining_credits` is under 10, tell the user their balance and that each page costs 1 credit before spending anything.
Gate filters by plan. Only offer what the plan supports, and don't ask about filters it lacks. Full mapping in `references/plan-filter-map.md`:
**Enum cache.** Read `references/prospeo-enums.json` and check `last_updated`. If it's missing or older than 21 days, refresh it with `references/enum-refresh.md`; otherwise use the cached values. The cache holds valid values for industries (256), subtypes, funding stages, employee and revenue ranges, departments, and more. Technologies (4,946) and locations are too large to cache - resolve those at runtime via `search-suggestions`.
If the invoking request already describes the ICP - which is the common case - go straight to mapping it; don't re-ask for what you were just told. Only when you have nothing to work from, ask what companies they're looking for, mentioning the plan and credit balance. Don't show examples or sample company names.
Sort what the user gave you into three buckets:
That tells you how to proceed. You don't need to announce a "type" to the user, just route:
| What they gave | Approach | |---|---| | A full ICP (4-5 mandatory filters covered) | Map it to filter JSON and confirm | | A partial or vague ICP | Guide them: interpret vague terms against the enum cache, then ask for missing mandatory filters one at a time with smart defaults | | Seed domains or "similar to" | Build an ICP from the seed pattern (see below), then search |
A user can hand you a partial ICP *and* a seed domain - build the ICP from the seeds (below), merge it with the filters they already gave, and run the search.
GTM without the SaaS layer. An outbound pipeline built as agent skills for Claude Code and Codex: describe an ICP in plain English and the chain takes it from company discovery to verified, signal-ranked contacts - every step running on raw vendor APIs, not
Plan and run the full API-first GTM chain - the orchestrator (step 00) that turns an ICP description plus optional budget, volume, and urgency into the right…
The qualification gate of the GTM chain - judges every discovered company against the client's ICP before any paid enrichment, so credits are spent only on…
Seed-based B2B company discovery via the Prospeo company-lookalike API. Use when the user has example companies and wants more like them - "find companies…
Find local-business (SMB) prospects via Google Maps using the Apify Compass actor. Use for Zevenue Step-2 Discovery (Vertical) when the ICP is Maps-addressable…
Scrapes a company website into clean, page-typed markdown using Firecrawl map + scrape + extract. Triggers on: "scrape this company", "read their website",…
Enriches company domains with structured signals from CrustData - funding rounds, headcount growth, department growth, and recent hires. Use when the user…