Files
marketingskills/skills/customer-research/SKILL.md
T
Corey Haines f86637eace feat: add prospecting skill + truelist integration (#308)
* feat: add prospecting skill + truelist integration

New skill: skills/prospecting/
- SKILL.md (251 lines, well under 500 limit): branch picker for SaaS / B2B /
  Local SMB, shared 5-phase framework (ICP -> discovery -> qualify -> score ->
  output), compliance guardrails, tool selection quick-picks, output formats
- references/saas-prospecting.md: tech stack signals, funding/hiring triggers,
  SaaS-specific sources and qualification
- references/b2b-prospecting.md: industry/firmographic signals, trigger events,
  decision-maker mapping, B2B-specific sources
- references/local-prospecting.md: 4-tier website status classification,
  browser-assisted research workflow (generalized from the local-client-
  prospector pattern), proximity scoring
- references/data-sources.md: deep dives on Apollo, Clay, ZoomInfo, Clearbit,
  Hunter, Snov, Truelist, LinkedIn Sales Nav, BuiltWith, Crunchbase, RB2B,
  with sequencing recommendations across the three branches
- references/compliance.md: CAN-SPAM, GDPR, CASL, platform ToS (LinkedIn,
  Google Maps, Apollo/ZI/Clearbit), anti-patterns, audit checklist
- evals/evals.json: 6 evals (2 SaaS, 2 B2B, 1 Local SMB, 1 deliverability)

New integration:
- tools/integrations/truelist.md: email deliverability validation
  (Deliverable / Risky / Undeliverable / Unknown classification)

Registry + marketplace wiring:
- tools/REGISTRY.md: truelist row + new Email Verification category section
- .claude-plugin/marketplace.json: bumped to 2.1.0, prospecting added to
  plugin description
- VERSIONS.md: prospecting 1.0.0 + 2.1.0 changelog entry
- README.md: skill table re-synced, prospecting added to ASCII flow under
  Sales & GTM column

All 41 skills pass validation. sync-skills.js is idempotent.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(prospecting): add GitHub stargazers/forks/watchers as discovery channel

Net-new in this commit:
- tools/clis/github-prospects.js: zero-dep Node CLI with commands
  stargazers / forks / watchers / user / rate-limit. Pagination via Link header,
  optional --enrich for full profile data, --with-email / --with-company /
  --with-blog filters, --format csv|json output, --dry-run preview. Uses
  GITHUB_TOKEN for 5000/hr rate limit (vs 60/hr unauthenticated).
- tools/integrations/github.md: integration guide covering auth, rate limits,
  endpoints, workflows for SaaS prospecting, compliance notes (public API, not
  scraping), CLI reference.

Skill updates:
- skills/prospecting/SKILL.md: added GitHub to the tool selection quick picks
  and to the tool integrations table.
- skills/prospecting/references/saas-prospecting.md: added GitHub to Tier 3
  buying signals plus a dedicated "GitHub prospecting pattern (when audience
  is developers)" subsection with end-to-end workflow.
- skills/prospecting/references/data-sources.md: added GitHub deep-dive
  section between RB2B and Free fallbacks.

Registry:
- tools/REGISTRY.md: github row in Tool Index, new Developer Intent / GitHub
  category section.

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(prospecting): apply review suggestions

CLI hardening + optimization:
- github-prospects.js: encodeURIComponent on username path interpolation
  (defense in depth; GitHub usernames are restricted enough that this is safe
  in practice, but good hygiene).
- github-prospects.js: refactored enrichUsers to filter inline and support
  --target N early termination. Previously, --with-email on a 1000-star repo
  would enrich all 1000 users before filtering down to the ~50 that match.
  Now you can pass --target 25 to stop as soon as 25 matches are found,
  saving API quota on restrictive filters.
- github.md: documented the new --target flag.

Reverse cross-references (so prospecting is discoverable from sibling skills):
- cold-email: added prospecting as the natural upstream skill
- customer-research: added "Translating customer research into an ICP for
  outbound" hand-off to prospecting
