Template. Replace placeholder values like {{YOUR_NAME}}, {{CONTENT_DIR}}, etc. with your own before using.

Marketing

Dream-100 Prospecting

Deep-research 5-10 LinkedIn prospects in parallel using AI agents. Pulls company intel, competitors, tech stack, funding, headcount, news, and case study matching — then writes personalized outreach using a 4-beat message framework.

MCP Required. This skill needs Serper, Exa, Apify (optional) to run.

Save to ~/.claude/skills/dream-100/SKILL.md
SKILL.md
---
name: dream-100
description: "Deep-research prospecting on LinkedIn contacts. Parallel agent research producing sales rep reports: company intel, competitors, tech stack, funding, headcount, news, case study matching, personalized outreach drafting. Triggers on: dream 100, prospect research, linkedin research, sales research, contact research."
---

# Dream-100 — Deep Prospect Research

## Setup

This skill requires 3 MCP servers connected to Claude Code:

- **Serper** (required) — Google Search + News. Get an API key at serper.dev.
- **Exa** (required) — AI-powered web search. Get an API key at exa.ai.
- **Apify** (optional) — LinkedIn scraping + BuiltWith tech stack detection. Falls back to Serper if unavailable.

After copying this file, save it to `~/.claude/skills/dream-100/SKILL.md`.

Then create a case study reference file at `~/.claude/skills/dream-100/references/case-study-matching.md` — a template is included at the bottom of this file.

Finally, replace `{{SKILL_DIR}}` below with your actual skill path (e.g., `/Users/yourname/.claude/skills/dream-100`).

---

## Step 0 — Intake

Use `AskUserQuestion` to collect:

**Q1: LinkedIn URLs** — 5-10 profile URLs (`linkedin.com/in/`). Reject company pages. Strip tracking params.

**Q2: Research Depth**

| Depth | Time | Includes |
|-------|------|----------|
| **Quick** | ~1 min | Contact, company basics, 2 competitors, case study match |
| **Standard** | ~2-3 min | Quick + tech stack, funding, headcount, news, competitor differentiation |
| **Deep** | ~5-6 min | Standard + LinkedIn content, 4 competitors, job postings, G2 reviews, decision makers, content themes |

Default: Standard

**Q3: Custom context (optional)** — Product/service, angle, ICP criteria.

---

## Step 1 — Verify Tools

**Required:** `mcp__serper__google_search`, `mcp__serper__google_search_news`, `mcp__exa__web_search_exa`

**Preferred:** `mcp__apify__harvestapi--linkedin-profile-scraper`, `mcp__apify__builtwith--builtwith-official-technology-scraper`

If Serper AND Exa unavailable → stop.

Load references (pass file paths to agents, not contents):
- `{{SKILL_DIR}}/references/case-study-matching.md`

---

## Step 2 — Spawn Research Agents

**1 agent per URL**, all parallel. Config: `general-purpose`, `bypassPermissions`

### Agent Prompt Template

