Gtm Enrichment Smart
Published by selat-ai in selat-skills
What this skill does
Use this skill when the user wants to enrich a sales lead or GTM prospect from an email address — e.g. "enrich this lead", "who is jane@acme.com", "look up this prospect", "GTM enrichment", "find the person and company behind this email", "qualify this lead with buying signals". Runs a cost-efficient multi-provider waterfall (Apollo, Hunter, and Abstract Company Enrichment via Locus, plus SELAT-native Twitter) mostly via the SELAT Router (MPP), including a SELAT-native Twitter x402 step, to retu
Add Gtm Enrichment Smart to your agent
Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.
Install with a prompt
Paste this into a compatible coding agent:
add this skill "gtm-enrichment-smart" from https://github.com/selat-ai/selat-skillsInstall with the CLI
Run this command in a controlled environment after reviewing the repository:
npx skills add https://github.com/selat-ai/selat-skills --skill gtm-enrichment-smartSkill instructions
gtm-enrichment-smart
When To Use
Use when the user hands you a lead's email (optionally a name/domain) and wants enriched person + company intelligence: title, LinkedIn, location, email deliverability, company description, funding, AI/B2B classification, and buying signals. The skill spends proportionally to lead quality — cheap primary calls first, conditional gap-fills only when earlier results leave gaps. Steps 1-7 are MPP on Tempo payments through the SELAT Router; the final Twitter social-proof step is a via the SELAT Router x402 call to SELAT-native via the SELAT Router (Circle Gateway-batched).
Workflow
- Install:
selat skill install gtm-enrichment-smart - Run:
selat skill run gtm-enrichment-smart --email jane@acme.com [--domain acme.com] [--organizationId <apollo_org_id>] [--twitterHandle acmehq] - The CLI compiles each manifest step into a
selat-paycall (capped at its per-stepmaxAmount), runs them in order, and prints a per-step ✓/✗ summary.
Waterfall order (the manifest runs them sequentially; later steps are conditional and should be gated by the caller on earlier results). Prices are live router quotes, probe-verified 2026-07-10:
- Step 1 — Apollo (via Locus)
POST /apollo/people-enrichment($0.0084) — primary person + embedded company/funding. Captureorganization.idfor the job-postings step. This is also the person fallback: the old separate AI person-fallback step mapped to this same endpoint with the same params, so the two were merged into this single step. - Step 2 — Hunter (via Locus)
POST /hunter/combined-enrichment($0.02415) — combined person+company cross-reference from the email. - Step 3 — Hunter (via Locus)
POST /hunter/email-verifier($0.0084) — email deliverability (valid/risky/undeliverable). - Step 4 — Abstract Company Enrichment (via Locus)
POST /abstract-company-enrichment/lookup($0.0063) — company description, industry/SIC, and firmographics. Skip for free-email domains. - Step 5 — Apollo (via Locus)
POST /apollo/org-enrichment($0.0084) — funding/headcount gap-fill, only if step 1 returned no funding. - Step 6 — Hunter (via Locus)
POST /hunter/email-enrichment($0.01365) — person tie-breaker, only if Apollo and Hunter disagree on name/title. - Step 7 — Hunter (via Locus)
POST /hunter/company-enrichment($0.01365) — company fallback, only if major gaps remain and the company has >500 employees. - Step 8 — SELAT-native (x402 via Circle Gateway)
GET /twitter/user/info?userName=…($0.001) — follower social proof, only if a Twitter handle was found. x402 via Circle Gateway. - Optional caller-invoked signal (not a manifest step) — Apollo (via Locus)
POST /apollo/job-postingsbody{"organization_id":"${organizationId}"}($0.00525) — hiring signals. Theorganization_idcomes from the step-1 people-enrichment (or an org-search) result; only invoke it once an org id was captured.
Inputs And Outputs
| Param | Required | Default | Description |
|---|---|---|---|
email | yes | — | Lead email; drives people-enrichment, combined-enrichment, email-verifier, email-enrichment |
domain | no | — | Company domain from the email; drives Abstract lookup, Apollo org-enrichment, Hunter company-enrichment |
organizationId | no | — | Apollo org id from step 1; required for the job-postings step |
twitterHandle | no | — | Twitter/X handle from enrichment data; required for the SELAT-native Twitter step (sent as userName) |
Outputs: a merged JSON object with person (name, title, linkedin_url, location, email_verified, confidence, source), company (name, domain, description, funding, classification.is_ai / is_b2b_saas, buying_signals), and meta (per-call status, cost, phases run). Cross-reference Apollo + Hunter + Abstract for confidence (high = 2+ sources agree).
Gotchas
- Mixed rail: steps 1-7 are MPP on Tempo and need
SELAT_ROUTER_URLset and the router reachable; the SELAT-native Twitter step (step 8) is x402 via Circle Gateway (Gateway-batched). - The old separate expensive AI person-fallback step was merged into step 1: its replacement resolved to the same Apollo
people-enrichmentendpoint with the same params, so a separate fallback call would just repeat step 1. If step 1 finds no person, the Hunter steps (2 and 6) are the remaining person sources. - The product/pricing buying-signal call (formerly Brand.dev
ai/products) has no equivalent among the replacement merchants and was removed from the workflow — a capability gap, not an oversight. - The source skill's free GitHub-stars step is dropped: GitHub's public API is not a payable merchant, so it cannot be expressed as an inert payment step.
- Live prices sum to ≈ $0.083 for all 8 manifest steps (worst case); a typical waterfall (steps 1-4 + the org gap-fill) costs ≈ $0.056. Per-step
maxAmountvalues are ~10x each live price ($0.10–$0.25) — ceilings, not price estimates. - Steps run independently: gate the conditional steps (5-8 and job-postings) on prior results so you do not pay for gap-fill or buying-signal calls on unqualified leads.
- The Abstract Company Enrichment lookup should be skipped for free-email providers (gmail/yahoo/outlook/etc.) to save $0.0063.
- All calls in this waterfall are synchronous — no async polling.
- The job-postings call takes
organization_idin the body (no path substitution); if it is empty the merchant returns an error — only invoke it once step 1 yields an org id.
Validation
--chain basein the probe commands below is only the flagselat-payrequires today — a probe reads a free, chain-independent quote and never settles. A real paid run resolves the settlement chain from your funded Circle Gateway balance, not the manifest.
Probe each endpoint for free (402 challenge, no payment) before a paid run:
selat-pay POST "https://apollo.mpp.paywithlocus.com/apollo/people-enrichment" --body '{"email":"jane@acme.com","reveal_personal_emails":true}' --chain base --probe-onlyselat-pay POST "https://hunter.mpp.paywithlocus.com/hunter/combined-enrichment" --body '{"email":"jane@acme.com"}' --chain base --probe-onlyselat-pay POST "https://hunter.mpp.paywithlocus.com/hunter/email-verifier" --body '{"email":"jane@acme.com"}' --chain base --probe-onlyselat-pay POST "https://abstract-company-enrichment.mpp.paywithlocus.com/abstract-company-enrichment/lookup" --body '{"domain":"acme.com"}' --chain base --probe-onlyselat-pay GET "https://catalog.selat.ai/twitter/user/info?userName=elonmusk" --chain base --probe-only
A successful run prints status=200 for each executed step and a ✓ summary; gated/skipped steps appear as skipped in the run summary.
References
manifest.json— the machine-readable payment recipe this skill runs.references/endpoints.md— merchant / method+path / price / rail table for every step.- selat-pay — https://github.com/SELAT-AI/selat-pay
Files included
- evals/evals.json
- manifest.json
- references/endpoints.md
- SKILL.md

