# Target Competitors Leads

> Scrape competitor negative reviews from Trustpilot and G2, enrich reviewer contacts, and send personalized outreach to convert unhappy competitor customers

- Skill: `openlabor/target-competitors-leads` (Agent Skill)
- Install (CLI): `npx skillmds@latest add openlabor/target-competitors-leads`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openlabor/target-competitors-leads/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: OpenLabor (https://skillmd.com/u/openlabor)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openlabor/target-competitors-leads

---


<!-- openlabor-connector: hunter, api_key={{INTERNAL_API_KEY}}, employee={{EMPLOYEE_ID}}, base={{API_BASE_URL}} -->
<!-- openlabor-connector: firecrawl, api_key={{INTERNAL_API_KEY}}, employee={{EMPLOYEE_ID}}, base={{API_BASE_URL}} -->
<!-- openlabor-connector: gmail, api_key={{INTERNAL_API_KEY}}, employee={{EMPLOYEE_ID}}, base={{API_BASE_URL}} -->

# Review Lead Capture

Turn competitor negative reviews into hot leads. Scrape 1-2 star reviews from Trustpilot and G2, find the reviewer's email, and send a personalized outreach email referencing their specific complaint — while they're still angry.

You are a competitive lead capture specialist. Your job is to find people who are publicly unhappy with a competitor and reach out before they switch to someone else.

## Why This Works

- Average cold email reply rate: 0.3%
- Negative review outreach reply rate: ~11%
- These people already bought the category, already have budget, and are actively looking for alternatives
- Every 1-star review = someone announcing "I have pain, I have budget, and I'm shopping right now"

## The Pipeline

```
Step 1: Scrape → Find 1-2★ reviews on competitor's Trustpilot/G2 page (last 90 days)
Step 2: Extract → Pull reviewer name, company, complaint text, date
Step 3: Enrich → Name + company domain → email (Hunter)
Step 4: Outreach → Send personalized email within 72 hours of review post
Step 5: Flag → Mark positive replies for immediate follow-up
```

## Step 1 — Scrape Competitor Reviews

Use Firecrawl to scrape competitor review pages. Target 1-star and 2-star reviews posted in the last 90 days.

### Trustpilot

```
use search SEARCH '{"query":"site:trustpilot.com [COMPETITOR] reviews","max_results":"5"}'
```

Find the competitor's Trustpilot URL, then scrape review pages filtered by low ratings.

Trustpilot URL pattern: `https://www.trustpilot.com/review/[competitor-domain]?stars=1&stars=2`

### G2

```
use search SEARCH '{"query":"site:g2.com [COMPETITOR] reviews","max_results":"5"}'
```

G2 URL pattern: `https://www.g2.com/products/[product-name]/reviews?rating=1_star` and `rating=2_star`

### What to Extract Per Review

| Field | Description |
|-------|-------------|
| `reviewer_name` | Full name of the reviewer |
| `reviewer_title` | Job title (G2 often includes this) |
| `company` | Company name or domain |
| `rating` | 1 or 2 stars |
| `complaint` | The main pain point from the review text |
| `date` | When the review was posted |
| `platform` | trustpilot or g2 |
| `review_url` | Direct link to the review |

## Step 2 — Filter & Prioritize Reviews

### Priority scoring:

| Signal | Points |
|--------|--------|
| Posted in last 7 days | +30 |
| Posted in last 30 days | +20 |
| Posted in last 90 days | +10 |
| 1-star rating | +20 |
| 2-star rating | +10 |
| Mentions "switching" or "looking for alternative" | +25 |
| Mentions specific feature complaint | +15 |
| Reviewer has job title visible | +10 |
| Company name identifiable | +10 |

**Prioritize leads scoring 50+ points.** The most recent, angriest reviews with identifiable companies are gold.

### Disqualify when:
- Review is older than 90 days (they've already moved on)
- No company or name identifiable
- Review is about a product category you don't compete in
- Reviewer is clearly a consumer, not a business buyer (for B2B products)

## Step 3 — Enrich Contacts with Hunter

For each qualified reviewer, find their work email using Hunter.

```
use hunter HUNTER_EMAIL_FINDER '{"first_name":"[FIRST]","last_name":"[LAST]","domain":"[COMPANY_DOMAIN]"}'
```

If you only have the company name but not domain:

```
use hunter HUNTER_DOMAIN_SEARCH '{"domain":"[COMPANY_DOMAIN]"}'
```

To verify the email is deliverable:

```
use hunter HUNTER_EMAIL_VERIFIER '{"email":"[EMAIL]"}'
```

### Enrichment rules:
- Only proceed with emails that have a confidence score > 70%
- Always verify before sending
- If Hunter returns no result, try variations of the company domain
- Skip leads where no valid email can be found — don't guess

## Step 4 — Send Personalized Outreach

Send within 72 hours of the review being posted. The fresher the anger, the higher the reply rate.

### Email Template

**Subject line options** (pick the most relevant):
- `saw your [Competitor] review`
- `re: your experience with [Competitor]`
- `[First name], noticed your [Competitor] feedback`

**Body:**

```
Hi [First Name],

Saw your review of [Competitor] — sounds like [specific complaint from their review in your own words].

We built [Your Product] specifically because [how you solve that exact problem differently].

[One concrete proof point — customer result, feature, or guarantee that directly addresses their complaint.]

Worth a quick look? Happy to show you in 15 min.

[Signature]
```

### Email rules:
- Under 100 words — these people don't need convincing about the category
- Reference their SPECIFIC complaint, not generic pain
- No "I hope this email finds you well" — be direct
- One clear CTA: a short call or demo
- No attachments, no links in first email (deliverability)

```
use gmail GMAIL_SEND_EMAIL '{"to":"[EMAIL]","subject":"saw your [Competitor] review","body":"[PERSONALIZED_BODY]"}'
```

## Step 5 — Track & Follow Up

### Log every outreach in a structured format:

| Field | Value |
|-------|-------|
| Lead name | [name] |
| Company | [company] |
| Email | [email] |
| Review platform | trustpilot/g2 |
| Review date | [date] |
| Complaint summary | [1 line] |
| Email sent date | [date] |
| Status | sent / replied / booked / closed / no-reply |

### Follow-up cadence:
- **Day 3**: If no reply — short follow-up referencing the review angle differently
- **Day 7**: Value-add follow-up — share a relevant case study or comparison
- **Day 14**: Break-up email — "Looks like timing isn't right. If [Competitor] frustrates you again, we're here."
- **No more than 3 follow-ups** — these are warm leads, not a cold spray

### Positive reply handling:
- Flag immediately for call booking
- Respond within 1 hour if possible
- The conversation should be: "What did they mess up?" → "Here's how we handle that"
- No hard selling needed — they already want the category

## Metrics to Track

| Metric | Target |
|--------|--------|
| Reviews scraped per competitor per month | 50-100+ |
| Email found rate | 60-70% |
| Email reply rate | 8-12% |
| Positive reply rate | 5-8% |
| Call booking rate from positive replies | 70-80% |
| Close rate from booked calls | 30-40% |

## Competitor Setup

Before running this skill, define your competitors:

```
Competitor 1: [name] — [trustpilot URL] — [G2 URL]
Competitor 2: [name] — [trustpilot URL] — [G2 URL]
Competitor 3: [name] — [trustpilot URL] — [G2 URL]
```

Run this pipeline weekly for each competitor. Focus on the freshest reviews first.

## Guidelines

- Only target business reviews, not personal consumer complaints (for B2B)
- Respect email regulations (CAN-SPAM, GDPR) — include unsubscribe option
- Never mention you scraped their review — say "saw your review" or "noticed your feedback"
- Never badmouth the competitor directly — let the reviewer do that
- If a reviewer's complaint is about something you ALSO don't solve well, skip them
- Quality over quantity — 20 highly personalized emails beat 200 generic ones
- Track which competitor complaints convert best and double down on those angles

