Goose-skills competitor-signals

Extract leads from competitor product activity — Product Hunt commenters/upvoters, HN posts about competitors, case studies, testimonials, tech press, and switching signals. Detects people actively switching from competitors as highest-priority leads.

install
source · Clone the upstream repo
git clone https://github.com/gooseworks-ai/goose-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/gooseworks-ai/goose-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/packs/lead-gen-devtools/competitor-signals" ~/.claude/skills/gooseworks-ai-goose-skills-competitor-signals && rm -rf "$T"
manifest: skills/packs/lead-gen-devtools/competitor-signals/SKILL.md
source content

Competitor Signals

Find leads by monitoring competitor product activity. Instead of looking for your prospects directly, watch your competitors' audience — every person engaging with a competitor launch is self-identifying as in-market for your category.

When to Use

  • User wants to find people engaging with competitor products
  • User mentions Product Hunt launches, competitor press coverage, or competitor case studies
  • User wants to find people switching from or evaluating competitor products
  • User asks "who is using [competitor]" or "who is looking at alternatives to [competitor]"
  • User wants to monitor competitor activity for lead generation
  • User has a clear list of competitors and wants to mine their audience

Prerequisites

  • Python 3.9+ with
    requests
    and optionally
    python-dotenv
  • Product Hunt developer token (free, optional — get at
    api.producthunt.com/v2/oauth/applications
    )
  • Apify API token in
    .env
    (fallback for PH if API names are redacted, optional)
  • Working directory: the project root containing this skill

Phase 1: Collect Context

Step 1: Gather Competitor Information

Ask the user:

"To find leads from competitor activity, I need:

  1. Who are your competitors? (product names and company names)
  2. Do you know their Product Hunt slugs? (the URL path on producthunt.com/posts/SLUG)
  3. Any specific competitor launches or announcements you've seen recently?
  4. Are there competitors or signals you specifically want to track? (e.g., a competitor just raised funding, launched a new feature, or got press coverage)"

Step 2: Discover Competitors (if user needs help)

If the user doesn't have a complete competitor list, help them discover competitors:

2a. Product Hunt search:

  • Search producthunt.com for the user's product category
  • Note: PH doesn't have a great search API — use web search: "site:producthunt.com [product category]"

2b. G2/Capterra category pages:

  • Search: "[product category] G2" or "[product category] Capterra"
  • These pages list all competitors in a category with rankings

2c. "Alternatives to" sites:

  • Search: "[known competitor] alternatives"
  • Sites like alternativeto.net, slant.co, stackshare.io list competitors

2d. Ask the user:

"Based on my research, here are competitors I've found in your space: [list]. Are there any I'm missing? Any you'd like to exclude (e.g., not really competitors, too different in market segment)?"

Step 3: Find Product Hunt Slugs

For each competitor, find their PH launches:

  • Search: "site:producthunt.com [competitor name]"
  • Or browse:
    producthunt.com/products/[competitor-name]
  • Note the slug from the URL:
    producthunt.com/posts/SLUG
  • A competitor may have multiple launches (initial launch + feature launches)

Step 4: Identify Competitor Web Pages to Scrape

For each competitor, identify pages the agent should scrape:

Case studies page:

[competitor].com/customers
or
[competitor].com/case-studies

  • Extract: company names, logos, quotes, person names, titles
  • These are PROVEN BUYERS in the category

Testimonials page: Often on the homepage or a dedicated page

  • Extract: person name, title, company, quote
  • These are current users who publicly endorsed the competitor

Blog:

[competitor].com/blog

  • Guest posts by customers are case studies in disguise
  • "How [Company X] uses [Competitor]" = case study

Present all discovered pages to the user for review.

Phase 2: Agent-Driven Scraping

Step 5: Scrape Competitor Websites

Before running the tool, the agent should manually scrape competitor case studies and testimonials. This is agent-driven because every competitor website has a different format.

For each competitor's case study page:

  1. Navigate to the page using web fetch or Chrome DevTools
  2. Extract all customer company names and any associated person names/quotes
  3. Note the case study URL for reference

For each competitor's testimonials page:

  1. Extract: person name, title, company, quote text
  2. These are high-value signals — these people actively chose to endorse the competitor

Save all scraped data to

