All skills
places Market Research & Trends

Local Category Complaint Miner

Sweep one-star reviews across a metro's category to surface the unmet needs nobody is solving

Run this skill with your agent
1. Connect the MCP server
https://apidirect.io/mcp?token=YOUR_API_KEY
2. Then just say to your agent
Mine one-star reviews for {category} businesses across {metro} and cluster the unmet needs I could build around
In clients that support MCP prompts (Claude Desktop, Claude Code, Cursor) this skill appears as a prompt named local-category-complaint-miner. Any agent can also call get_skill(skill_id="local-category-complaint-miner") to pull these steps on demand.

What it does

A metro's lowest-rated reviews for a category are a free, honest backlog of unmet needs. Sentiment-filtering the angriest reviews across many local players reveals repeated pain you can productize or out-execute.

Who it's for: Founders, local-market entrants, and product strategists

Inputs

Input Required Description Example
category Yes The business category to investigate dog grooming
metro Yes City or metro to sweep Austin, Texas

How your agent runs it

  1. 1
    search_places(query="{category} {metro}", pages=5)

    Collect every local provider in the category with its place_id, rating, and review_count; prioritize those with enough reviews to mine.

  2. 2
    place_reviews(place_id=<place_id>, sort_by=lowest_ranking, pages=3, get_sentiment=true)

    For each provider pull the harshest reviews and keep only items with negative polarity or anger/disgust as the dominant emotion.

  3. 3
    place_reviews(place_id=<place_id>, sort_by=newest, pages=2, get_sentiment=true)

    Cross-check recent reviews to confirm the complaint is still live and not a fixed legacy issue.

  4. 4
    place_details(place_id=<place_id>)

    For the worst-offending providers pull owner and contact info to size the incumbent and flag differentiation or acquisition angles.

Delivers: A clustered list of recurring unmet needs across the metro's category, ranked by frequency and emotional intensity, with the worst-performing incumbents named.

Tools used

The full playbook

This is exactly what the MCP returns to your agent (via the local-category-complaint-miner prompt or get_skill tool), with your inputs filled in.

SKILL: Local Category Complaint Miner
A metro's lowest-rated reviews for a category are a free, honest backlog of unmet needs. Sentiment-filtering the angriest reviews across many local players reveals repeated pain you can productize or out-execute.

You are running this skill on API Direct via its MCP tools. Execute the steps below yourself by calling the named tools in order — values in <angle brackets> come from a previous step. Then deliver the result described at the end.

INPUTS:
  - category (required): <category — ASK THE USER>
  - metro (required): <metro — ASK THE USER>

STEPS:
  1. Tool `search_places` — search_places(query="<category> <metro>", pages=5)
     Collect every local provider in the category with its place_id, rating, and review_count; prioritize those with enough reviews to mine.
  2. Tool `place_reviews` — place_reviews(place_id=<place_id>, sort_by=lowest_ranking, pages=3, get_sentiment=true)
     For each provider pull the harshest reviews and keep only items with negative polarity or anger/disgust as the dominant emotion.
  3. Tool `place_reviews` — place_reviews(place_id=<place_id>, sort_by=newest, pages=2, get_sentiment=true)
     Cross-check recent reviews to confirm the complaint is still live and not a fixed legacy issue.
  4. Tool `place_details` — place_details(place_id=<place_id>)
     For the worst-offending providers pull owner and contact info to size the incumbent and flag differentiation or acquisition angles.

DELIVER: A clustered list of recurring unmet needs across the metro's category, ranked by frequency and emotional intensity, with the worst-performing incumbents named.

Note: each underlying tool call is billed at its normal endpoint price; get_sentiment adds a small per-page surcharge. Page through results as needed but stop once you have enough to deliver the outcome.