A GTM Engineer's Claude Code Skillset Tour: 8 APIs, No SaaS
The open-source 8-API GTM skillset that replicates Clay, Apollo, Instantly and Smartlead. 5-8x cost reduction at volume.
A popular post on r/gtmengineering this week: someone open-sourced their GTM setup as a Claude Code skillset bundling 8 APIs with no SaaS subscriptions. The point: a GTM engineer in 2026 can replicate most of what Clay/Apollo/Instantly/Smartlead do as a local skillset, for the cost of underlying API calls.
Here is the anatomy of that kind of skillset and where each piece lives.
The 8-API Skillset
Typical stack in one ~/.claude/skills/gtm folder:
- Scavio — Google + Reddit + YouTube signals per target account
- Apollo — contact identity (name, email, title)
- Hunter — email verification before send
- HubSpot / Salesforce API — CRM write-back
- Gmail / Outlook API — send + thread tracking
- OpenAI / Anthropic — drafting + classification
- Slack — reply notifications
- Airtable / Notion — lead database
None of this requires a visual workflow tool. Claude Code orchestrates the whole pipeline with a natural-language prompt, and the skill metadata tells it which tools exist and when to call them.
Skill Folder Shape
~/.claude/skills/gtm/
├── skill.md # description + when to invoke
├── src/
│ ├── scavio.ts # search per account
│ ├── apollo.ts # contact enrichment
│ ├── hunter.ts # email verify
│ ├── crm.ts # hubspot read/write
│ ├── draft.ts # LLM compose
│ ├── send.ts # gmail send
│ └── loop.ts # orchestrator
└── prompts/
├── draft-opener.md
└── classify-reply.mdThe Orchestrator
The loop.ts file ties everything together. Claude Code calls it once per session; the loop pulls contacts, enriches, drafts, queues for send.
export async function runGtmLoop({ limit = 50 }: { limit?: number }) {
const contacts = await crm.getContactsToContact(limit);
for (const contact of contacts) {
const signals = await scavio.liveSignalsFor(contact.company);
const enriched = await apollo.enrich(contact.email);
const verified = await hunter.verify(enriched.email);
if (!verified) continue;
const draft = await llm.draftOpener({ contact, signals, enriched });
await crm.queueDraft(contact.id, draft);
}
}Why This Beats Clay
Clay is a great product. It's also $800-5000/month, locks you into its workflow UI, and every new field is a per-row credit. A Claude Code skillset calling the underlying APIs directly costs whatever the APIs cost — nothing on top. For a team sending 10-20k emails/month, the difference is $10k+/year.
The tradeoff is real: you lose the Clay UI, the templates, and the non-engineer accessibility. For GTM engineers comfortable in a terminal, the tradeoff is favorable. For non-technical RevOps teams, Clay still wins on time-to-ship.
Cost Per Contact
- Scavio signals: ~$0.003
- Apollo enrichment: ~$0.05
- Hunter verify: ~$0.03
- LLM drafting: ~$0.02
- Total: ~$0.10 per contact
vs Clay at ~$0.50-0.80 per similar-depth enrichment. 5-8x cost reduction at volume.
Full open-source skillset is referenced in the GTM engineer stack solution. Clone it, plug in your keys, run.