${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json
:

[
    {
        "person_name": "Sarah Chen",
        "company": "TechCorp",
        "signal_type": "case_study_company",
        "signal_label": "Competitor Case Study",
        "competitor": "Twilio",
        "context": "How TechCorp scaled video calls to 100K users with Twilio",
        "url": "https://twilio.com/case-studies/techcorp",
        "profile_url": "",
        "date": "",
        "source": "Manual",
        "engagement": 0
    }
]

Step 6: Check Tech Press

Search for recent articles about competitors:

  • "[competitor] TechCrunch"
  • "[competitor] The New Stack"
  • "[competitor] InfoQ"
  • "[competitor] DevOps.com"
  • "[competitor] launch announcement"
  • "[competitor] raises funding"

For articles found:

  • Note the article URL and key companies/people mentioned
  • If the article has comments, check for people expressing opinions
  • Add notable findings to the manual signals JSON

Phase 3: Execute Tool

Step 7: Save Config

cat > ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json << 'CONFIGEOF'
{
    "competitors": ["Twilio", "Agora", "Vonage", "Daily.co"],
    "product_hunt_slugs": ["twilio-video", "agora-2", "daily-co"],
    "days": 90,
    "manual_signals_file": "${CLAUDE_SKILL_DIR}/../.tmp/competitor_manual_signals.json",
    "skip": []
}
CONFIGEOF

Step 8: Run the Tool

python3 ${CLAUDE_SKILL_DIR}/scripts/competitor_signals.py \
    --config ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals_config.json \
    --output ${CLAUDE_SKILL_DIR}/../.tmp/competitor_signals.csv

The tool will:

  1. Try Product Hunt API first (if
    PRODUCTHUNT_TOKEN
    is set)
  2. Fall back to Apify PH scraper if API names are redacted
  3. Search HN for all competitor names (stories + comments, last 90 days)
  4. Load manual signals (case studies, testimonials, press)
  5. Detect "switching signals" (highest priority — people saying they're moving to/from a competitor)
  6. Deduplicate and score
  7. Export CSV with switching signals highlighted

Phase 4: Analyze & Recommend

Step 10: Analyze Results

10a. Switching Signals (HIGHEST PRIORITY)

  • These are people who publicly said they're switching from or evaluating alternatives to a competitor
  • List every switching signal with full context
  • These leads should be contacted IMMEDIATELY — they're in active evaluation
  • Outreach angle: "I noticed you mentioned looking for alternatives to [competitor] — here's how we compare"

10b. Case Study Companies

  • These are PROVEN BUYERS in the category
  • They've already committed budget to the problem space
  • The decision-maker already said yes once — they'll consider alternatives if you offer something better
  • Recommend enriching these companies via SixtyFour to find the current decision-maker

10c. Testimonial Authors

  • Current users of the competitor who are vocal about it
  • They may be satisfied (hard sell) OR they may have moved on since the testimonial
  • Good for understanding what the competitor does well (competitive intel)
  • If the testimonial mentions specific pain points or limitations, that's an opening

10d. Product Hunt Activity

  • Commenters asking questions = evaluating the category
  • Commenters with negative feedback = potentially dissatisfied
  • Upvoters = interested in the space (weaker signal, higher volume)

10e. HN Discussion

  • Commenters engaging with competitor stories = following the space
  • People sharing experiences (positive or negative) = active users or evaluators

10f. Competitor-Level Analysis

  • Which competitor generates the most signals? (largest audience = most opportunity)
  • Which competitor has the most negative signals? (weakest competitor = easiest to displace)
  • Are there any surprises? (unknown competitor getting a lot of attention?)

Step 11: Recommend Next Steps

  1. Switching signals (immediate outreach):

    • Enrich these people via SixtyFour NOW
    • They're in active evaluation — speed matters
    • Personalize based on what they said ("You mentioned [specific pain]...")
  2. Case study companies (account-based approach):

    • These companies have budget for this category
    • Use SixtyFour
      /enrich-company
      to understand them
    • Find the decision-maker (not the person in the case study, who may have left)
    • Outreach angle: "Companies like yours in [industry] are switching to us because..."
  3. PH commenters asking questions:

    • They're early in evaluation
    • Can reply directly on Product Hunt (public, non-intrusive)
    • Or enrich and reach out privately
  4. Cross-reference with other signals:

    • If a company appears in competitor case studies AND in job signals (hiring for the role) -> they're invested but possibly scaling beyond the competitor
    • If a person appears in competitor PH comments AND in community signals -> they're deeply researching the space

Step 12: Ask for Go-Ahead

"Would you like me to:

  1. Enrich the switching signal leads immediately (highest priority)
  2. Enrich the case study companies and find decision-makers
  3. Cross-reference with data from other signal skills
  4. Scrape additional competitor pages for more signals
  5. Export for manual review first"

Signal Scoring

Signal TypeScorePriority
Switching From/To Competitor9IMMEDIATE — active evaluation
Competitor Case Study Company9HIGH — proven buyer
Competitor Testimonial Author8HIGH — current/past user
PH Launch Commenter8HIGH — actively evaluating
HN Post Commenter7MEDIUM — interested in space
HN Post Author6MEDIUM — sharing competitor news
PH Launch Upvoter6MEDIUM — interested but passive
Tech Press Mention6MEDIUM — following the space
PH Product Maker5LOW — competitor team member
Changelog Engager5LOW — power user or evaluator

Output Schema (Single Sheet)

ColumnDescription
person_nameName or username of the person
companyCompany/headline from their profile
signal_typeInternal signal type code
signal_labelHuman-readable label
competitorWhich competitor this signal is about
contextComment text, case study excerpt, or description
urlLink to the source (PH comment, HN post, case study page)
profile_urlLink to the person's profile (PH, HN)
dateDate of the signal
signal_scoreWeighted score
sourceProduct Hunt API, Hacker News, Manual
engagementUpvotes/points on the post or comment

Cost Estimates

SourceCostNotes
Product Hunt APIFreeDeveloper token (may have name redaction)
Product Hunt Apify~$5-10/runFallback if API names redacted
Hacker NewsFreeAlgolia API
Manual scrapingFreeAgent scrapes competitor websites
Typical run$0-10Free if PH API works; $5-10 if using Apify

Lookback Period

Default: 90 days. Competitor launches and case studies have a longer shelf life than Reddit posts. Someone who commented on a competitor's PH launch 60 days ago is still a viable lead.