Gtm pipeline
Skill vivekkhimani/gtm-tools-template/.agents/skills/gtm-pipeline
Agent-first GTM operating manual template: positioning, lead pipeline, outreach, playbooks, investor materials + 22 agent skills
npx -y skills add vivekkhimani/gtm-tools-template --skill gtm-pipelineAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Plan and execute a full GTM lead generation pipeline. Use when a client needs end-to-end pipeline orchestration — from company discovery to enriched contacts. Determines workflow (Company-First vs Signal-First), assesses starting data, plans skill sequence with cost estimates, and chains skill outputs. Also triggers on "run the pipeline", "start pipeline for [client]", "full pipeline", "Stripe payment trigger".
SKILL.md
10.3 KB, as published. Nobody here has run it
Pipeline
Plan and orchestrate a full GTM pipeline — from discovery to enriched contact list. Determines which skills to run, in what order, based on client requirements and starting data.
Read .agents/skills/_shared/conventions.md before executing.
When to Use
- Client needs a complete lead generation pipeline (not just one skill)
- You need to determine the right workflow based on what data exists
- Stripe payment trigger: execute full pipeline
- Any request that spans multiple GTM skills
Step 1 — Assess Starting Point
Ask: What data does the user have?
| Starting Point | Available Data | Next Action |
|---|---|---|
| Nothing (just an ICP description) | ICP prompt only | Determine workflow → full pipeline |
| Company list | CSV with company names/domains | Skip company-search → company-enrichment |
| Contacts CSV | Names + companies, missing contact info | Skip to people-enrichment |
| Signal data | Companies found via signals | Skip to company-enrichment/scoring |
| Demo webhook | ICP prompt, ~10 contacts scope | Run demo skill |
| SN search URL | Sales Navigator saved search | Run company-search (SN+PB) → continue |
Step 2 — Determine Workflow
Company-First Workflow (Finite Markets)
When: Client provides a company list, known industry, or uses Sales Navigator. The market is bounded — you know (or can enumerate) the target companies.
Full sequence:
1. Company Search → csv/input/companies_raw.csv
2. Company Enrichment → csv/intermediate/companies_enriched.csv
3. ICP Scoring → csv/intermediate/companies_scored.csv (credit-saving gate: icp_score >= 70)
4. Signal Search → csv/intermediate/signals.csv (runs on gated set; doesn't read icp_score)
5. People Search → csv/intermediate/contacts_found.csv
6. Contact Filter → csv/intermediate/contacts_filtered.csv
7. People Enrichment → csv/output/contacts_enriched.csv
The icp_score >= 70 gate at step 3 is for credit savings only — signal-search itself doesn't depend on the ICP score. Skip the gate if you want to score signals on the full enriched set.
Signal-First Workflow (Infinite Markets)
When: No company list — discover companies via buying intent signals. The market is unbounded — you find companies by their behavior.
Full sequence:
1. Signal-based Discovery → companies found via signals (FindAll, Firecrawl Agent, LinkedIn Jobs)
writes csv/input/companies_raw.csv
2. Company Enrichment → csv/intermediate/companies_enriched.csv
3. ICP Scoring → csv/intermediate/companies_scored.csv (optional gate)
4. People Search → csv/intermediate/contacts_found.csv
5. Contact Filter → csv/intermediate/contacts_filtered.csv
6. People Enrichment → csv/output/contacts_enriched.csv
In Signal-First, signal-search runs on raw company names from the discovery channels (no enrichment needed yet). Company enrichment and ICP scoring happen after to filter the discovered set.
Shortcut Flows
| Starting Point | Skills Invoked |
|---|---|
| Demo webhook (ICP prompt only) | demo skill (people-search → contact-filter → people-enrichment → messages, 10 contacts, no phone) |
| Company list provided | company-enrichment → (optional: signal-search) → people-search → contact-filter → people-enrichment |
| Contacts CSV provided | people-enrichment only |
| Persona prospecting (no companies) | people-search (persona mode) → contact-filter → people-enrichment |
| Full pipeline (Stripe payment) | Full Workflow 1 or 2 based on requirements |
Step 3 — Clarify Requirements
Before executing, confirm with the user:
ICP Definition
- Industry / vertical
- Target roles / job titles
- Company size (headcount range)
- Location / geography
- Revenue range (if relevant)
- Exclusions (e.g. no software companies, no enterprise)
Scope & Budget
- How many contacts needed? (10 for demo, 100+, 500+?)
- Credit budget constraints?
- Enrichment scope: email only? email + phone?
- Message generation needed?
Trigger Context
- Demo mode? (no phone, ~10 contacts)
- Stripe payment? (full pipeline, budget confirmed)
- Manual request? (flexible scope)
Save ICP to {client-slug}-gtm/context/icp.md.
Step 4 — Plan the Sequence
Based on workflow + starting point, build the execution plan:
- List which skills run, in what order
- Recommend providers at each step (with costs from skill docs)
- Estimate total credits and cost across all steps
- Identify n8n flow customizations needed:
- ICP Google Doc (for ICP scoring in company-enrichment)
- Offering section (for signal scoring in signal-search)
- Present plan for user approval before executing anything
Cost Estimation Template
## Pipeline Cost Estimate
### Step 1: Company Search
- Provider: [recommended]
- Records: ~{n}
- Est. cost: {credits} credits (~${cost})
### Step 2: Company Enrichment
- Provider: [recommended]
- Records: ~{n}
- Est. cost: {credits} credits (~${cost})
### Step 3: ICP Scoring
- LLM: [ask user which model]
- Records: ~{n}
- Est. cost: ~${cost} (LLM token pricing)
### Step 4: Signal Search (companies with icp_score >= 70 if gating)
- Sources: [which of the 4 sources]
- LLM for scoring: [ask user]
- Records: ~{n} (est. {pct}% pass ICP gate, or full set if no gate)
- Est. cost: {credits} credits + ~${llm_cost}
### Step 5: People Search
- Provider: [recommended]
- Records: ~{n} contacts across ~{m} companies
- Est. cost: {credits} credits (~${cost})
### Step 6: Contact Filter
- No API cost — local classification only
- Records: ~{n} contacts in → ~{n_filtered} contacts out (est. {pct}% pass ICP filter)
- ICP dimensions: job tier, industry tier, location tier, company size
### Step 7: People Enrichment
- Email provider: [recommended]
- Phone provider: [recommended or "skip — demo mode"]
- Records: ~{n}
- Est. cost: {credits} credits (~${cost})
### Total
- Credits: ~{total_credits}
- Cost: ~${total_cost}
Step 5 — Execute and Chain
Invoke skills in order. After each step:
- Review output quality — hit rates, data completeness, issues
- Log to run_log.md — timestamp, provider, records, credits, duration
- Log provider performance — to
context/provider_performance.md - Chain output → input — each skill's output CSV becomes the next skill's input
- Decide whether to proceed — if quality is poor, flag and discuss before continuing
Chaining Rules
| Skill Output | Next Skill Input |
|---|---|
csv/input/companies_raw.csv | company-enrichment reads this |
csv/intermediate/companies_enriched.csv | ICP scoring reads this |
csv/intermediate/companies_scored.csv | signal-search reads this (optional credit-saving gate: icp_score >= 70) |
csv/intermediate/signals.csv | Used for outreach context, not a direct input |
csv/intermediate/contacts_found.csv | contact-filter reads this |
csv/intermediate/contacts_filtered.csv | people-enrichment reads this |
csv/output/contacts_enriched.csv | Final output — ready for outreach or message generation |
After Each Step
Print the standardized Run Summary (from conventions.md) and ask:
- Results look good? Proceed to next step?
- Any issues to address first?
- Want to adjust providers or parameters?
Step 6 — Customize Per Client
For n8n-backed steps, customize:
ICP Scoring (company-enrichment Phase 2)
- Create/connect a Google Doc with the client's ICP definition
- Or write to
context/icp.mdand use that as the reference - Adjust score threshold (default: >= 70) based on selectivity
Signal Assessment (signal-search)
- Replace the offering section in the Signal Assessment user prompt with the client's value proposition
- Adjust the web search objective query for client-specific signal types
- Adjust Firecrawl crawl prompt if the client's signals differ from the default
Working Directory
The pipeline creates and manages the full directory structure:
{client-slug}-gtm/
├── context/
│ ├── icp.md
│ └── provider_performance.md
├── prompts/
│ └── message_prompt.md (demo only)
├── csv/
│ ├── input/
│ │ ├── companies_raw.csv
│ │ └── contacts_raw.csv
│ ├── intermediate/
│ │ ├── companies_enriched.csv
│ │ ├── companies_scored.csv
│ │ ├── signals.csv
│ │ ├── contacts_found.csv
│ │ ├── contacts_filtered.csv
│ │ └── request_ids.json
│ └── output/
│ ├── contacts_enriched.csv
│ └── messages.csv (demo only)
└── run_log.md
Decision Logic Summary
IF demo mode:
→ Run demo skill directly
IF user has contacts CSV:
→ people-enrichment only
IF user has company list:
→ company-enrichment → (optional: signal-search) → people-search → people-enrichment
IF user has nothing (just ICP):
→ Ask: Company-First or Signal-First?
→ Company-First: company-search → company-enrichment → signal-search → people-search → contact-filter → people-enrichment
→ Signal-First: signal-search (discovery) → company-enrichment → people-search → contact-filter → people-enrichment
IF paid trigger (e.g. Stripe webhook):
→ Full pipeline based on workflow determination above
What's Missing (To Document)
- Payment trigger integration (e.g. Stripe webhook → pipeline invocation)
- Automated webhook integration for demo triggers
- Orchestration platform (e.g. n8n) integration for creating client-specific flow copies
- Pipeline recovery: resuming a partially completed pipeline from the last successful step
- Cost tracking dashboard / running totals across multiple pipeline runs