agentleFS
OpenLaborOpenLabor/openlabor/skills/target-competitors-leads/SKILL.md

Target Competitors Leads

Skill5 starsChanged 3 months agoMITView on GitHub

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

  • Reads credentials

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 16 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈16

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every 1-star review = someone announcing "I have pain, I have budget, and I'm shopping right now"

    line 29
  2. Distinctive:

    Use Firecrawl to scrape competitor review pages.

    line 43
  3. Distinctive:

    No company or name identifiable

    line 96
  4. Distinctive:

    If you only have the company name but not domain:

    line 108
  5. Distinctive:

    Only proceed with emails that have a confidence score > 70%

    line 121
  6. Distinctive:

    Always verify before sending

    line 122
  7. Distinctive:

    If Hunter returns no result, try variations of the company domain

    line 123
  8. Distinctive:

    No attachments, no links in first email (deliverability)

    line 158
  9. Distinctive:

    Day 3: If no reply — short follow-up referencing the review angle differently

    line 180
  10. Distinctive:

    No hard selling needed — they already want the category

    line 189
  11. Distinctive:

    Before running this skill, define your competitors:

    line 204
  12. Distinctive:

    Run this pipeline weekly for each competitor.

    line 212
  13. Distinctive:

    Only target business reviews, not personal consumer complaints (for B2B)

    line 216
  14. Distinctive:

    Never mention you scraped their review — say "saw your review" or "noticed your feedback"

    line 218
  15. Distinctive:

    Never badmouth the competitor directly — let the reviewer do that

    line 219
  16. Distinctive:

    If a reviewer's complaint is about something you ALSO don't solve well, skip them

    line 220

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- 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

FieldDescription
reviewer_nameFull name of the reviewer
reviewer_titleJob title (G2 often includes this)
companyCompany name or domain
rating1 or 2 stars
complaintThe main pain point from the review text
dateWhen the review was posted
platformtrustpilot or g2
review_urlDirect link to the review

Step 2 — Filter & Prioritize Reviews

Priority scoring:

SignalPoints
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:

FieldValue
Lead name[name]
Company[company]
Email[email]
Review platformtrustpilot/g2
Review date[date]
Complaint summary[1 line]
Email sent date[date]
Statussent / 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

MetricTarget
Reviews scraped per competitor per month50-100+
Email found rate60-70%
Email reply rate8-12%
Positive reply rate5-8%
Call booking rate from positive replies70-80%
Close rate from booked calls30-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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.