← Files JoomPulseARCHIVED FILE

skills/high-demand-low-quality-finder/SKILL.md

8.98 KB · Oct 4, 2026 · 12:08 UTC

↓ Download file

---
name: high-demand-low-quality-finder
description: >
  Finds Mercado Livre (Brasil) products in one category that have high demand but a low rating
  — listings that sell well yet score at or below a rating threshold the user chooses, an
  opening to enter with a better offer. Use it when a seller wants weak-rated but well-selling
  products to beat. The skill asks for a category and a rating threshold, then returns the
  matching active listings ranked by demand, using JoomPulse market data. Triggers: "high
  demand low rating products", "low quality opportunities", "products I can beat", and the pt-
  BR "produtos com muita demanda e nota baixa", "oportunidades de baixa qualidade", "produtos
  mal avaliados que vendem". Sales and revenue are JoomPulse estimates, not real transactions;
  price, rating, and reviews are real history. For brand-new listings use the new-growing-
  products-in-category skill; for niches without strong incumbents use the uncontested-niche-
  finder skill; for one product and its competitors use the ml-product-analysis skill.
---

# High-Demand, Low-Quality Finder

This skill surfaces products in one Mercado Livre (Brasil) category that **sell
well but are poorly rated** — listings with strong demand whose rating sits at or
below a threshold the seller chooses. These are the products a seller has the best
chance of beating: the demand is already proven, and a better offer can win on
quality. The result is a ranked product table, ordered by estimated demand, with a
JoomPulse link per product.

This is different from finding fresh entrants or empty niches. To find brand-new
listings that are already selling in a category, use the new-and-growing-products
skill. To find niches with no strong incumbents, use the uncontested-niche skill.
To size up a single product and the products that compete with it, use the
single-product analysis skill. This skill answers "which proven sellers in this
category are weak on quality, so I can enter with a better offer?"

## Prerequisites

- JoomPulse MCP access is configured for the current agent environment.
- The user provides the **category** (a name or a category identifier) **and** a
  **rating threshold** (for example `4.0`). Both are required.
- The available JoomPulse tools can resolve a category and list the active
  listings in it with their demand, rating, price, and logistics.

If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can find opportunities.

## Scope

- **Mercado Livre (Brasil) only.** Other marketplaces are out of scope.
- **Sales and revenue are JoomPulse estimates** derived from historical listing
  data — not real transactions. Disclose this in every output. By contrast,
  **price, rating, and review count are real history** from Mercado Livre — say
  so, it is a strength of the report.
- **Read-only.** The skill does not sign in as the seller or modify any listing.
- **Language:** detect the seller's language and respond in it. Default to pt-BR.
- **Keep the workflow invisible.** The seller wants the answer, not a play-by-
  play. If one approach does not return data, switch to another quietly; only if
  every approach fails do you say one short, friendly sentence.

## Workflow

### Step 1 — Collect the inputs

1. Ask the user for both the **category** and the **rating threshold**. Both are
   required before you proceed.
2. Resolve the user's category text to a category identifier. If they gave a name,
   look it up in JoomPulse and confirm the match if it is ambiguous; if they gave
   an identifier, use it directly.
3. The rating threshold becomes the upper bound: keep only products whose rating
   is **at or below** the chosen value.

### Step 2 — Pull the category's listings

Use JoomPulse to obtain the active listings in the chosen category whose rating is
at or below the threshold. For each listing, gather the data needed for the table:
estimated weekly sales and revenue, estimated monthly demand, rating, review
count, price, time on air, free shipping, Mercado Envios Full, listing type, and
seller medal.

### Step 3 — Filter and rank

- Defensively drop any row whose rating is above the threshold, and ignore rows
  with no rating at all unless the user asks to include them.
- **Rank by estimated monthly demand**, highest first, so the high-demand,
  low-quality products surface at the top (use estimated weekly revenue as a
  tiebreaker). This monthly-demand figure is the ranking metric, so it must
  appear as its own column in the table — never rank on a number the table does
  not show.
- Keep roughly the top 20–30 rows for the table.

## Output

