# Gtm Pipeline:demo

> Generate a demo lead list of ~10 enriched contacts with personalized message examples. Use when a demo is requested, a webhook prompt describes a target audience, or someone asks to "create a demo for [client]". Enforces demo mode restrictions (email only, no phone, ~10 contacts). Chains people-search → contact-filter → people-enrichment → (optional signal-search) → message generation. Pass `--wi…

- **Type:** Skill
- **Install:** `agentstack add skill-keinsaasforever-gtm-pipeline-skills-gtm-demo`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [keinsaasforever](https://agentstack.voostack.com/s/keinsaasforever)
- **Installs:** 0
- **Category:** [Communication](https://agentstack.voostack.com/c/communication)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [keinsaasforever](https://github.com/keinsaasforever)
- **Source:** https://github.com/keinsaasforever/gtm-pipeline-skills/tree/main/skills/gtm-demo
- **Website:** https://www.keinsaas.com/de/research-agent

## Install

```sh
agentstack add skill-keinsaasforever-gtm-pipeline-skills-gtm-demo
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Demo

Generate a demo lead list of ~10 enriched contacts with personalized message examples, triggered by a webhook prompt.

**Read `~/.claude/skills/gtm-pipeline/_shared/conventions.md` before executing.**

---

## When to Use

- Webhook trigger: user submits a free demo form describing their target audience
- Goal: prove the AI agent writes authentic, non-generic outreach using real leads
- Scope: ~10 contacts, enriched with LinkedIn + email, 2–4 message examples

## Demo Restrictions

- **No phone enrichment** — email only
- **~10 contacts** (request 10–15, expect enrichment drop-off)
- Message generation is optional but recommended
- **Signal search is opt-in** — off by default. Enable via `--with-signals` flag or explicit user request. See Step 5.5.

---

## Step 1 — Parse the Prompt & Ask Discovery Questions

The webhook prompt describes the user's target audience. Before running anything, extract or ask for:

**Must have:**
- What do you sell / offer?
- Who is your ideal customer? (industry, role, company size, location)
- What's your value proposition?
- What tone? (formal vs. casual, examples if possible)
- Is this for recruiting OR selling to customers?

**If not in the prompt, infer or ask:**
- Target job titles
- Target location
- Target company size or type

Do NOT proceed to search until ICP is clear enough to build a meaningful filter.

**Save ICP to:** `{client-slug}-gtm/context/icp.md`

---

## Step 2 — Create Working Directory

Create the `{client-slug}-gtm/` directory structure as defined in `conventions.md`. Write the ICP definition to `context/icp.md`.

---

## Step 3 — People Search (10 contacts)

Use the **people-search** skill to find ~10–15 contacts.

**Provider selection for demo:**
- Prefer **BetterContact Lead Finder** or **FullEnrich Finder** — both return LinkedIn URLs directly, needed for email enrichment
- If no company list (persona-based prompt), use **Parallel FindAll** or **BC Search**

**Key fields to collect:**
```
full_name, first_name, last_name,
job_title, company_name, company_domain,
linkedin_profile_url, location
```

Follow the people-search execution protocol: sandbox → test → review → run.

---

## Step 4 — Contact Filter (ICP Ranking)

Run **contact-filter** on the 10–15 contacts found. Even small batches benefit from ICP ranking — it ensures the enrichment step focuses on the best-fit contacts.

- Applies job tier, industry tier, location tier, and company size classification
- Rejects hard non-ICP contacts
- Ranks passed contacts by priority
- Output: `csv/intermediate/contacts_filtered.csv`

For demos: use a relaxed hard-reject threshold (allow tiers 1–5 to pass), prioritize ranking over filtering.

---

## Step 5 — People Enrichment (Email Only)

Run **people-enrichment** on the filtered contacts. **Demo mode: email only, no phone.**

Recommended flow:
1. FullEnrich v2 (email) — all contacts
2. Pipe0 waterfall — for FE misses only

Additional enrichment for message personalization (if available):
- LinkedIn headline and summary (from LinkedIn scrape via PhantomBuster)
- Recent LinkedIn posts (2–3 per contact) — significantly improves message quality

**Minimum viable fields for message generation:**
```
name, job_title, company_name, linkedin_profile_url,
headline (optional), summary (optional), recent_posts (optional)
```

---

## Step 5.5 — Signal Search (Optional)

**Default: OFF.** Enable when:
- The user explicitly asks for signal-anchored messages
- The webhook prompt mentions buying triggers (funding, hiring, transformation, recent news)
- The client's offering depends on timing signals to make sense (e.g. "we help post-Series-A companies scale ops")
- A `--with-signals` flag is passed to the demo invocation

**Cost note:** adds ~$0.01–0.05 per unique company (web search + scoring). On a 10-contact demo, that's typically 5–10 unique companies, so = 70 signal anchored in real recent news is the strongest hook the demo can produce.

### Generation Process

1. Write a client-specific system prompt (save to `prompts/message_prompt.md`)
2. Generate 2–4 samples — include contacts with and without LinkedIn posts
3. Review against quality checklist above
4. If issues found, refine the system prompt and regenerate
5. **Only batch generate once quality is approved**

### System Prompt Template (key sections)

```
- Client context: what they sell, who they target, their value prop, tone
- Forbidden rules: no profile repetition, no generic flattery
- Message structure: hook → bridge → offer → CTA
- Hook examples: with posts / without posts
- Character limit: 320–450
```

---

## Step 7 — Output

Deliver:
1. **CSV** at `csv/output/contacts_enriched.csv`: lead data + generated messages
2. **Google Sheet** (optional): formatted for easy review

### Output CSV Columns

```
name, first_name, last_name, location, headline, summary,
linkedin_url, email, email_status,
company_name, job_title,
post_1_content, post_1_date,
post_2_content, post_2_date,
generated_message, char_count, has_posts
```

Messages saved separately to `csv/output/messages.csv`.

---

## Quality Checklist (Before Delivering)

- [ ] Messages feel personal, not templated
- [ ] No profile info repetition
- [ ] Clear value proposition in every message
- [ ] Proper formatting (line breaks, character count 320–450)
- [ ] Hook differs between contacts (no copy-paste structure)
- [ ] All data fields populated correctly
- [ ] Client-specific context incorporated

---

## Trigger Context

**Webhook (demo form):** Free demo trigger — user describes their ICP in a text prompt. Run this skill with ~10 contacts and 2–4 message samples.

**Stripe payment (full list):** After successful payment, run the full pipeline via the `pipeline` skill. See pipeline skill for orchestration.

---

## What's Missing (To Document)

- LinkedIn post scraping via PhantomBuster API (launch, poll, download)
- Automated webhook integration (currently manual trigger)
- Stripe payment trigger integration

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [keinsaasforever](https://github.com/keinsaasforever)
- **Source:** [keinsaasforever/gtm-pipeline-skills](https://github.com/keinsaasforever/gtm-pipeline-skills)
- **License:** MIT
- **Homepage:** https://www.keinsaas.com/de/research-agent

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-keinsaasforever-gtm-pipeline-skills-gtm-demo
- Seller: https://agentstack.voostack.com/s/keinsaasforever
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