```
You are a Dream-100 research agent. Research ONE LinkedIn contact.

Research Depth: {research_depth}
- Quick: Skip B-E. Do A, F (2 competitors only), H, I.
- Standard: All steps A-I.
- Deep: All steps A-I + J-O.

Target: {url}
Context: {custom_context}

## Steps

### A. Contact & Company Info

If Apify available:
  `mcp__apify__harvestapi--linkedin-profile-scraper` with {"urls": ["{url}"]}

If Apify unavailable, use Serper:
  - `"{url_slug} linkedin"` — parse snippet for name, title, company
  - `"{company_name} website"` — find domain
  - `"{company_name} site:linkedin.com/company/"` — find company page

Extract: full name, job title, company name, company domain, company LinkedIn URL.

### B-E. Run in Parallel (Standard+)

Steps B, C, D, E are independent — execute all queries concurrently.

### B. Tech Stack

If BuiltWith available:
  `mcp__apify__builtwith--builtwith-official-technology-scraper` with {"startDomains": ["{domain}"]}

If unavailable, Serper:
  - `"{company_name} tech stack"`
  - `"{domain} technologies"`

Categorize into:
- **CRM** (Salesforce, HubSpot, Pipedrive, etc.)
- **Sales/outbound** (Outreach, Salesloft, Apollo, Instantly, etc.)
- **Marketing automation** (Marketo, Pardot, Mailchimp, etc.)
- **Analytics** (Google Analytics, Mixpanel, Amplitude, FullStory, etc.)
- **Other notable** (Stripe, Segment, Intercom, etc.)

If no CRM or sales tools detected, note as **opportunity**.

### C. Funding

Serper queries:
- `"{company_name}" funding raised`
- `"{company_name}" site:techcrunch.com OR site:crunchbase.com`
- `"{contact_name}" {company_name} investors`

Extract:
- Total funding raised (or "bootstrapped" if none)
- Latest round (amount, date, series)
- Key investors
- Valuation if available

### D. Headcount

Serper + Exa queries:
- `"{company_name}" employees site:linkedin.com`
- `"{company_name}" team size hiring`
- `"{company_name}" careers jobs`

Extract:
- Current headcount (or estimate range)
- Growth trajectory (YoY %, "grew from X to Y")
- Which departments are hiring
- Notable hires mentioned in news

### E. News

Serper News:
- `"{company_name}"` (tbs: "m" for past month, "y" for past year if no recent)
- `"{contact_name}" {company_name}`

Extract 3-5 items: headline, date, key takeaway (1 sentence).

### F. Company Intelligence

Serper + Exa for:
1. **Problem they solve** — 1 sentence
2. **How they solve it / unique approach** — 1 sentence
3. **2 competitors** — Search: `"{company_name} competitors"`, `"{company_name} alternatives"`
   - Find each competitor's LinkedIn company page
4. **TAM** — 2 lines, cite source. Search: `"{industry} market size"`

### G. Competitor Differentiation (Standard+)

For each competitor, research:
- Target market
- Key differentiator vs prospect
- Why choose competitor over prospect
- Why choose prospect over competitor

Queries:
- `"{competitor_name}" vs "{company_name}"`
- `"{competitor_name}" features pricing`
- `"{competitor_name}" target market`

### H. Case Study Matching

Use the case study data from the reference (loaded in Step 1).
Match based on: industry, company stage, deal size, audience reachability.

Output: case study name, match reason (1 sentence), key metric, URL.

### I. Save Results
Save to ~/Downloads/dream100_result_{slug}.json

## Deep Research Additions (Deep only)

Steps J, L, M, N, O are independent — execute in parallel. Step K depends on F.

### J. LinkedIn Content
Serper: "{contact} site:linkedin.com/posts"
Extract: themes, tone, engagement, notable posts.

### K. Expanded Competitors (4 total)
Add 2 more competitors with funding, headcount, pricing, key differences.

### L. Job Postings
Serper: "{company} careers site:linkedin.com", "{company} hiring site:greenhouse.io"
Extract: roles, seniority, what it signals about priorities.

### M. G2/Reviews
Serper: "{company} site:g2.com", "{company} reviews"
Extract: rating, praise, complaints.

### N. Decision Makers
Serper: "{company} VP Sales OR CRO site:linkedin.com"
Extract: other execs (name, title, LinkedIn).

### O. Content Themes
Exa: "{company} blog"
Extract: topics, positioning, target audience.

## Rules
- Run autonomously, no questions
- Save JSON even on partial failure (null + note for failed fields)
- 4 second max-time on curl calls
- No direct LinkedIn scraping — use Apify or Serper cached results only
```

### JSON Output Schema