Respond in the seller's language. Present the result with no commentary about how
it was produced. The product table always renders as markdown so it displays
cleanly in any client.

**Product table** — one row per listing, with these columns (pt-BR labels by
default):

- product / listing identifier
- Nome (name)
- Categoria (category)
- Vendedor (seller)
- Preço (price)
- Demanda estimada (mês) — estimated monthly demand (**this is the ranking
  metric**; rows are sorted by this column, highest first)
- Vendas estimadas (semana) — estimated weekly sales
- Receita estimada (semana) — estimated weekly revenue
- Classificação (rating)
- Avaliações (review count)
- Tempo do anúncio no ar (time on air)
- Frete grátis (free shipping)
- Mercado Envios Full
- Tipo de anúncio (listing type)
- Medalha do vendedor (seller medal)
- A JoomPulse link for the product

Below the table, state the inputs used (the category and the rating threshold) and
that rows are ranked by **estimated monthly demand** (the "Demanda estimada (mês)"
column). When a cell has no value, show `—`; never guess or fabricate.

**Disclaimer (every report):**

> ⚠️ Sales and revenue are JoomPulse **estimates** based on historical listing
> data — they are **not** actual transactions. Price, rating, and reviews are
> real Mercado Livre history. / Vendas e receita são **estimativas** do JoomPulse
> com base no histórico de anúncios — **não são transações reais**. Preço,
> classificação e número de avaliações são histórico real do Mercado Livre.

## Visualization

When the client can render inline visuals, present metric cards and a chart on top
of the markdown table — never instead of it. The product table always renders as
markdown. Otherwise, fall back to plain text: the cards as text lines and the
table as markdown, with no chart.

**Metric cards (three):**

- **Oportunidades encontradas** — the count of products kept (rows in the table).
- **Demanda total** — the estimated monthly demand summed across the kept rows.
- **Nota média** — the average rating across the kept rows. It will be low by
  construction; label it as the low-quality signal.

**Demand × rating chart:** one point per product — demand on the horizontal axis,
rating on the vertical axis, and bubble size by estimated weekly revenue.
Highlight the sweet spot (high demand, low rating — the bottom-right) by drawing
those points in **coral**, with all other points muted/grey: these are exactly the
products worth beating. **Skip the chart when there are fewer than five points** —
show the table only; no graph for the sake of a graph.

Presentation rules:

- Round numbers and format them in **pt-BR** (for example `R$ 1.234`,
  `1.234 vendas/mês`, rating `3,8`).
- Use the medal palette for any seller-medal styling: platina = purple,
  ouro = amber, prata = blue, sem medalha = white with a thin border.
- Keep the ⚠️ estimate disclaimer on every output that shows estimated sales or
  revenue.

## Notes & Guardrails

The seller should never see a system or stack error — only a friendly next step.

- **No products at or below the threshold:** say the category has few or no
  low-rated-but-selling products at the chosen threshold — this is a valid result,
  not an error, so keep it friendly. Make the next-step suggestion **relative to
  the threshold they picked**, never a blanket "lower the rating":
  - If the threshold is **low** (a strict bound, e.g. `≤ 3.0` or `≤ 3.5`), few
    products are rated that poorly — suggest **raising** the threshold (e.g. to
    `4.0`) to widen the search to more weak-but-selling listings.
  - If the threshold is already **high** (a loose bound, e.g. `≥ 4.5`), most
    listings already qualify, so an empty result more likely means little demand
    in this category — suggest **lowering** the threshold to focus on the truly
    weak-rated products, or trying a different category.
  Always frame it as adjusting the threshold in the sensible direction for the
  value they gave.
- **Category not found or ambiguous:** ask the user to confirm the exact category
  or to provide its category identifier.
- **Market data temporarily unavailable:** retry once quietly; if it is still
  down, say market data is temporarily unavailable and offer to retry. Never paste
  internal error text, HTTP codes, or field names to the seller.
- **Empty cells:** show `—`; never guess or fabricate a value.

SHA-256: 38a770c104c5a0d72c731d0068f6798cf8c3b85d54d2b55e8f548b1e50243dd0