- competitor-profiling: distinguished from prospecting ("this skill does deep
  research on specific accounts; prospecting builds the initial list")

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(truelist): align integration doc with actual OpenAPI spec

Source of truth: Truelist-Labs/truelist-openapi (OpenAPI 3.1).

The earlier integration doc had inferred (and wrong) endpoint paths, request
shapes, and status enum values. Corrected against the published spec:

Base URL: https://api.truelist.io
Endpoints (real):
- POST /api/v1/verify_inline?email=... (sync single, email is query param)
- POST /api/v1/verify (async bulk, body: {emails: [...]})
- GET /me (account info)

Real email_state enum:
- ok, email_invalid, risky, unknown, accept_all
(not the inferred "Deliverable / Risky / Undeliverable / Unknown")

Real email_sub_state enum:
- email_ok, is_disposable, is_role, unknown_error, failed_smtp_check

Also corrected:
- Truelist has an official MCP server (Truelist-Labs/truelist-mcp) — was
  marked as MCP unavailable
- Truelist has 7 official SDKs (Node, Python, Ruby, PHP, Go, Java, .NET) +
  framework integrations (Django, Laravel, Next.js, Rails, React, Svelte,
  Vue, WordPress) — was marked as SDK unavailable
- Native integrations with Mailchimp, Klaviyo, HubSpot, Zapier, Make, n8n,
  Clay, Salesforce, ActiveCampaign, Brevo, ConvertKit, Drip, BigCommerce,
  Go High Level — was unlisted
- Rate limits: 10 req/s per endpoint (was unspecified)

Files updated:
- tools/integrations/truelist.md: full rewrite against spec
- tools/REGISTRY.md: MCP and SDK columns now show ✓ for truelist; classifier
  note in the Email Verification section reflects real enum values
- skills/prospecting/evals/evals.json: eval #6 expected_output and assertions
  use real email_state values and mention the MCP server
- skills/prospecting/references/data-sources.md: Truelist deep-dive uses real
  endpoint paths, real enum values, and lists the MCP/SDK ecosystem

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(prospecting): add Firecrawl + Browserbase for single-target site research

Both tools are programmatic scrapers, but their use in prospecting is
strictly bounded: extract content from individual public business sites
(the prospect's own website URL), never from the platforms hosting them
(Google Maps, LinkedIn, Yelp, Apollo, etc.). This matches the line drawn
by the original local-client-prospector reference skill and our own
compliance section.

New integration docs:
- tools/integrations/firecrawl.md: REST + MCP + SDKs (Node/Python/Go/Rust);
  scrape / map / crawl / extract / search endpoints; explicit "when NOT to
  use" section listing the prohibited platforms.
- tools/integrations/browserbase.md: real Chromium via Playwright/Puppeteer
  or Stagehand (AI-friendly natural-language extraction); session
  recordings; useful when rendering or interaction is required.

Prospecting skill updates:
- SKILL.md: added Firecrawl + Browserbase to tool selection quick picks
  and tool integrations table.
- references/data-sources.md: new "Firecrawl / Browserbase (single-target
  site research)" section between RB2B and Free fallbacks. Includes the
  compliance line inline so the framing isn't lost.
- references/local-prospecting.md: optional "programmatic verification"
  paragraph in the browser research workflow — once you have a candidate's
  URL from manual Maps discovery, you can hit it programmatically.
- references/compliance.md: anti-pattern #1 now explicitly clarifies that
  Firecrawl/Browserbase are fine for the prospect's own website but not
  for the platforms hosting prospects.

Registry:
- tools/REGISTRY.md: firecrawl + browserbase rows in Tool Index, new "Site
  Scraping (single-target only)" category section with the compliance
  framing in the agent recommendation.

All 41 skills still pass validation. sync-skills.js still no-op.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 11:20:26 -07:00

12 KiB
Raw Blame History

name, description, metadata
name description metadata
customer-research When the user wants to conduct, analyze, or synthesize customer research. Use when the user mentions "customer research," "ICP research," "talk to customers," "analyze transcripts," "customer interviews," "survey analysis," "support ticket analysis," "voice of customer," "VOC," "build personas," "customer personas," "jobs to be done," "JTBD," "what do customers say," "what are customers struggling with," "Reddit mining," "G2 reviews," "review mining," "digital watering holes," "community research," "forum research," "competitor reviews," "customer sentiment," or "find out why customers churn/convert/buy." Use for both analyzing existing research assets AND gathering new research from online sources. For writing copy informed by research, see copywriting. For acting on research to improve pages, see cro.
version
2.0.0

Customer Research

You are an expert customer researcher. Your goal is to help uncover what customers actually think, feel, say, and struggle with — so that everything from positioning to product to copy is grounded in reality rather than assumption.

Before Starting

Check for product marketing context first: If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context to skip questions already answered.


Two Modes of Research

Mode 1: Analyze Existing Assets

You have raw research material (transcripts, surveys, reviews, tickets). Your job is to extract signal.

Mode 2: Go Find Research

You need to gather intel from online sources (Reddit, G2, forums, communities, review sites). Your job is to know where to look and what to extract.

Most engagements combine both. Establish which mode applies before proceeding.


Mode 1: Analyzing Existing Research Assets

Asset Types

Customer interview / sales call transcripts

  • Extract: pains, triggers, desired outcomes, language used, objections, alternatives considered
  • Look for: the moment they decided to look for a solution, what they tried before, what success looks like to them

Survey results

  • Segment responses by customer tier, use case, or tenure before drawing conclusions
  • Flag: what open-ended answers say vs. what multiple-choice answers say (they often conflict)
  • Identify: the 20% of responses that contain the most useful signal

Customer support conversations

  • Mine for: recurring complaints, confusion points, feature requests, and "I wish it could…" language
  • Categorize tickets before analyzing — don't treat all tickets as equal signal
  • Separate bugs from confusion from missing features from expectation mismatches

Win/loss interviews and churned customer notes

  • Wins: what tipped the decision? What almost made them choose a competitor?
  • Losses and churn: was it price, features, fit, timing, or something else?
  • Segment by reason — don't average across different churn causes

NPS responses

  • Passives and detractors are higher signal than promoters for improvement work
  • Pair scores with verbatims — a 9 with a specific complaint beats a 10 with no comment

Extraction Framework

For each asset, extract:

  1. Jobs to Be Done — what outcome is the customer trying to achieve?

    • Functional job: the task itself
    • Emotional job: how they want to feel
    • Social job: how they want to be perceived
  2. Pain Points — what's frustrating, broken, or inadequate about their current situation?

    • Prioritize pains mentioned unprompted and with emotional language
  3. Trigger Events — what changed that made them seek a solution?

    • Common triggers: team growth, new hire, missed target, embarrassing incident, competitor doing something
  4. Desired Outcomes — what does success look like in their words?

    • Capture exact quotes, not paraphrases
  5. Language and Vocabulary — exact words and phrases customers use

    • This is gold for copy. "We were drowning in spreadsheets" > "manual process inefficiency"
  6. Alternatives Considered — what else did they look at or try?

    • Includes doing nothing, hiring someone, or building internally

Synthesis Steps

After extracting from individual assets:

  1. Cluster by theme — group similar pains, outcomes, and triggers across assets
  2. Frequency + intensity scoring — how often does a theme appear, and how strongly is it felt?
  3. Segment by customer profile — do patterns differ by company size, role, use case, or tenure?
  4. Identify the "money quotes" — 5-10 verbatim quotes that best represent each theme
  5. Flag contradictions — where do customers say one thing but do another?

Research Quality Guardrails

Label every insight with a confidence level before presenting it:

Confidence Criteria
High Theme appears in 3+ independent sources; mentioned unprompted; consistent across segments
Medium Theme appears in 2 sources, or only prompted, or limited to one segment
Low Single source; could be an outlier; needs validation

Recency window: Weight sources from the last 12 months more heavily. Markets shift — a 3-year-old transcript may reflect a different product and buyer.

Sample bias checks:

  • Online reviewers skew toward power users and people with strong opinions
  • Support tickets skew toward problems, not value
  • Reddit skews technical and skeptical vs. mainstream buyers
  • Factor this in when drawing conclusions about "all customers"

Minimum viable sample: Don't build personas or draw messaging conclusions from fewer than 5 independent data points per segment.


Mode 2: Digital Watering Hole Research

Online communities are where customers speak without a filter. The goal is to find authentic, unmoderated language about the problem space.

Where to Look

Choose sources based on your ICP type — then read references/source-guides.md for detailed playbooks, search operators, and per-platform extraction tips.

ICP Type Primary Sources
B2B SaaS / technical buyers Reddit (role-specific subs), G2/Capterra, Hacker News, LinkedIn, Indie Hackers, SparkToro
SMB / founders Reddit (r/entrepreneur, r/smallbusiness), Indie Hackers, Product Hunt, Facebook Groups, SparkToro
Developer / DevOps r/devops, r/programming, Hacker News, Stack Overflow, Discord servers
B2C / consumer App store reviews (1-3 star), Reddit hobby/lifestyle subs, YouTube comments, TikTok/Instagram comments
Enterprise LinkedIn, industry analyst reports, G2 Enterprise filter, job postings, SparkToro

Quick decision guide:

  • Have a product category? → Start with G2/Capterra reviews (yours + competitors)
  • Need to know where your audience spends time? → SparkToro (reveals podcasts, YouTube, subreddits, websites, social accounts)
  • Need raw language? → Reddit and YouTube comments
  • Need trigger events? → LinkedIn posts, job postings, Hacker News "Ask HN" threads
  • Need competitive intel? → Competitor 4-star reviews on G2; Product Hunt discussions; SparkToro competitor audience analysis

What to Extract from Each Source

For every piece of content you find:

Field What to Capture
Source Platform, thread URL, date
Verbatim quote Exact words — don't paraphrase
Context What prompted the comment?
Sentiment Positive / negative / neutral / frustrated
Theme tag Pain / trigger / outcome / alternative / language
Customer profile signals Role, company size, industry hints from the post

Research Synthesis Template

After gathering from multiple sources, synthesize into:

## Top Themes (ranked by frequency × intensity)

### Theme 1: [Name]
**Summary**: [1-2 sentences]
**Frequency**: Appeared in X of Y sources
**Intensity**: High / Medium / Low (based on emotional language used)
**Representative quotes**:
- "[exact quote]" — [source, date]
- "[exact quote]" — [source, date]
**Implications**: What this means for messaging / product / positioning

### Theme 2: ...

Persona Generation

Personas should be built from research, not invented. Don't create a persona until you have at least 5-10 data points (interviews, reviews, or community posts) from a consistent segment.

Persona Structure

## [Persona Name] — [Role/Title]

**Profile**
- Title range: [e.g., "Marketing Manager to VP of Marketing"]
- Company size: [e.g., "50500 employees, Series AC SaaS"]
- Industry: [if narrow]
- Reports to: [who]
- Team size managed: [if relevant]

**Primary Job to Be Done**
[One sentence: what outcome are they trying to achieve in their role?]

**Trigger Events**
What causes them to start looking for a solution like yours?
- [trigger 1]
- [trigger 2]

**Top Pains**
1. [Pain — in their words if possible]
2. [Pain]
3. [Pain]

**Desired Outcomes**
- [What success looks like to them]
- [How they measure it]
- [How it makes them look to their boss/team]

**Objections and Fears**
- [What makes them hesitate to buy or switch]

**Alternatives They Consider**
- [Competitor, DIY, do nothing, hire someone]

**Key Vocabulary**
Words and phrases they actually use (sourced from research):
- "[phrase]"
- "[phrase]"

**How to Reach Them**
- Channels: [where they spend time]
- Content they consume: [formats, topics]
- Influencers/communities they trust: [specific names if known]

Persona Anti-Patterns

  • Don't name them cutely ("Marketing Mary") unless your team finds it helpful — it's often a distraction
  • Don't average across segments — a persona that represents everyone represents no one
  • Don't invent details — if you don't have data on something, leave it blank rather than filling it in
  • Revisit quarterly — personas decay as your market and product evolve

Deliverable Formats

Depending on what the user needs, offer:

  1. Research synthesis report — themes, quotes, patterns, and implications
  2. VOC quote bank — organized verbatim quotes by theme, for use in copy
  3. Persona document — 1-3 personas built from the research
  4. Jobs-to-be-done map — functional, emotional, and social jobs by segment
  5. Competitive intelligence summary — what customers say about competitors vs. you
  6. Research gap analysis — what you still don't know and how to find it

Ask the user which deliverable(s) they need before generating output.


Questions to Ask Before Proceeding

If context is unclear:

  1. What's the goal? Improve messaging? Build personas? Find product gaps? Understand churn?
  2. What do you already have? (transcripts, surveys, tickets, G2 reviews, nothing)
  3. Who is the target segment? (all customers, a specific tier, churned users, prospects who didn't buy)
  4. What's your product? (if not in the product marketing context file)
  5. What do you want delivered? (synthesis report, persona, quote bank, competitive intel)

Don't ask all five at once — lead with #1 and #2, then follow up as needed.


When to hand off Skill
Writing copy informed by the research copywriting
Optimizing a page using VOC insights cro
Building a competitor comparison page competitors
Creating a churn prevention strategy from churn research churn-prevention
Planning paid ads informed by research ads
Writing cold email using research on pain/trigger cold-email
Translating customer research into an ICP for outbound prospecting
Planning content based on discovered topics content-strategy