```json
{
  "contact": {
    "name": "Full Name",
    "title": "Job Title",
    "linkedin_url": "https://linkedin.com/in/...",
    "company": "Company Name",
    "company_domain": "company.com",
    "company_linkedin": "https://linkedin.com/company/..."
  },
  "tech_stack": {
    "crm": ["HubSpot"] or ["not found"],
    "sales_outbound": ["Outreach", "Apollo"] or ["not found"],
    "marketing_automation": ["Marketo"],
    "analytics": ["GA4", "Mixpanel"],
    "other_notable": ["Stripe", "Segment"]
  },
  "funding": {
    "total_raised": "$3.2M" or "Bootstrapped",
    "latest_round": { "amount": "$3.2M", "date": "2025-03", "series": "Seed" },
    "investors": ["Investor A", "Investor B"],
    "valuation": "$X" or "unknown"
  },
  "headcount": {
    "current": "15-30 employees",
    "growth": "+200% YoY (from 5 to 15)",
    "hiring_departments": ["Engineering", "Sales"],
    "notable_hires": ["Jane Doe joined as CRO (Nov 2025)"]
  },
  "recent_news": [
    { "headline": "Company Raises $3.2M Seed", "date": "2025-03-11", "takeaway": "Funding to scale core product" }
  ],
  "intelligence": {
    "problem_solved": "One sentence describing the problem.",
    "unique_approach": "One sentence describing how they solve it differently.",
    "competitors": [
      {
        "name": "Competitor Name",
        "linkedin_url": "https://linkedin.com/company/...",
        "target_market": "Who they sell to",
        "key_differentiator": "What makes them different",
        "why_choose_them": "Reason a buyer picks the competitor",
        "why_choose_prospect": "Reason a buyer picks the prospect instead"
      }
    ],
    "tam": "Market size and growth rate.\nSource citation."
  },
  "case_study_match": {
    "name": "Case Study Name",
    "reason": "Why this case study is relevant to this prospect",
    "key_metric": "The most compelling result to reference",
    "url": "https://yoursite.com/case-study/..."
  },
  "deep_research": {
    "linkedin_content": {
      "themes": ["topic1", "topic2"],
      "tone": "thought leader / casual / technical",
      "engagement": "high / medium / low",
      "notable_posts": ["Description of notable post"]
    },
    "expanded_competitors": [
      { "name": "Competitor 3", "funding": "$X", "headcount": "X", "pricing": "...", "key_difference": "..." }
    ],
    "job_postings": {
      "roles_hiring": ["Senior Backend Engineer", "AE"],
      "priorities_signal": "What their hiring tells you about their priorities",
      "team_growth_areas": ["Engineering", "Sales"]
    },
    "reviews": {
      "g2_rating": "4.5/5",
      "common_praise": ["What users love"],
      "common_complaints": ["What users complain about"]
    },
    "other_decision_makers": [
      { "name": "Name", "title": "Title", "linkedin_url": "..." }
    ],
    "content_themes": {
      "blog_topics": ["Topic 1", "Topic 2"],
      "messaging_positioning": "How they position themselves",
      "target_audience": "Who their content speaks to"
    }
  }
}
```

---

## Step 3 — Aggregate Results

Read `~/Downloads/dream100_result_*.json` files. Check for failures. Offer to retry failed contacts.

---

## Step 4 — Generate Report

Save to `~/Downloads/dream100_report_{timestamp}.md`

For each contact include:
- Quick Reference Card (LinkedIn, company, case study match)
- Funding & Headcount tables
- Tech Stack (flag opportunities)
- Recent News
- Company Intelligence + Competitor Differentiation
- Outreach Notes (case study angle, tech angle, competitive landscape, pain point, funding context)

---

## Step 5 — Present Summary

Show summary table:

| # | Contact | Company | Funding | Headcount | Growth | CRM | Case Study |
|---|---------|---------|---------|-----------|--------|-----|------------|

Prioritize by: funding stage, growth rate, CRM gaps, recent GTM hires.

Ask: **"Want me to draft personalized outreach messages? If yes, tell me your offer."**

---

## Step 6 — Draft Messages (Optional)

### 6A. Collect Offer
Ask for specific offer (e.g., "Free audit", "$1 to start", "3 meetings or don't pay").

### 6B. Write Messages — 4 Beats

Each message flows like a **thought you're sharing**, not a pitch you're delivering.

---

#### Beat 1: Strategic Observation (not surface-level research)

Open with an insight about their business that shows you understand their **positioning**, not just their facts.

**Bad (surface-level):**
> "Saw you raised $3.2M from General Catalyst — congrats!"

**Good (strategic):**
> "The thing that stood out about {company} isn't the technology — it's the {unique_positioning}. Everyone else in {industry} sells '{common_pitch}.' You're selling '{their_differentiated_pitch}.' That's a different conversation entirely."

---

#### Beat 2: Why It Matters (the "so what")

Connect the observation to a real challenge or opportunity they face. Show you understand their competitive landscape.

**Example:**
> "{competitor_1} has ${competitor_1_funding}, {competitor_2} just closed ${competitor_2_funding}. Both are still pitching {commodity_angle}. Feels like there's a window here before they figure out how to copy the {prospect_unique_angle}."

---

#### Beat 3: Case Study as Parallel (not proof point)

Reference the matched case study as a **parallel situation**. It should feel like "this reminded me of..." not "we did this for..."

**Bad (salesy):**
> "We worked with {case_study_company} and got them {metric}."

**Good (woven in):**
> "We helped {case_study_company} ({what_they_have_in_common}) hit {metric} by leading with their differentiation instead of feature lists. Same playbook seems relevant."

**Good (even more natural):**
> "Reminds me of {case_study_company} — same energy, same '{positioning_similarity}' angle. We ran their outbound and it turned into {result}, which helped {business_outcome}."

---

#### Beat 4: Offer + Direct Meeting Ask

State the offer briefly, then ask directly for the meeting. No soft CTAs.

**Bad (soft):**
> "Happy to share more if helpful. Worth a look?"

**Good (direct):**
> "If {service_area} is on your radar, happy to walk through how we'd approach it. Worth 15 minutes to see if it fits?"

**Good (even more direct):**
> "Would 15 minutes make sense to see if something similar could work for {company}?"

---

### Full Example Message

**Subject:** {2-4 word lowercase reference to their positioning}

**Body:**

{first_name},

The thing that stood out about {company} isn't the {obvious_thing} — it's the {unique_positioning}. Everyone else in {industry} sells "{common_pitch}." You're selling "{their_differentiated_pitch}." That's a different conversation entirely.

{competitor_1} has ${funding}, {competitor_2} just closed ${funding}. Both are still pitching {commodity_angle}. Feels like there's a window here before they figure out how to copy the {unique_angle}.

We helped {case_study_company} ({what_they_have_in_common}) hit {key_metric} by leading with their differentiation instead of feature lists. Same playbook seems relevant.

Worth 15 minutes to see if {service_area} makes sense for {company} right now?

— {your_name}

### Message Format

**Subject:** 2-4 words, lowercase, references positioning

**Body:** ~150 words max
- Beat 1 (2-3 sentences)
- Beat 2 (1-2 sentences)
- Beat 3 (2-3 sentences)
- Beat 4 (1-2 sentences)

### 6C. Present for Approval
Show messages with research variables used and case study reasoning.

### 6D. Save to Report
Append messages to report file.

---

## Message Rules

1. Build like a thought, not a pitch
2. Strategic insight > surface facts
3. Case studies = parallels ("reminds me of..."), not proof points
4. Breathing room between beats
5. Direct meeting ask ("Worth 15 minutes?")
6. No fluff, no fake personalization
7. Match their sophistication — peer, not vendor
8. Under 150 words
9. Subject: 2-4 words, lowercase

---

## Reference File: case-study-matching.md

Save the content below to `~/.claude/skills/dream-100/references/case-study-matching.md` and fill in your own case studies.

```
# Case Studies — Agent Reference

Match prospects by industry similarity. Pick the closest match and explain WHY it's relevant.

| # | Company | Industry | What They Do | Website | Case Study URL |
|---|---------|----------|-------------|---------|----------------|
| 1 | {company_1} | {industry} | {one-line description} | {domain} | {case_study_url} |
| 2 | {company_2} | {industry} | {one-line description} | {domain} | {case_study_url} |
| 3 | {company_3} | {industry} | {one-line description} | {domain} | {case_study_url} |

## Key Results to Reference

- **{company_1}**: {headline metric, e.g., "102 opportunities, 2.1% reply rate"}
- **{company_2}**: {headline metric}
- **{company_3}**: {headline metric}

## Matching Priority

1. **Exact industry match** — Same vertical, same problems
2. **Adjacent vertical** — Similar business model or sales motion
3. **Similar company stage** — e.g., funded startup to funded startup
4. **Similar deal size** — High-ticket ($20K+) vs. volume play
5. **Hard-to-reach audience** — SMBs, restaurants, non-tech buyers
6. **Default** — Your most universal case study that works for any B2B company

## What to Output

For the matched case study, provide:
- Case study name
- Industry match reason (1 sentence)
- The most relevant metric/result to mention in outreach
- The case study URL
```