JoomPulse
Joom v2.0.1
Publisher description
From the marketplace listing
JoomPulse gives you instant access to MercadoLivre Brazil's marketplace data through natural language queries. Analyze product listings, categories, sellers, pricing trends, reviews, and keywords — all powered by a structured data warehouse. Whether you're doing competitive research, category analysis, or tracking listing performance, JoomPulse translates your questions into precise data insights without writing a single line of SQL. Built for e-commerce teams and analysts who need fast, reliable answers from Brazil's largest online marketplace.
Language: English · Automatically detected from descriptions.
Files & skills
File archives
Skill instructions
category-monitor8.34 KB
--- name: category-monitor description: > Monitors one Mercado Livre (Brasil) category's aggregate health via JoomPulse — estimated sales, number of products and catalog products, active sellers, the seller-medal distribution, and the monopolization level. Each run builds today's snapshot table and offers it for download; to see what changed, the user sends a table from a previous period and the skill shows the metric-by-metric difference. The baseline is whatever table the user supplies — no hidden session memory. Triggers: "monitor this category", "what changed in this category", "track category sales and sellers", and the pt-BR "monitorar esta categoria", "o que mudou na categoria", "comparar a categoria com o período anterior". Sales and revenue are JoomPulse estimates, not real transactions. To track one named product over time use the product-change-monitor skill; for a one-shot market-size or opportunity snapshot use the category-opportunity-index skill. --- # Category Monitor This skill tracks **one Mercado Livre (Brasil) category's aggregate health over time** — its estimated sales, number of products and catalog products, number of active sellers, the distribution of sellers across medal tiers, and how concentrated the market is (monopolization). Each run builds **today's snapshot table** for the category and offers it as a **downloadable table**. To see what changed, the user **supplies the table from a previous period** (the one this skill produced before); the skill compares the two and shows the difference per metric. **The baseline is whatever table the user provides — there is no hidden session memory and nothing is stored server-side.** The default view is the whole category; the user may instead point it at a single listing or a catalog product (a catalog product rolls up its competing listings). To track one named product over time, use the product-change-monitor skill. For a one-shot opportunity / market-size snapshot, use the category-opportunity-index skill. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user names a category (or, optionally, a single listing or catalog product). - For a period comparison, the user supplies a previous table that this skill produced for the same category (pasted or uploaded). Without it, the skill produces a standalone snapshot. - The available JoomPulse tools can return a category's aggregate metrics and its seller-medal distribution. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can monitor a category. ## 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. - **Read-only.** The skill never writes or modifies anything; it does not store the snapshot — the user keeps the downloadable table and brings it back next period. - **Language:** detect the seller's language and respond in it. Default to pt-BR. - **The baseline is user-supplied.** Never claim a change without a previous table to compare against, and never infer or fabricate one from memory. ## Workflow ### Step 1 — Resolve what to monitor Ask for a category if none was given, then use JoomPulse to match the free text to a category (disambiguate with the user when several plausible matches return). Optionally, the user can point the skill at a single listing or a catalog product instead. ### Step 2 — Collect today's aggregates Use JoomPulse to collect, for the target: estimated sales, number of products, number of catalog products, number of active sellers, the seller-medal distribution, and the monopolization level. ### Step 3 — Present today's snapshot and offer it for download Render the snapshot table for **today** (head it with the category name and the date). This table is the deliverable — and **offer it as a downloadable file (`.csv` / `.xlsx`)** so the user can save it and bring it back next period as the baseline. On a standalone snapshot there is **no change column and no color-dot legend** — just metric and current value. ### Step 4 — Offer comparison, and compare if a previous table is supplied Invite the user to send a previous table for the same category to compare periods. **If they provide one**, parse its metric values, align by metric to today's snapshot, and render a comparison table with the difference per metric. A difference **requires both an old and a new value** for the same metric — if a metric is missing or unreadable in the supplied table, show `—`, never a fabricated trend. If no previous table is supplied, the snapshot stands on its own and the user is told to save it for next time. ## Output Respond in the seller's language (default pt-BR). **Snapshot (always):** a markdown table `| Métrica | Valor atual |` for **Vendas (estimadas), Produtos, Produtos de catálogo, Vendedores, Distribuição de medalhas, Monopolização**, plus a downloadable `.csv` / `.xlsx` of the same data. **Comparison (only when a previous table is supplied):** a markdown table `| Métrica | Anterior | Atual |`. Put the change (figure or percentage point) inside the **Atual** cell, prefixed with a semantic color dot: - **Vendas ↑ = 🟢**; Vendas ↓ = 🔴. - **Monopolização is inverted** (like cancellation rate): **down = 🟢** (easier to enter), **up = 🔴**. - **Produtos / Vendedores** moving is neutral context — show the change without a strong good/bad dot. - **Distribuição de medalhas** — show the tiers that moved (for example `platina 4 → 5`). Column headers are words (`Métrica | Anterior | Atual`), never a bare "Δ" symbol. Show the color-dot legend (🟢/🔴) **only** in the comparison table, where the dots actually appear — never on a plain snapshot. Close with a short **Principais insights** section: with a comparison, interpret what moved; on a standalone snapshot, frame it as the starting picture with no trend claims. **Disclaimer (every report):** > ⚠️ Vendas, vendedores, produtos e monopolização são estimativas do JoomPulse com base no histórico > de anúncios — não são transações reais. / Sales, sellers, products, and monopolization are JoomPulse > estimates based on historical listing data — not actual transactions. ## Visualization When the client can render inline visuals, present metric cards and a medal-distribution chart; otherwise fall back to the markdown tables plus text cards. Never block on visuals. The snapshot table (and the comparison table, when present) always render as markdown in the response text, and the downloadable file mirrors what is shown. When inline visuals are available: - **Cards:** estimated sales, number of products, number of catalog products, and number of active sellers — plus the monopolization level as a value or small bar. With a comparison, you may annotate each card with its `anterior → atual` change. - **A medal-distribution bar:** sellers (or listings) split across medal tiers, using the medal palette — platina = purple, ouro = amber, prata = blue, sem medalha = white with a thin border (white needs the border to stay visible on a light background). With a previous table, note the shift. - **No synthesized trend line** from a single run (there is no server-side history). Only if the user supplies several past-period tables may you plot a simple line across those periods. Presentation rules: column headers are words, never a bare "Δ" symbol; show the color-dot legend only when those dots appear (the comparison table); render a chart only when the data supports it. ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **No previous table supplied:** render today's snapshot only (no change column, no legend) and invite the user to save it for next time. - **Supplied table is for a different category, malformed, or unreadable:** say so plainly and fall back to the snapshot only; do not force a misaligned comparison. - **Empty or failed data:** say the data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the seller. - **Catalog product input:** when monitoring a catalog product, note the buy-box competition (how many sellers compete) rather than implying a single listing.
category-opportunity-index10.4 KB
---
name: category-opportunity-index
description: >
Reports the JoomPulse opportunity index (low, medium, or high) for one
Mercado Livre (Brasil) category, alongside that category's current monthly
market stats — estimated GMV, estimated sales, number of active sellers,
number of active listings, and average ticket — then writes a plain-language
read on how attractive the category is to enter. Use it when a seller wants a
one-shot market snapshot for a category they name. Triggers include: "is this
category worth entering", "show the opportunity index for this category",
"how big is this market", and the pt-BR equivalents "qual o índice de
oportunidade", "vale a pena entrar nessa categoria", "tamanho de mercado da
categoria". Sales and revenue are JoomPulse estimates, not real transactions.
For ranking the sellers in a category, use the top-sellers-in-category skill; for
trending search terms, use the top-keywords-in-my-category skill; for comparing
category aggregates against a user-supplied previous snapshot, use the
category-monitor skill.
---
# Category Opportunity Index
This skill answers a single question for **one** Mercado Livre (Brasil)
category: is it worth entering? Given a category named in free text, it reads
that category's **opportunity index** (low, medium, or high) and its current
monthly market indicators — estimated GMV, estimated sales, active sellers,
active listings, and average ticket — then writes a short pt-BR summary that
interprets the opportunity level together with how concentrated the market is
(monopolization) and which way it is growing.
This is a point-in-time snapshot, not a tracker. To rank the sellers inside a
category, use the top-sellers-in-category skill. For the trending search terms
shoppers use in a category, use the top-keywords-in-my-category skill. To compare
a category's aggregates against a user-supplied previous snapshot, use the
category-monitor skill. This skill answers "how attractive is this category right
now?" for a category the user names.
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user names the category to evaluate (free text is fine).
- The available JoomPulse tools can resolve a category name to a category and
return that category's current monthly market indicators plus its recent
monthly history.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can report a category's opportunity index.
## 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. The seller, listing, and average-ticket counts
shown here are estimates too. Disclose this in every output.
- **Read-only.** The skill never writes or modifies anything.
- **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. Never fill gaps
from general knowledge, and never fabricate a number — show `—` when a value
is missing.
## Workflow
### Step 1 — Resolve the category
1. If the user did not name a category, ask which one to evaluate
(for example *"Para qual categoria você quer o Índice de Oportunidade?"*).
2. Use JoomPulse to match the free text to a category, retrieving candidate
categories with their name, depth level, and opportunity index for the
current month.
3. Pick the best match. If several plausible categories come back, list the top
candidates (name and level) and ask the user to choose — do not silently
guess between unrelated categories. If nothing matches, say the category was
not found and ask for a broader or rephrased term.
### Step 2 — Get the current monthly indicators
For the chosen category, use JoomPulse to obtain its **latest month's** market
indicators:
- Opportunity index (low / medium / high).
- Estimated monthly GMV and estimated monthly sales.
- Number of active sellers and number of active listings.
- Average ticket.
- Context for the summary: the monopolization level (the top seller's share of
orders, expressed 0–100%), the month-over-month growth direction, and any
seasonality signal.
All indicators are monthly values. Use the always-positive monthly totals for
market size, never a month-over-month delta — never label a change figure as a
total or as "revenue".
### Step 3 — Get ~12 months of history for the trend line
Use JoomPulse to retrieve the category's recent monthly history (estimated GMV
and estimated sales per month) for roughly the last 12 months. Order the months
oldest to newest. If fewer than about six months of history come back (a new or
sparse category), treat history as unavailable and skip the trend line — show
the cards only.
### Step 4 — Build the report (pt-BR)
1. Lead with the **opportunity index**, prominently: 🟢 alto / 🟡 médio / 🔴
baixo (show `—` if it is missing), noting the category name and level.
2. Show the monthly indicators table (see Output).
3. Write a 2–4 sentence **resumo** that interprets the opportunity index
together with monopolization and growth:
- What the level means — high implies good room for new sellers; low implies
little relative upside.
- **Monopolization** — high concentration (roughly above half) means the
market is dominated by a few sellers and is harder to break into; low means
demand is spread out and more accessible.
- **Growth** — rising means the category is expanding; falling means it is
contracting.
- Optionally note seasonality if relevant.
- End on a practical takeaway: worth entering / enter with caution / not very
attractive right now.
4. Add the mandatory disclaimer, and optionally the JoomPulse category dashboard
link.
## Output
Respond in the seller's language, default pt-BR, with no commentary about how the
report was produced. The indicators table always renders as markdown so it shows
cleanly in any client.
**Opportunity badge** — a heading line, for example:
> **Índice de Oportunidade: ALTO** 🟢 (categoria: <nome>, nível L<level>)
**Monthly indicators table:**
| Indicador | Valor (mensal) |
|---|---|
| GMV Estimado (Mensal) | R$ … |
| Vendas Estimadas (Mensal) | … |
| Vendedores Ativos | … |
| Anúncios Ativos | … |
| Ticket Médio | R$ … |
Format money as `R$` with pt-BR conventions (comma decimal, dot thousands, for
example `R$ 1,2 mi`, `8.400`, `R$ 49,90`) and round large values sensibly. Empty
cells show `—`.
**Resumo** — the 2–4 sentence interpretation described in the workflow.
**Disclaimer (every report):**
> ⚠️ GMV, vendas, vendedores e anúncios são estimativas do JoomPulse com base no
> histórico de anúncios — não são transações reais. / GMV, sales, sellers, and
> listings are JoomPulse estimates based on historical listing data — not actual
> transactions.
Optionally add the JoomPulse category dashboard link.
## Visualization
When the client can render inline visuals, present the opportunity badge,
metric cards, and the appropriate charts; otherwise fall back to a markdown
table plus text cards. Never block on visuals — if the rich-visual path is
unavailable for any reason, render the markdown fallback. The monthly indicators
table always renders as markdown in the response text, on every surface, and the
⚠️ estimate disclaimer always stays in the text.
When inline visuals are available, present in one panel:
- **Opportunity badge** at the top: Alta 🟢 / Média 🟡 / Baixa 🔴 (show `—` if
missing).
- **Five metric cards:** estimated monthly GMV, estimated monthly sales, active
sellers, active listings, and average ticket — pt-BR formatted, money with
`R$`. These match the five rows of the monthly indicators table.
- **12-month trend line** of estimated monthly GMV (one point per month, x = mês,
y = GMV; optionally a second series for estimated sales). Render this chart
only when the data supports it — skip it entirely when there are fewer than
about six months of history, leaving just the cards. Optionally add a small
growth-% chip from the month-over-month change.
- **Monopolization bar:** a 0–100% horizontal bar; note that a **low** value is
the favorable end (demand spread across many sellers).
- **Seasonality chip:** a pill only, no bar — "Não sazonal" when the category is
not seasonal, or "Sazonal · pico {mês}" naming the peak month.
Presentation rules: use the medal palette consistently if medals appear anywhere
(platina = purple, ouro = amber, prata = blue, sem medalha = white with a thin
border). Any change or difference column uses a word as its header ("Variação",
or "Era | Agora"), never a bare "Δ" symbol. Show a 🟢/🔴/🆕 legend only on a run
where those symbols actually appear — never on a first or baseline run. Render a
chart only when the underlying data supports it, and skip it otherwise.
On a text-only surface, render the same information as markdown and text: the
badge as a heading line, the five metrics as the indicators table or text cards,
the trend as one short line describing the ~12-month direction (only when there
are at least about six months of history), the monopolization as a text
percentage (for example `Monopolização: 38% (baixa — bom)`), and the seasonality
as a text chip line.
## Notes & Guardrails
The seller should never see a system or stack error — only a friendly next step.
- **Ambiguous category:** list the candidate categories and ask the user to
choose. Do not guess between unrelated categories.
- **No current data / empty result:** say you could not find current data for
that category and suggest a broader or different term. Never fabricate numbers.
- **Opportunity index missing:** show `—` for the badge and base the summary on
monopolization and growth instead.
- **Sparse history:** when fewer than about six months of history exist, omit the
trend line and report the snapshot only.
- **Market data temporarily unavailable:** retry once quietly; if it is still
down, say market data is temporarily unavailable and to try again. Never paste
internal error text, HTTP codes, or field names to the seller.
- **Missing values:** show `—` for any empty indicator rather than guessing.
fast-growing-international-products6.27 KB
--- name: fast-growing-international-products description: > Finds fast-growing international (imported) products ACROSS ALL Mercado Livre (Brasil) categories, using JoomPulse, and returns them as one product table that includes each item's category, with price, estimated weekly sales and revenue, rating, time on air, shipping, listing type, seller medal, and a JoomPulse link per item. Use it when a seller wants rising imported products marketwide, not inside a single niche. Triggers include: "fast-growing international products", "imported products that are taking off", "cross-border winners across all categories", and the pt-BR equivalents "produtos internacionais em alta", "produtos importados crescendo rápido", "produtos internacionais que mais crescem em todas as categorias". Sales and revenue are JoomPulse estimates, not real transactions. For the same search limited to one category, use the single-category international skill. --- # Fast-Growing International Products This skill returns the **fast-growing international (imported) products across all Mercado Livre (Brasil) categories** — a marketwide shortlist of cross-border items with recent momentum, each shown with the category it sits in. It is the all-categories sibling of the single-category international skill. For imported products inside one specific category, use the single-category international skill. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The available JoomPulse tools can return active international listings across categories with their category, price, estimated sales and revenue, rating, time on air, logistics, listing type and seller medal. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can find international products. ## 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. Price, rating, and reviews are real history. Disclose the estimate caveat in every output. - **Read-only.** The skill never writes or modifies anything. - **Language:** detect the seller's language and respond in it. Default to pt-BR. - **Keep the workflow invisible.** Show `—` for any missing value; never fabricate. ## Workflow ### Step 1 — Optional narrowing This skill is marketwide by default. The seller may optionally narrow it to a broad area; if they do and the term is ambiguous, disambiguate before continuing. ### Step 2 — Find fast-growing international products marketwide Use JoomPulse to get active **international (imported)** listings across categories. There is no single "fast growth" flag, so it must be defined from a real momentum proxy — **revenue alone is not growth**, and ranking by it surfaces old, high-ticket slow movers rather than rising items. **Default fast-growth rule (always apply and disclose):** an item is "fast-growing" only when it is **recently listed (low time on air)** *and* has **strong estimated weekly sales (and/or estimated weekly revenue)** — that is, it gained real traction in a short time. Rank the shortlist by that momentum (estimated weekly sales/revenue relative to how recently it was listed), not by revenue on its own. **State this rule in the output.** Keep a clearly stated **top-N** (for example top 30) and say it is a top-N. **Fallback (not "growth"):** if recency data is unavailable, you may instead show the **top international items by estimated weekly revenue** — but label it plainly as a *top-by-revenue fallback*, never call it "fast-growing" or "growth", and say the momentum rule could not be applied. ## Output Respond in the seller's language (default pt-BR). The product list always renders as a markdown table, and **includes a Category column** (the cross-category differentiator): | MLB | Nome | Vendedor | Categoria | Preço | Vendas (semana) | Receita (semana) | Classificação | Avaliações | Tempo no ar | Frete grátis | Mercado Envios Full | Tipo de anúncio | Medalha | |---|---|---|---|--:|--:|--:|--:|--:|--:|:--:|:--:|---|---| - The **MLB** identifier links to the item's JoomPulse page. - State the fast-growth rule — recently listed **and** strong estimated weekly sales/revenue, ranked by that momentum — and the top-N cap you applied, in one short line. If you used the top-by-revenue fallback instead, say so and do not call it growth. **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 avaliações são histórico real do Mercado Livre. ## Visualization When the client can render inline visuals, present metric cards and a chart; otherwise fall back to the markdown table plus text cards. Never block on visuals. The product table always renders as markdown, on every surface, and the ⚠️ disclaimer always stays in the text. When inline visuals are available: - **Three cards:** number of products in the shortlist (top-N), number of distinct categories represented, and average ticket. - **A horizontal bar** of the top products by estimated weekly revenue, plus an optional small companion bar of which categories contribute the most fast-growing international products. Render charts only when there are enough items (skip under about four). Presentation rules: render a chart only when the data supports it; any change column uses a word header, never a bare "Δ". ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **High-ticket, low-rotation skew:** marketwide imported items can skew toward expensive, slow-moving SKUs; surface that honestly rather than implying broad momentum that is not there. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the seller. - **Never silently limit coverage** — always state the top-N cap.
growing-leaf-category-tracker6.28 KB
---
name: growing-leaf-category-tracker
description: >
Finds the fastest-growing deep sub-categories (leaf categories, deeper than the
third level) under a chosen Mercado Livre (Brasil) category, ranked by
month-over-month revenue growth, using JoomPulse market data. Use it when a
seller picks a category and wants the niches inside it that are growing fastest
right now. Triggers include: "fast-growing subcategories", "which niches are
growing in this category", "deep growing categories", and the pt-BR equivalents
"subcategorias em crescimento", "nichos que mais crescem nesta categoria",
"categorias profundas em alta". Sales and revenue are JoomPulse estimates, not
real transactions. For one category's opportunity index, use the
category-opportunity-index skill; for comparing category aggregates against a
user-supplied previous snapshot, use the category-monitor skill; for new products
inside a category, use the new-growing-products-in-category skill.
---
# Growing Leaf Category Tracker
This skill takes one Mercado Livre (Brasil) category and surfaces the **deep
sub-categories inside it that are growing fastest** — the leaf niches (below the
third level of the category tree) with the strongest month-over-month growth in
estimated revenue. It helps a seller who already knows a broad area decide which
specific niche to move into next.
This is a niche-discovery snapshot, not a tracker over time. For a single
category's opportunity index and market size, use the category-opportunity-index
skill. To compare a category's aggregate numbers against a user-supplied previous
snapshot, use the category-monitor skill. To find specific new products inside a
category, use the new-growing-products-in-category skill.
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user names a parent category (free text is fine).
- The available JoomPulse tools can resolve a category, walk its sub-categories,
and return each one's current monthly market stats (estimated revenue and
sales, number of active sellers, number of products) and its growth direction.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can find growing niches.
## 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.
- **Read-only.** The skill never writes or modifies anything.
- **Language:** detect the seller's language and respond in it. Default to pt-BR.
- **Keep the workflow invisible.** Surface the answer, not the steps. Never fill
gaps from general knowledge; show `—` for any missing value.
## Workflow
### Step 1 — Resolve the parent category
Ask the seller for a category if none was given, then use JoomPulse to match the
free text to a category. If several plausible matches come back, list the top
candidates (name and depth level) and let the seller choose.
### Step 2 — Collect the deep sub-categories
Use JoomPulse to list the descendant categories below the chosen one, keeping the
**deep ones — leaf niches deeper than the third level**. For each, get the
current monthly estimated revenue and sales, the number of active sellers, the
number of products, and the month-over-month revenue growth.
### Step 3 — Keep the fast-growing ones
From those deep sub-categories, **keep only the ones that are growing fast**
(strong month-over-month revenue growth), then order the kept niches by growth,
fastest first. Use the always-positive monthly totals for size (revenue, sales,
products); growth is the filter that selects the niches — never present a change
figure as a total or as a table column.
## Output
Respond in the seller's language (default pt-BR), with no commentary about how the
result was produced. The ranking always renders as a markdown table:
| Categoria | Qtd. vendedores | Receita (mês est.) | Vendas (mês est.) | Produtos |
|---|--:|--:|--:|--:|
- Exactly these five columns — fast growth is the filter that selects the niches,
not a displayed column.
- Each category links to its JoomPulse category dashboard page.
**Disclaimer (every report):**
> ⚠️ Receita e vendas são estimativas do JoomPulse com base no histórico de
> anúncios — não são transações reais. / Revenue and sales are JoomPulse
> estimates based on historical listing data — not actual transactions.
## Visualization
When the client can render inline visuals, present metric cards and a chart;
otherwise fall back to the markdown table plus text cards. Never block on visuals.
The ranking table always renders as markdown in the response text, on every
surface, and the ⚠️ disclaimer always stays in the text.
When inline visuals are available:
- **Three cards:** number of growing niches found, the single fastest-growing
niche (name + growth %), and the average growth across the shortlist.
- **A size-versus-growth bubble chart:** each niche placed by market size
(estimated monthly revenue) against its growth %, with bubble size showing the
number of sellers — the upper-right area is the large-and-fast-growing sweet
spot. Render this chart only when the data supports it (a few niches); fall back
to a simple bar of the top niches by growth, and skip the chart entirely when
there are too few niches.
Presentation rules: any change or difference column uses a word as its header
("Variação" / "Crescimento"), never a bare "Δ" symbol; render a chart only when
the underlying data supports it.
## Notes & Guardrails
The seller should never see a system or stack error — only a friendly next step.
- **Flat parent category:** if the chosen category has no sub-categories deeper
than the third level, say so plainly and offer to look at a broader parent
category instead of returning an empty table.
- **Negative or odd growth:** some niches may be shrinking; surface that honestly
rather than hiding it, and never invent a positive trend.
- **Market data temporarily unavailable:** retry once quietly; if it is still
down, say market data is temporarily unavailable and to try again. Never paste
internal error text, HTTP codes, or field names to the seller.
- **Never silently limit coverage** — if you rank only some of the niches, say so.
high-demand-low-quality-finder8.98 KB
---
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.
ml-product-analysis10.4 KB
--- name: ml-product-analysis description: > Analyzes one Mercado Livre product and its competitors. Use this skill when a user wants to size up a single product or the products that compete with it — by a Mercado Livre link, a JoomPulse link, a photo, or a row of data. It returns a product card for the subject plus a ranked table of comparable products, each with price, estimated monthly sales and revenue, logistics, and catalog / buy-box status. Triggers include: "analyze this product", "how much does this sell", "find similar products", "find competing products", and the pt-BR equivalents "analisar este produto", "quanto vende esse produto", "produtos parecidos", "produtos concorrentes", "análise por foto", "análise por link". For "what new products should I add to my store" across a whole catalog, use the assortment gap-analysis skill instead — this skill analyzes a single product the seller already has in hand. --- # Mercado Livre Single-Product Analysis This skill analyzes **one** Mercado Livre (Brasil) product and the products that compete with it. Given a single product — by a Mercado Livre link, a JoomPulse link, a photo, or a row of data — it identifies the product, finds comparable listings, and returns a product card for the subject plus a ranked table of analogs. For each product it shows price, estimated monthly sales and revenue, logistics, and catalog / buy-box status. This is different from whole-catalog assortment analysis. If the user wants to know which new products to add to their store, hand off to the gap-analysis skill. This skill works on a single product the seller already has in hand. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user provides one product as a Mercado Livre link, a JoomPulse link, a product photo, or a row of data (a `.csv` / `.xlsx` file, a pasted table, or typed fields). - The available JoomPulse tools can look up product market data and search for comparable listings. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can analyze a product or find competitors. ## 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. - **Prices are Mercado Livre prices only.** Do not surface sourcing prices, margins, or profit figures. - **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. Do the analysis quietly and present only the result. If one approach to finding the product or its competitors does not work, switch to another silently; only if every approach fails do you say one short, friendly sentence. ## Input Router Resolve the input to a single normalized subject product, then find analogs. The first matching rule wins: 1. **A photo** → Photo route. 2. **A `.csv` / `.xlsx` file, a pasted table, or typed fields** → Tabular route. 3. **A Mercado Livre link** → MLB route. 4. **A JoomPulse product link** → JoomPulse route. 5. **A JoomPulse store link** → this is a whole store, not one product. Ask for a specific product link or a product title; whole-store analysis belongs to the gap-analysis skill. 6. **Any other link** (a different marketplace, a generic web page) → do not scrape it. Explain that only Mercado Livre and JoomPulse links can be resolved directly, and ask the seller to paste the product name or upload a photo → Keyword route. 7. **Plain text** (a product name or keywords) → Keyword route. Every route converges on one normalized subject product plus a set of candidate analogs. ### MLB route 1. Extract the product identifier from the link, noting whether it is a catalog product or an individual listing. 2. Look up the canonical title, category, and attributes for that identifier when available. If the lookup is unavailable for that listing, continue with the JoomPulse market data instead. 3. Fetch JoomPulse market data for the subject. For a catalog product, several competing listings may come back; pick the representative one (the strongest seller / buy-box winner) for the card and read competition from the number of buy-box sellers and total sellers. 4. Build the subject from that data, then find analogs. ### JoomPulse route Look up the product directly in JoomPulse by its identifier, optionally enriching the title and attributes from the canonical product lookup, then find analogs. ### Photo route Image-based matching is primary; visual inspection is the fallback. Accept common image formats, including phone formats such as HEIC/HEIF. Always tell the seller the results are **visually similar — not a guaranteed exact match.** 1. Use the available JoomPulse image-based product search to find similar listings from the photo. Alongside the matches, this search can return a quick opportunity summary — an overall verdict on whether the product is worth selling, the number of matching listings, and aggregate market stats. For a fast answer you can present that summary directly (still labeled as a visual match); otherwise carry the matched listings into the analog pipeline below. 2. If image search is unavailable or returns nothing, inspect the photo yourself: note the product type, brand and model if legible, color, material, and key attributes. Turn that into search keywords and run the Keyword route. Label the subject card as the best visual match, not an exact match. ### Tabular route Normalize the rows into product records (handle pt-BR column headers and `R$ 1.234,56`-style prices). For each row: if it carries a Mercado Livre identifier, use the MLB route; otherwise its title drives the Keyword route. One row yields one subject. For several rows, analyze each — cap at a small number and say so when you do. ### Keyword route Build a clean search query from the title or photo description, plus a broadened fallback query. ## Finding Analogs Both the keyword and photo paths feed the same analog pipeline: 1. **Search for candidates.** Use JoomPulse semantic product search to find listings similar to the subject, keeping the closest matches. Query in pt-BR first and English second. If recall is too low, retry once with the broadened query. For the photo route, the image-search results play this role. 2. **Augment when recall is thin.** Optionally widen the candidate set using category and keyword search, or constrain to the subject's predicted category. 3. **Merge and drop the subject.** Deduplicate the candidate identifiers and remove the subject itself. 4. **Validate and fetch market data.** Look up the candidates in JoomPulse to confirm they are active listings and to fetch price, sales, revenue, logistics, and catalog / buy-box fields. 5. **Rank.** Score each candidate by a blend of similarity to the subject, demand (estimated revenue), and how crowded the listing is, then sort by that score. Drop candidates with no sales. Present a single ranked list — do not split analogs into thematic sub-tables. ## Output Respond in the seller's language. The visible reply contains only the result, in this order, with no commentary about how it was produced: 1. An optional one-line framing sentence. 2. The subject product card. 3. The ranked analogs table. 4. The disclaimer. 5. The download offer. Use plain markdown so it renders cleanly in any client. **Subject card** — product name and image, category and brand, current price and historic minimum price, estimated monthly sales and revenue, logistics (Mercado Envios Full / free shipping / international), catalog / buy-box status (whether it is in the catalog, the number of buy-box sellers and the buy-box price, and the total number of sellers), and links to the product on Mercado Livre and on JoomPulse. On the photo route, label the card as the best visual match, not an exact match. **Analogs table** — one row per comparable product, with the product name, brand, price (current and historic minimum), estimated monthly sales and revenue, logistics, catalog / buy-box status, number of sellers, review rating, and a links column holding the Mercado Livre and JoomPulse links. Keep both links for every product. You may translate the column headers and card labels into the seller's language. **Disclaimer (every report):** > ⚠️ Sales and revenue are JoomPulse **estimates** based on historical listing > data — they are **not** actual transactions. / Vendas e receita são > **estimativas** do JoomPulse com base no histórico de anúncios — **não são > transações reais**. **Download** — offer a downloadable spreadsheet (`.xlsx` plus `.csv`) of the subject and analogs, with separate Mercado Livre and JoomPulse link columns so the seller can see the source of every product's data. ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **Subject not tracked in JoomPulse / no sales:** JoomPulse tracks products that have sales, so a product may not be tracked. Say so, show whatever canonical product facts are available, and still surface analogs by category or keywords. - **Valid product, no market data:** show the canonical product facts and note that there is no JoomPulse estimate; draw analogs from the predicted category. - **Photo:** image search first; if it is unavailable or empty, switch silently to visual inspection plus keywords. Always label results as similar, not exact; if the match is ambiguous, show the top candidates and ask the seller to confirm. - **Search returns nothing:** an empty result for a niche or non-pt-BR query is normal — retry once with an English or broadened query, then move on. If search is temporarily unavailable, say so briefly and rely on the other data. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable. Never paste internal error text, HTTP codes, or field names to the seller. - **Never silently limit coverage** — if you analyze only some rows or some candidates, say so. - **Prefer precision over recall.** A shorter list of confident analogs is better than a long list of weak ones.
my-product-vs-catalog8.28 KB
--- name: my-product-vs-catalog description: > Compares the seller's own Mercado Livre listing against the available competing listings of the same catalog product — the buy-box competition — and says where they win, lose, and what to fix first. Use it when a seller asks why they don't win the buy-box, why they don't sell despite the same product, or how they rank inside a catalog, given a Mercado Livre or JoomPulse link or a listing or catalog product identifier. It scores each parameter — price, free shipping, Full, listing type, seller reputation, official store — as Melhor, Na média, Pior, or Criticamente pior, presents reviews and rating as context, and returns a verdict, a comparison table, prioritized actions, and a spreadsheet. Triggers include "why don't I win the buy-box" and the pt-BR "por que não ganho o buy-box". Mercado Livre (Brasil) only; sales and revenue are JoomPulse estimates, not real transactions. For a product and its competitors, use the single-product analysis skill; for one over time, the change-monitor skill. --- # Mercado Livre — My Product vs. Catalog (Buy-Box Competitiveness) This skill compares the seller's **own** Mercado Livre (Brasil) listing against **the available competing listings of the same catalog product** — the sellers competing for the same buy-box — and tells the seller, in pt-BR, where they win, where they lose, and **what to fix first** to win the buy-box and convert more. Given a product by a Mercado Livre link, a JoomPulse link, a Mercado Livre listing identifier, or a catalog product identifier, it identifies the seller's listing and the catalog it belongs to, gathers the available competing listings, and produces a short verdict, a comparison table, a prioritized list of improvements, and a downloadable spreadsheet. The comparison covers the available competing listings; when a large catalog is sampled, it says so. This is different from the sibling skills. To size up a single product and find the products that compete with it, use the single-product analysis skill. To track how one product moves over time, use the change-monitor skill. **This** skill answers "how do I stack up against the other sellers of the exact same product, and what should I change to win?" ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The seller provides their product as a Mercado Livre link, a JoomPulse link, a Mercado Livre listing identifier, or a catalog product identifier. - The available JoomPulse tools can look up a listing's current market data, the set of competing listings for the same catalog product, and the buy-box winner's attributes. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can compare a listing against its catalog. ## Scope - **Mercado Livre (Brasil) only.** Other marketplaces are out of scope. - **It compares within one catalog product.** The comparison is the seller versus the other sellers of the same catalog product (the same buy-box), not a search for similar products. - **Sales and revenue are JoomPulse estimates** derived from historical listing data — not real transactions. Disclose this in every output. Price, rating, review count, logistics, and seller attributes are real Mercado Livre data — 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 lookup returns nothing, switch approaches quietly; only if everything fails do you say one short, friendly sentence. ## How It Works 1. **Identify the product.** Resolve the link or identifier to the seller's listing and the catalog product it belongs to. If the input is a catalog product (rather than a single listing), ask the seller which listing is theirs, since the whole point is to compare *their* listing against the rest. The catalog product is the key that groups competing sellers. 2. **Gather the catalog.** Collect every active competing listing for that catalog product, plus the buy-box winner's attributes and the catalog's overall totals, so there is a clear "catalog leader" to benchmark against. 3. **Compare and classify.** For each parameter, compare the seller's value to the catalog median, the best/cheapest competitor, and the buy-box winner, and label it (see Status levels below). 4. **Prioritize.** Sort the gaps by how much they cost: buy-box and conversion levers first, quick wins ahead of slow ones — which naturally yields the order price → logistics → reputation. ## Parameters Compared - **Price** — versus the catalog median, the cheapest competitor, and the buy-box price. - **Free shipping (frete grátis)** — whether the seller offers it and how common it is among competitors and the buy-box winner. - **Mercado Envios Full** — same, since Full strongly influences exposure and the buy-box. - **Listing type** — Premium / Clássico / Grátis tier, versus the catalog. - **Reviews and rating** — on catalog products these are usually shared across all sellers of the same product, so they are generally not comparable between competitors. Present them as context, not as a scored Melhor/Pior dimension, instead of treating a shared number as an advantage. - **Seller reputation and medal** — versus the buy-box winner and the catalog. - **Official store** — whether the seller or the buy-box winner is an official store (shown when relevant). ## Status Levels Each parameter gets one status, with a colour marker so it reads at a glance: - 🟢 **Melhor** — better than most of the catalog; keep it. - 🟡 **Na média** — on par with the catalog, i.e. level with most sellers (not merely an arithmetic average). - 🟠 **Pior** — clearly behind the catalog. - 🔴 **Criticamente pior** — behind on a buy-box or conversion lever (price, free shipping, Full) where the gap is large — this is what most directly costs the sale. - **—** — not compared (no data available, or a catalog-shared metric like reviews). ## Output Respond in pt-BR, leading with the verdict: 1. **Veredito** — two to four sentences: where the seller wins, where they lose, their buy-box position, and the single top priority. 2. **Comparison table** — one row per parameter: `Parâmetro`, `Meu produto`, `Catálogo / Concorrentes`, `Status`, `O que fazer`. 3. **Improvement priorities** — a numbered list, ordered by impact: what matters most for competitiveness first, then quick wins, then the long-term levers. 4. **Competitors (optional)** — a short table of competing listings, cheapest first, flagging the buy-box winner. 5. **Disclaimer** — include the bilingual estimate notice below. 6. **Downloads** — offer the comparison as a downloadable spreadsheet. **Disclaimer (every report):** > ⚠️ Sales and revenue are JoomPulse **estimates** based on historical listing > data — they are **not** actual transactions. Price, rating, reviews, logistics, > and seller data are real Mercado Livre data. / 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, avaliações, logística e dados do > vendedor são dados reais do Mercado Livre. ## Edge Cases - **The input is a catalog product, not a single listing:** ask which listing is the seller's before comparing. - **The product is not part of a catalog:** there is no shared buy-box to compete in; say so and offer the single-product analysis skill instead. - **The seller is the only seller:** there is nothing to compare — report the buy-box status and say they are currently alone on this product. - **A very large catalog:** when there are more competitors than can be fetched at once, the medians and shares are based on a sample — say so — while the buy-box leader's attributes remain exact. - **A listing is not tracked by JoomPulse:** the index covers products with sales; say it isn't tracked and offer to try another listing or link. - **A parameter has no data:** show it as "dado indisponível" rather than dropping it, so the seller can see every parameter was checked.
new-growing-products-in-category8.74 KB
--- name: new-growing-products-in-category description: > Finds new, already-selling product listings inside one Mercado Livre (Brasil) category on JoomPulse — recent listings (by default under about 30 days on air) that are well rated (rating above 3) and have real traction (more than about 30 estimated sales in the last month), all thresholds overridable — and returns them as a product table with a JoomPulse link per listing. Use it when a seller wants fresh, promising entrants in a niche. Triggers include: "new products in category", "what's launching and already selling", "recent best-sellers in my category", and the pt-BR equivalents "produtos novos na categoria", "novos anúncios que já vendem", "lançamentos em alta na minha categoria". Mercado Livre (Brasil) only; sales and revenue are JoomPulse estimates, not real transactions, while price, rating, and review count are real history. For weak-rated but well-selling products to beat, use the high-demand low-quality skill; for tracking one product over time, use the product change-monitor skill. --- # New & Growing Products in a Category This skill surfaces **newly launched listings that are already selling well** inside one Mercado Livre (Brasil) category, using JoomPulse market data. The seller picks a category; the skill returns the recent, well-rated, traction-having listings as a product table, each row linking to its JoomPulse page so the seller can dig deeper. This is a discovery snapshot, not a tracker and not a whole-catalog audit. For products that sell well but are poorly rated — gaps you can enter with a better offer — use the high-demand low-quality skill. To follow how one product moves over time, use the product change-monitor skill. This skill answers "which fresh entrants in this niche are already getting traction right now?" ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user provides a category, either by name or by its category identifier. - The available JoomPulse tools can look up the active listings in a category and resolve a category name to its identifier. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can find new growing products in a category. ## 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 — Capture the category and confirm the thresholds 1. Ask the user for the **category** — a name or a category identifier. 2. The skill keeps three filters, each with a **default the user may override**: - **recently listed** — under about 30 days on air; - **well rated** — rating above 3; - **real traction** — more than about 30 estimated sales in the last month. 3. Echo back what you captured (the category plus the three thresholds in use) so the user can adjust before you run, then remember those inputs for the rest of the run. 4. If the user gave a category **name**, resolve it to its identifier first with JoomPulse, matching the current category list. If the name is ambiguous, list the candidate categories with their level and ask which one. If the user already gave an identifier, skip resolution. ### Step 2 — Find the new, already-selling listings 1. Use JoomPulse to retrieve the **active listings** in that category, with the fields each row needs: name, seller, listing type, seller medal, free shipping and Mercado Envios Full flags, price, estimated weekly sales and revenue, estimated monthly sales, rating, review count, and how long the listing has been on air. Pull a generous set of listings so the filters have room to work. 2. **Apply the three filters** to the retrieved listings: keep only those that are recently listed (under the day-on-air threshold), well rated (above the rating threshold), and have real traction (above the monthly-sales threshold). 3. **Sort the survivors strongest-first** by estimated monthly sales, breaking ties by estimated weekly revenue, so the most promising fresh entrants are on top. ## Output Respond in the seller's language. Present the result with no commentary about how it was produced. Use plain markdown so it renders cleanly in any client. Lead with a short intro line naming the category and the three thresholds actually applied, and state that the listings are **ranked by estimated monthly sales** (ties broken by estimated weekly revenue). **Product table** — one row per surviving listing, ranked by estimated monthly sales, in this order: - Listing identifier (the Mercado Livre code), linked to its JoomPulse page - Name - Seller - Price - Estimated sales (monthly) — the ranking metric and the figure behind the monthly-sales traction filter - Estimated sales (weekly) - Estimated revenue (weekly) - Rating - Reviews - Time on air (days) - Free shipping (Sim/Não) - Mercado Envios Full (Sim/Não) - Listing type - Seller medal Empty field → `—`; never guess or fabricate. Below the table, list the Mercado Livre codes explicitly, each as a clickable JoomPulse link, so they are easy to copy. You may translate the column headers into the seller's language. **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 avaliações são histórico real do Mercado Livre. ## Visualization When the client can render inline visuals, present metric cards and, when the data supports it, a bar chart above the markdown table; otherwise present a short markdown cards block (or a tiny two-column Métrica | Valor table) plus text. **The product table always renders as markdown**, never inside a widget — it is the main deliverable. - **Summary cards** over the surviving listings: - **Produtos novos encontrados** — how many listings survived the filters. - **Vendas/mês (mediana est.)** — median of the estimated monthly sales. - **Ticket médio** — average price across the survivors. - **Idade média (dias no ar)** — average time on air. - **Top-N bar (optional)** — the strongest new products by estimated monthly sales. Label each bar with a short product name (truncate long ones) plus its Mercado Livre code. **Render this chart only when the data supports it** — skip it when fewer than four listings survive; the cards and table are enough. This is a discovery list, not a week-over-week tracker, so it has **no change or "Variação" column and no 🟢/🔴/🆕 legend** — those belong only to trackers that compare runs. Use a neutral color ramp for the bar (no semantic coloring). If you ever show seller medals as colored chips, use the standard palette: platina = purple, ouro = amber, prata = blue, sem medalha = white with a thin border. **Formatting (both surfaces):** round numbers and use pt-BR formatting — prices and revenue as `R$` with `.` thousands and `,` decimals (e.g. `R$ 1.234,50`); counts as integers with `.` thousands; rating to one decimal (e.g. `4,6`); time on air as whole days. Empty field → `—`. The estimate disclaimer is mandatory on every output. ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **No listings survive the filters:** say that no new listings currently match these thresholds in this category, and offer to relax them (for example, a larger day-on-air window or a lower monthly-sales floor). Keep it in pt-BR. - **Category not found or ambiguous name:** list the candidate categories (name and level) and ask the user to pick one. - **Empty fields:** show `—` for any value that is missing; never assume "no" for an unknown logistics flag and never fabricate a number. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable and to try again shortly. Never paste internal error text, HTTP codes, or field names to the seller.
popular-international-products5.35 KB
--- name: popular-international-products description: > Finds fast-growing international (imported) products inside ONE chosen Mercado Livre (Brasil) category, using JoomPulse, and returns them as a product table with price, estimated weekly sales and revenue, rating, reviews, time on air, shipping, listing type and seller medal, a JoomPulse link per item, and a pointer to JoomPro for sourcing. Use it when a seller wants the trending imported items in a specific category. Triggers include: "popular international products in this category", "fast-growing imported products", and the pt-BR equivalents "produtos internacionais em alta nessa categoria", "produtos importados que mais crescem", "achados internacionais para importar". Sales and revenue are JoomPulse estimates, not real transactions. For the same search across all categories at once, use the all-categories international skill. --- # Popular International Products This skill looks inside **one** Mercado Livre (Brasil) category and returns the **fast-growing international (imported) products** in it — items flagged as cross-border, ranked by recent momentum. For each it shows price, estimated weekly sales and revenue, rating, reviews, time on air, shipping, listing type and seller medal, with a JoomPulse link per item and a pointer to JoomPro for sourcing. It covers a single category and gives a general JoomPro search link. To scan all categories at once, use the all-categories international skill. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user names a category (free text is fine). - The available JoomPulse tools can return the active international listings in a category with their price, estimated sales and revenue, rating, reviews, time on air, logistics, listing type and seller medal. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can find international products. ## 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. By contrast, price, rating, and review count are real history. Disclose the estimate caveat in every output. - **Read-only.** The skill never writes or modifies anything. - **Language:** detect the seller's language and respond in it. Default to pt-BR. - **Keep the workflow invisible.** Surface the answer, not the steps. Show `—` for any missing value; never fabricate one. ## Workflow ### Step 1 — Resolve the category Ask for a category if none was given, then use JoomPulse to match the free text to a category, disambiguating with the seller when several plausible matches return. ### Step 2 — Find fast-growing international products Use JoomPulse to get the active **international (imported)** listings in the category. There is no single "fast growth" flag, so use a clear momentum proxy and **state the rule you used**: recently listed items (low time on air) with strong estimated weekly sales or revenue. Do not label a list as fast-growing when it is ranked by revenue alone. Keep the shortlist (about 10). ## Output Respond in the seller's language (default pt-BR). The product list always renders as a markdown table: | MLB | Nome | Vendedor | Preço | Vendas (semana) | Receita (semana) | Classificação | Avaliações | Tempo no ar | Frete grátis | Mercado Envios Full | Tipo de anúncio | Medalha | JoomPro | |---|---|---|--:|--:|--:|--:|--:|--:|:--:|:--:|---|---|---| - The **MLB** identifier links to the item's JoomPulse page. - **JoomPro** is a general JoomPro search link (`https://joom.pro/pt-br/search`) for sourcing the item. - State the fast-growth rule you applied, in one short line. **Disclaimer (every report):** > ⚠️ 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 avaliações são > histórico real do Mercado Livre. ## Visualization When the client can render inline visuals, present metric cards and a chart; otherwise fall back to the markdown table plus text cards. Never block on visuals. The product table always renders as markdown, on every surface, and the ⚠️ disclaimer always stays in the text. When inline visuals are available: - **Three cards:** number of international products found, total estimated weekly sales, and average ticket. - **A horizontal bar** of the top ~10 international products by estimated weekly revenue. Render the chart only when there are enough products (skip it under about four), and never block on it. Presentation rules: render a chart only when the data supports it; any change column uses a word header, never a bare "Δ". ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **Few or no international items:** imported listings in some categories are high-ticket and low-rotation; if the shortlist is thin or has little estimated movement, say so honestly instead of padding it. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the seller. - **Never silently limit coverage** — if you show only part of what was found, say so.
product-change-monitor8.35 KB
---
name: product-change-monitor
description: >
Monitors how one or a few Mercado Livre products or listings changed over a
period — by default week over week. Use it when a user wants to track how a
named product changes over time, given a Mercado Livre link, a JoomPulse link,
a Mercado Livre listing identifier, or a catalog product identifier. It returns
a change table: per product the current value and the difference versus about a
week ago for price, rating, and review count, plus the current estimated weekly
sales and revenue, logistics, listing type, seller medal, and time on air, with
a JoomPulse link per product. Triggers include: "monitor this product", "track
price changes", "what changed this week", "did the price drop", and the pt-BR
equivalents "monitorar este produto", "acompanhar este anúncio", "o preço caiu",
"variação de avaliações". Sales and revenue are JoomPulse estimates, not real
transactions; price, rating, and reviews are real history. For point-in-time
product and competitor analysis, use the single-product analysis skill.
---
# Mercado Livre Product Change Monitor
This skill shows how **one** Mercado Livre (Brasil) product — or a few of them —
**changed over a period**, by default the last week. Given a product by a Mercado
Livre link, a JoomPulse link, a Mercado Livre listing identifier, or a catalog
product identifier, it reports for each product the current value **and the
change versus about a week ago** for the metrics that have real history (price,
rating, review count), plus the current snapshot for estimated weekly sales and
revenue, logistics, listing type, seller medal, and how long the listing has been
on air. The result is a change table with a JoomPulse link per product, plus a
downloadable spreadsheet.
This is different from a single point-in-time analysis. To size up a product and
find the products that compete with it, use the single-product analysis skill. To
decide which new products to add across a whole catalog, use the gap-analysis
skill. This skill answers "how did this product move over time?" for a product
the user names.
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user provides one product (or a small set) as a Mercado Livre link, a
JoomPulse link, a Mercado Livre listing identifier, or a catalog product
identifier.
- The available JoomPulse tools can look up a product's current market data and
its daily price and reviews history.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can monitor a product's changes.
## 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 — Identify the product(s)
Resolve the input to one or more Mercado Livre listings:
1. From a Mercado Livre link, a JoomPulse link, or a pasted identifier, determine
whether you have an individual **listing** or a **catalog product**.
2. For a catalog product, expand it to the competing listings for that product,
pick the representative one (the strongest seller / buy-box winner) for the
row, and note the buy-box competition (how many sellers compete).
3. Confirm the listing is active. If there is no market data for it, see Notes &
Guardrails.
4. A JoomPulse store link is a whole store, not one product — ask for a specific
product link or identifier (whole-store work belongs to the gap-analysis
skill). Any other marketplace link cannot be resolved directly — ask for a
Mercado Livre or JoomPulse link or identifier.
### Step 2 — Collect current state and history, then compare
1. **Current snapshot** (from JoomPulse): product name, category, seller, listing
type, seller medal, logistics (Mercado Envios Full / free shipping), how long
the listing has been on air, and the estimated **weekly** sales and revenue.
2. **Real daily history** (from JoomPulse): price, rating, and review count over
roughly the last month, so a baseline a week back is reachable.
3. **Compare current versus about a week ago**, following this rule:
- The **current point** is the latest observation available on or before today.
- The **baseline** is the observation about seven days earlier.
- If there is no observation exactly seven days back, use the **nearest earlier
observation within tolerance** (roughly up to two weeks back in total) and
**state which date was actually used** — never silently substitute it.
- If no comparable earlier observation exists within tolerance, show the
current value only and say the period comparison is not available for that
metric. Do not invent a baseline.
4. Estimated sales and revenue are already **weekly** figures, so present them as
the current week's value; they carry no period-over-period difference.
## Output
Respond in the seller's language. Present the result with no commentary about how
it was produced. Use plain markdown so it renders cleanly in any client.
**Change table** — one row per monitored product, with these columns:
- Product / listing identifier
- Name
- Category
- Seller
- Price (current value, with the change folded into the cell — for example the
percentage change versus the baseline)
- Estimated sales (weekly)
- Estimated revenue (weekly)
- Rating (current value, with the **real numeric difference** versus the baseline
in the cell — for example `+0.2`, `-0.3`, or `0` when unchanged)
- Reviews (current count, with the absolute growth versus the baseline in the
cell — for example `+832`)
- Time on air
- Free shipping
- Mercado Envios Full
- Listing type
- Seller medal
- A JoomPulse link for the product
Do **not** put a delta symbol or "(Δ)" in any column header — it confuses sellers;
the change belongs inside the cell. Below the table, state the period actually
compared (for example "today versus seven days ago") and surface any baseline
date that was not exactly the target, so the comparison is transparent. You may
translate the column headers into the seller's language.
**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 avaliações são histórico real do Mercado Livre.
**Download** — offer a downloadable spreadsheet (`.xlsx` plus `.csv`) of the
change table.
## Notes & Guardrails
The seller should never see a system or stack error — only a friendly next step.
- **Product not tracked in JoomPulse / no sales:** JoomPulse tracks products that
have sales, so a product may not be tracked. Say so and offer to try a different
link or identifier; you cannot build a history for an untracked product.
- **New listing or too little history:** if there is less than about a week of
data, show the current snapshot and explain that the period comparison is not
available yet; suggest re-running in a few days to start a trend.
- **Catalog product:** the daily history is per listing, so resolve a catalog
product to its listing(s) first; if several sellers compete, monitor the
representative listing and mention the buy-box competition.
- **Unknown flags:** when a logistics flag (such as Mercado Envios Full) is
unknown, show it as unknown — do not assume "no".
- **Market data temporarily unavailable:** retry once quietly; if it is still
down, say market data is temporarily unavailable. Never paste internal error
text, HTTP codes, or field names to the seller.
- **Never silently limit coverage** — if you monitor only some of several
listings, say so.
pulse-find-exact-same-product3.49 KB
---
name: pulse-find-exact-same-product
description: >
Finds product listings that appear to represent the same real-world product as a
reference item. Use this skill when a user wants to find duplicate listings,
match a product across listings, identify identical products by title or URL,
compare product photos against marketplace listings, or find the same product
on Mercado Livre.
---
# Find Exact Same Product
This skill helps find listings that appear to represent the same real-world
product as a reference product.
"The same product" means the candidate listing matches the reference item's
identity: brand, model, variant, color, size, capacity, pack count, bundle
contents, and other defining attributes visible from the provided product data.
Formatting, casing, punctuation, and translation differences are acceptable when
the underlying product is clearly the same.
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user provides a product title, product URL, product identifier, or product
image.
- The available JoomPulse tools can search marketplace listings and return
enough product data to compare candidates.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can search or compare products.
## Workflow
1. Resolve the reference product.
- If the user provides a title, use it directly as the reference.
- If the user provides a product URL or identifier, fetch the available
product details first.
- If the user provides an image, use the available image-based product search
workflow to generate candidate listings.
2. Search for candidate listings.
- Use JoomPulse product search tools to find plausible candidates.
- Treat search results as candidate generation, not final truth.
- Prefer a compact candidate set first, then broaden only when recall is
clearly too low.
3. Enrich candidates.
- Fetch product attributes, title, seller/listing metadata, images, and links
when available.
- Keep enough source data to explain why a candidate was accepted or rejected.
4. Decide exact matches.
- Accept a candidate only when the defining attributes match the reference.
- Reject candidates when brand, model, size, color, capacity, pack count,
bundle contents, or other defining attributes differ.
- If data is insufficient for a confident match, do not mark it as exact.
- Do not rely on title similarity alone when important attributes are missing
or ambiguous.
5. Return results.
- List confirmed matches with product links when available.
- Include a short rationale for each accepted match.
- If there are no confident matches, say so clearly and summarize what was
checked.
- When useful, include rejected near-matches separately with the key reason
they were rejected.
## Output Format
Use a concise table when there are multiple candidates:
| Result | Product | Link | Why it matches |
| --- | --- | --- | --- |
| Match | Product title | Product URL | Same brand, model, size, and variant |
For a single match, a short paragraph with the product link and rationale is
enough.
## Notes
- Prefer precision over recall. A smaller list of confident matches is better
than a broad list of uncertain candidates.
- Do not expose raw private data, internal identifiers, or implementation
details in the final answer.
- If the user asks for bulk matching, process items one by one and make
uncertainty explicit for each item.
seller-overview-tracker9.99 KB
--- name: seller-overview-tracker description: > Snapshot tracker for one Mercado Livre (Brasil) seller via JoomPulse — estimated monthly revenue and sales, listing count, sales trend, reputation, seller medal, categories covered, and cancellation rate. Each run builds today's snapshot table and offers it for download; to see what changed, the user sends the seller's table from a previous period and the skill shows the metric-by-metric difference (old → new). The baseline is whatever table the user supplies — no hidden session memory. Use it to track one specific seller over time. Triggers: "track this seller", "monitor this store", "what changed for this seller", "compare this seller with last period", and the pt-BR "monitorar este vendedor", "acompanhar esta loja", "o que mudou nesse vendedor". Sales and revenue are JoomPulse estimates, not real transactions. To rank many sellers in a category and track how that ranking moves, use the top-sellers-in-category skill. Mercado Livre (Brasil) only. --- # Seller Overview Tracker This skill tracks **one Mercado Livre (Brasil) seller over time** — its estimated monthly revenue and sales, listing count, sales trend, reputation, seller medal, the categories it covers, and its cancellation rate. Each run builds **today's snapshot table** for the seller and offers it as a **downloadable table**. To see what changed, the user **supplies the seller's table from a previous period** (the one this skill produced before); the skill compares the two and shows the difference per metric. **The baseline is whatever table the user provides — there is no hidden session memory and nothing is stored server-side.** The seller is identified by a store link or a seller identifier. It is different from ranking work: to rank many sellers in a category and track how that ranking moves, use the top-sellers-in-category skill; to analyze one product, use the single-product analysis skill. This skill follows **one** seller. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user provides one seller as a Mercado Livre store link or a seller identifier. - For a period comparison, the user supplies a previous table that this skill produced for the same seller (pasted or uploaded). Without it, the skill produces a standalone snapshot. - The available JoomPulse tools can look up that seller's current market snapshot. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can monitor a seller. ## Scope - **Mercado Livre (Brasil) only.** Other marketplaces are out of scope. - **Sales and revenue are JoomPulse estimates** — estimated monthly revenue, estimated monthly sales, average ticket, and average price are not real transactions. Disclose this in every output. By contrast, the rolling 60-day and 365-day sales counts, the sales trend, and the cancellation rate are real Mercado Livre data. - **Read-only.** The skill never signs in as the seller or modifies a listing; it does not store the snapshot — the user keeps the downloadable table and brings it back next period. - **Language:** respond in pt-BR by default; mirror another language only if the user clearly uses it. - **The baseline is user-supplied.** Never claim a change without a previous table to compare against, and never infer or fabricate one from memory. - **Keep the workflow invisible.** The user wants the answer, not a play-by-play. If one approach does not return data, retry quietly; only if it still fails do you say one short, friendly sentence. ## Workflow ### Step 1 — Resolve the seller and pull today's snapshot 1. Resolve the seller from the store link or seller identifier the user provided. If given a store link, resolve it to the seller once. 2. Use JoomPulse to pull the current snapshot for that one seller: store name, estimated monthly revenue, estimated monthly sales, sales trend, cancellation rate, listing count, rolling 60-day and 365-day sales, the categories covered, seller medal, reputation, average ticket and average price, and location. 3. If the seller is not found, say so plainly and stop — invent nothing. ### Step 2 — Present today's snapshot and offer it for download Lay out the snapshot fields as a table, headed with the store name and the date. This table is the deliverable — and **offer it as a downloadable file (`.csv` / `.xlsx`)** so the user can save it and bring it back next period as the baseline. If any field comes back empty, show `—`; never substitute a guess. Add the JoomPulse seller dashboard link. On a standalone snapshot there is **no change column and no color-dot legend** — just field and current value. ### Step 3 — Offer comparison, and compare if a previous table is supplied Invite the user to send a previous table for the same seller to compare periods. **If they provide one**, parse its values, align by field to today's snapshot, and render a comparison table with the difference per field. A difference **requires both an old and a new value** for the same field — if a field is missing or unreadable in the supplied table, show `—`, never a fabricated trend. If no previous table is supplied, the snapshot stands on its own and the user is told to save it for next time. ## Output Respond in pt-BR by default. Present the result with no commentary about how it was produced. **Snapshot (always):** a markdown table `| Campo | Valor atual |` for the rows below, plus a downloadable `.csv` / `.xlsx` of the same data. The snapshot / comparison table carries these rows (pt-BR labels): - Nome da loja - Receita média mensal (estimada) - Vendas médias mensais (estimadas) - Tendência de vendas - Taxa de cancelamento - Anúncios - Vendas (60 dias) - Vendas (365 dias) - Categorias - Medalha (platina / ouro / prata / sem medalha) - Reputação (5 verde, a melhor … 1 vermelho, a pior) - Ticket médio / preço médio - Localização (cidade, estado, país) - Link JoomPulse do vendedor **Comparison (only when a previous table is supplied):** a markdown table `| Campo | Era | Agora |`. Put the change (figure, percentage, or percentage point) inside the **Agora** cell, prefixed with a semantic color dot: - 🟢 **good:** revenue up, sales up, listings up, medal improved, reputation improved, cancellation rate **down**. - 🔴 **bad:** revenue down, sales down, listings down, medal worse, reputation worse, cancellation rate **up**. - The **cancellation rate is inverted** — down = 🟢, up = 🔴. - **Categorias** moving is neutral context — show the change with **no color dot**. Column headers are words (`Campo | Era | Agora`), never a bare "Δ" symbol. Show the color-dot legend (🟢/🔴) **only** in the comparison table, where the dots actually appear — never on a plain snapshot. Close with a short **Principais insights** section: with a comparison, interpret what moved; on a standalone snapshot, frame it as the starting picture with no trend claims. **Disclaimer (every report):** > ⚠️ Receita e vendas são estimativas do JoomPulse com base no histórico de > anúncios — não são transações reais. / Revenue and sales are JoomPulse estimates > based on historical listing data — not actual transactions. Keep it concise — no methodology, no internal jargon, and do not explain these rules to the user. ## Visualization Surface-aware. **Never block on visuals** — if anything fails, fall back to the markdown rendering below. The snapshot table (and the comparison table, when present) always render as markdown in the response text, and the downloadable file mirrors what is shown. - **When the client can render inline visuals**, present **metric cards** for the key current metrics — for example estimated monthly revenue, estimated monthly sales, listings, cancellation rate, and medal / reputation. With a comparison, you may annotate each card with its `era → agora` change. - **Otherwise** (plain terminal, no visual support), output the same information as a markdown table plus a short text summary. Same numbers, no visual. - **Round all displayed numbers** and use **pt-BR number and currency formatting** (for example `R$ 1,38 mi`, `7.900`, `+1,3 p.p.`) everywhere — cards and table. - Use a consistent medal palette: platina = purple, ouro = amber, prata = blue, sem medalha = white with a thin border (white needs the border to stay visible on a light background). - **No synthesized trend line from a single snapshot** (there is no server-side history). Only if the user supplies several past-period tables may you plot a simple line across those periods. Example comparison table (only when a previous table is supplied): | Campo | Era | Agora | |---|---|---| | Receita mensal (est.) | R$ 1,20 mi | 🟢 R$ 1,38 mi · ↑ +15% | | Vendas/mês (est.) | 8.400 | 🔴 7.900 · ↓ −6% | | Medalha | Ouro | 🟢 Platina · ↑ | | Reputação | 4 verde-claro | 🟢 5 verde · ↑ | | Taxa de cancelamento | 2,1% | 🔴 3,4% · ↑ +1,3 p.p. | | Categorias | 12 | 14 · +2 | Presentation rules: column headers are words, never a bare "Δ" symbol; show the color-dot legend only when those dots appear (the comparison table); render a chart only when the data supports it. ## Notes & Guardrails The user should never see a system or stack error — only a friendly next step. Translate any failure into one short, friendly sentence, and retry once quietly on a transient hiccup. - **Seller not found:** state it plainly, stop, and invent nothing. - **No previous table supplied:** render today's snapshot only (no change column, no legend) and invite the user to save it for next time. - **Supplied table is for a different seller, malformed, or unreadable:** say so plainly and fall back to the snapshot only; do not force a misaligned comparison. - **Empty or failed pull:** say the data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the user. - **A single field empty but the seller is found:** show `—` for that field and keep the rest.
top-brand-position-tracker13 KB
---
name: top-brand-position-tracker
description: >
Ranks the brands within one Mercado Livre (Brasil) category by estimated weekly revenue and
tracks how each brand's position changes between periods, using JoomPulse. Each run builds
today's brand-ranking table and offers it for download; to see how positions moved, the user
sends a brand table from a previous period and the skill shows each brand's movement (rose,
fell, new, or out). The baseline is whatever table the user supplies — no hidden session
memory. Use it to see the top brands in a category and which are rising or falling.
Triggers: "top brands in this category", "which brands are growing", "brand ranking", and
the pt-BR "principais marcas da categoria", "ranking de marcas", "quais marcas estão
crescendo". Mercado Livre (Brasil) only; sales and revenue are JoomPulse estimates, not real
transactions. To rank sellers (shops) rather than brands use the top-sellers-in-category
skill; for category market size use the category-opportunity-index skill.
---
# Top brand position tracker
This skill ranks the **brands** inside one Mercado Livre (Brasil) category by
estimated weekly revenue and **tracks how each brand's position in that ranking
moves over time**. It aggregates each brand's active listings into a leaderboard.
Each run builds **today's brand-ranking table** for the category and offers it as
a **downloadable table**. To see how positions moved, the user **supplies a brand
table from a previous period** (the one this skill produced before); the skill
matches brands by name and shows each brand's position movement. **The baseline is
whatever table the user provides — there is no hidden session memory and nothing
is stored server-side.** A standalone run is the ranking only: no movement column
and no legend.
This is different from ranking sellers or sizing a category. To rank **sellers
(shops)** in a category, or to track how a seller leaderboard moves over time, use
the seller-ranking skills. To report a category's market size and opportunity
(estimated GMV, sales, number of sellers, average ticket), use the category
opportunity skill. This skill answers **"which brands lead this category, and how
did their positions move since a previous table?"**
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user provides the category to analyze — a category name, a category
identifier, or a JoomPulse category link.
- For a period comparison, the user supplies a previous brand table that this skill
produced for the same category (pasted or uploaded). Without it, the skill
produces a standalone ranking.
- The available JoomPulse tools can look up the active listings in a category
along with their estimated weekly sales and revenue, review counts, and prices.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can rank brands and track their positions.
## 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,
**review count is real Mercado Livre history** — say so, it is a strength of the
report.
- **Read-only.** The skill never signs in as the seller and never modifies
anything; it does not store the ranking — the user keeps the downloadable table
and brings it back next period.
- **The baseline is user-supplied.** Never claim a position change without a
previous table to compare against, and never infer or fabricate one from memory.
- **Language:** respond in pt-BR by default. If the seller clearly writes in
another language, mirror it; otherwise pt-BR.
- **Keep the workflow invisible.** The seller wants the ranking, 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 — Resolve the category, gather listings, aggregate brands
1. **Ask the seller for the category** if it was not given — a category name, a
category identifier, or a JoomPulse category link. If only a name is given,
resolve it to the matching current category (and its depth level) with
JoomPulse, and confirm the match with the seller if it is ambiguous.
2. **Use JoomPulse to fetch every active listing in the category**, with each
listing's brand, estimated weekly sales and revenue, review count, and price.
For a large category, broaden coverage in passes rather than silently capping —
and if coverage is partial, say it was broad rather than presenting it as
complete.
3. **Group the listings by brand and aggregate per brand.** Before grouping,
**normalize brand names** — trim and unify casing, fold obvious variants and
spellings of the same brand together, and standardize generic placeholders (for
example "Outro" / "Sem marca") — so one brand is not split across rows. Use this
same canonical form again when matching brands across periods. Drop listings
with no brand; if unbranded listings are material, mention how many had no brand
rather than letting an unnamed bucket top the ranking. For each brand compute:
- **GMV estimado (semana)** — total estimated weekly revenue across the brand's
listings.
- **Vendas est. (semana)** — total estimated weekly sales across the listings.
- **Anúncios** — number of active listings for the brand.
- **Avaliações** — total review count (real history).
- **Preço médio** — average listing price (optional supporting column).
4. **Rank the brands by estimated weekly revenue, descending,** to assign each
brand its position (1 = top). If the seller asks to rank by units sold instead,
rank by estimated weekly sales and say so. Keep roughly the top 20–30 brands
for the table.
### Step 2 — Present today's ranking and offer it for download
Render today's brand-ranking table (head it with the category name and the date).
This table is the deliverable — and **offer it as a downloadable file (`.csv` /
`.xlsx`)** so the user can save it and bring it back next period as the baseline.
On a standalone ranking there is **no movement column and no legend** — just the
ranking.
### Step 3 — Offer comparison, and compare if a previous table is supplied
Invite the user to send a previous brand table for the same category to compare
positions. **If they provide one**, match brands by canonical name (see Step 1)
and for each brand compare its previous position with its current one:
- rose N places → rose by N
- fell N places → fell by N
- same position → unchanged
- not in the previous table → new
- in the previous table but absent now → list it below the table as *"saiu do
ranking"* — do not fabricate a position for it.
A position change **requires both a previous and a current position** for the same
brand — never invent a trend. If no previous table is supplied, the ranking stands
on its own (no movement column) and the user is told to save it for next time.
## Output
Respond in the seller's language (pt-BR by default), with no commentary about how
the result was produced. Use plain markdown so it renders cleanly in any client.
There is **one canonical brand-ranking table**, used everywhere (in the response
text and mirrored by the downloadable file). One row per brand, sorted by current
position, with these columns:
- **Posição** — current rank (1, 2, 3 …).
- **Variação** — *(comparison only)* how the brand's position moved versus the
supplied previous table. **Omit this column entirely on a standalone ranking** —
with no previous table there is no movement to show.
- **Marca** — the brand.
- **GMV estimado (semana)** — the brand's estimated weekly revenue (estimate).
- **Vendas est. (semana)** — the brand's estimated weekly sales (estimate).
- **Anúncios** — listing count for the brand.
- **Avaliações** — total review count (real history).
- **Preço médio** — average listing price, or `—` if unavailable.
So a **standalone ranking** has the columns `Posição | Marca | GMV estimado
(semana) | Vendas est. (semana) | Anúncios | Avaliações | Preço médio`; a
**comparison** adds the `Variação` column right after `Posição`.
In the `Variação` cell (comparison only), mark each brand:
- 🟢 **subiu no ranking**
- 🔴 **caiu no ranking**
- 🆕 **novo** (não estava no ranking anterior)
- = **sem mudança**
The change column header is the **word `Variação`** — never a bare delta symbol.
Below the table, include the category's **JoomPulse link**. On a comparison, state
the period being compared (for example *"Comparado com a tabela de 12/06"*). On a
standalone ranking, invite the user to save the table and send it back next period
to see how positions moved.
**Disclaimer (every report):**
> ⚠️ **Vendas e receita são estimativas** do JoomPulse com base no histórico de
> anúncios — não são transações reais. **Avaliações são histórico real** do
> Mercado Livre.
## Visualization
Layer a visual summary on top of the markdown table — never instead of it. The
visuals summarize; the **ranked table is always the deliverable**. Pick the path
by surface and never block waiting for a visual.
**When the client can render inline visuals,** present metric cards plus the bar
chart:
- **Three cards:**
- **Marcas ativas** — the number of named brands in the ranking.
- **Líder** — the #1 brand's name and its **share %** of total estimated weekly
revenue across the ranked brands.
- **Maior alta** — the brand that climbed the most and how many positions it
rose. **Only with a comparison** (a previous table supplied); on a standalone
ranking, drop this card or replace it with a neutral one — for example **GMV
total estimado (semana)** of the ranked brands — never fabricate a rise.
- **Horizontal bar chart:** the top ~10 brands by **GMV estimado (semana)**,
descending. Use a neutral single-hue ramp — this bar ranks size, it does not
signal good or bad, so no semantic green/red.
**Otherwise (a terminal or any client without inline visuals),** present the same
three cards as a short text block (label and value per line) and let the markdown
table itself carry the ranking. Do not attempt a visual widget; never block
waiting for one.
**Tables always render as markdown,** on every surface — the ranked table lives in
the response text, never inside a rendered visual.
### Ranked table (always markdown, both surfaces)
The ranked table is the **one canonical brand-ranking table defined in Output** —
the same columns, in pt-BR, on every surface. It lives in the response text, never
inside a rendered visual.
- **Standalone ranking:** columns `Posição | Marca | GMV estimado (semana) |
Vendas est. (semana) | Anúncios | Avaliações | Preço médio` — **no `Variação`
column and no legend** (with no symbols in the table a legend only adds noise).
- **Comparison (a previous table supplied):** add the `Variação` column right after
`Posição`. The change column header is the **word `Variação`** — never a bare
delta symbol. Cell markers:
- 🟢 **subiu no ranking**
- 🔴 **caiu no ranking**
- 🆕 **novo** (não estava no ranking anterior)
- = **sem mudança**
- **Show the marker legend (🟢 / 🔴 / 🆕 / =) only in the comparison**, where those
markers actually appear — never on a standalone ranking.
Render the bar chart only when the data supports it; if there are too few brands
to be meaningful, skip the chart and keep the table.
**Formatting (both surfaces):** round numbers and format in pt-BR — revenue as
`R$ 1,2 mi` / `R$ 850 mil` / `R$ 4.300`; counts with `.` as the thousands
separator (`1.250`). Keep the ⚠️ estimate disclaimer on every output.
## Notes & Guardrails
The seller should never see a system or stack error — only a friendly next step.
- **No category given or an ambiguous name:** ask for the category (name,
identifier, or JoomPulse link) before going further.
- **No active listings or no brands in the category:** say no brand data is
available for this category right now, and offer to try a different or broader
category.
- **Mostly unbranded listings:** rank only the named brands, and mention how many
listings had no brand rather than letting an unnamed bucket dominate the top.
- **Market data temporarily unavailable:** retry once quietly; if it is still
down, say market data is temporarily unavailable and suggest re-running. Never
paste internal error text, HTTP codes, or field names to the seller.
- **No previous table supplied:** render today's ranking only (no movement column,
no legend) and invite the user to save it for next time.
- **Supplied table is for a different category, malformed, or unreadable:** say so
plainly and fall back to the standalone ranking; do not force a misaligned
comparison.
- **Never silently limit coverage** — if the category is large and only part of it
was scanned, say the coverage was broad rather than presenting it as complete.
top-keywords-in-my-category4.94 KB
--- name: top-keywords-in-my-category description: > Lists the top trending search keywords for one Mercado Livre (Brasil) category — the real Mercado Livre search-trends ranking of what shoppers look for — with each keyword's rank and how many products compete for it. Use it when a seller wants to know what people search in their niche, which terms to put in titles and ads, or where demand is concentrated. Triggers include: "top keywords in my category", "trending search terms", "what do people search for", "best keywords for my listings", and the pt-BR equivalents "palavras-chave mais buscadas", "termos em alta na categoria", "o que as pessoas pesquisam", "melhores palavras-chave para meus anúncios". The keywords and ranks are real search-trend data, not estimates. For category market size and opportunity, use the category-opportunity-index skill; for ranking the sellers in a category, use the top-sellers-in-category skill. --- # Top Keywords In My Category This skill returns the **top trending search keywords** for one Mercado Livre (Brasil) category — the ranked list of terms shoppers are actually searching, each with its position and how many products already compete for it. It tells a seller what to put in titles and ads and where demand is concentrated. Unlike most JoomPulse skills, the data here is **real search-trend data, not an estimate**. For a category's market size and opportunity index, use the category-opportunity-index skill. For the sellers ranked inside a category, use the top-sellers-in-category skill. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user names a category (free text is fine). - The available JoomPulse tools can resolve a category and return its trending search keywords with each keyword's rank and competing-product count. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can list a category's keywords. ## Scope - **Mercado Livre (Brasil) only.** Other marketplaces are out of scope. - **Real data, not an estimate.** The keywords, ranks, and competing-product counts come from Mercado Livre search trends — say so; do not add the sales estimate disclaimer that other skills use. - **Read-only.** The skill never writes or modifies anything. - **Language:** detect the seller's language and respond in it. Default to pt-BR. - **Keep the workflow invisible.** Show `—` for any missing value; never fabricate. ## Workflow ### Step 1 — Resolve the category Ask for a category if none was given, then use JoomPulse to match the free text to a category, disambiguating with the seller when several plausible matches return. ### Step 2 — Get the trending keywords Use JoomPulse to retrieve the category's trending search keywords, each with its rank and its competing-product count. Sort by rank, best position first. ## Output Respond in the seller's language (default pt-BR). The keywords always render as a markdown table, sorted by position. The headers below are the pt-BR default and may be rendered in the seller's language: | Posição | Palavra-chave | Produtos (oferta) | |--:|---|--:| - **Posição** — the keyword's rank in the category's search trends. - **Produtos (oferta)** — the number of active offers (listings) matching that keyword, i.e. how many products currently compete for it. This is a real search-trend count, not an estimate. Close with a short, optional takeaway (use the top terms in titles and ads; a high competing-product count means a crowded term, a low one a more open opportunity). This is **real Mercado Livre search-trend data, not an estimate** — state that once, in place of the estimate disclaimer. ## Visualization When the client can render inline visuals, present metric cards and a chart; otherwise fall back to the markdown table plus text cards. Never block on visuals. The keywords table always renders as markdown, on every surface. When inline visuals are available: - **Three cards:** number of keywords, the number-one term, and the least-disputed term (the one with the fewest competing products among the top). - **A horizontal bar** of the top ~15 keywords (in rank order) showing the competing-product count per term, so the most-searched terms and how crowded each is are visible at a glance. Optionally flag low-competition (opportunity) terms. Render the chart only when there are enough keywords (skip under about five). Presentation rules: render a chart only when the data supports it. ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **No keywords for the category:** say plainly that no trending terms were found and suggest a broader or adjacent category. - **Data temporarily unavailable:** retry once quietly; if it is still down, say the data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the seller.
top-sellers-in-category8.26 KB
---
name: top-sellers-in-category
description: >
Ranks the top sellers in one Mercado Livre (Brasil) category by estimated average monthly
revenue via JoomPulse, and returns a downloadable leaderboard — per seller: estimated
monthly sales and revenue, 365-day completed sales, cancellation rate, sales trend, brands,
product counts, international shipping, and listing-type counts, with a JoomPulse link each.
It can also track how the ranking moved: supply a previous-period leaderboard for the same
category and it shows each seller's movement (rose / fell / new) plus the biggest movers.
Triggers: "top sellers in this category", "biggest stores in a category", "rank sellers by
revenue", and the pt-BR "principais vendedores da categoria", "maiores lojas da categoria",
"quem mais vende nessa categoria". Sales and revenue are JoomPulse estimates, not real
transactions. To monitor one seller over time use the seller-overview-tracker skill; to rank
brands use the top-brand-position-tracker skill.
---
# Top Sellers In Category
This skill returns the **top sellers in one Mercado Livre (Brasil) category**,
ranked by estimated average monthly revenue. For each seller it shows estimated
average monthly sales and revenue, completed sales over the last 365 days,
cancellation rate, sales trend, brands, how their products split between all
listings and listings with sales, international shipping, and classic versus
premium listing counts.
By default it produces **today's leaderboard** as a downloadable table. It can
also show **how the ranking moved over time**: if you supply a previous-period
leaderboard that this skill produced for the same category, it compares the two
and reports each seller's movement (rose / fell / new) plus the biggest movers.
**The baseline is the table you supply — there is no hidden session memory.**
To monitor a single named seller over time, use the seller-overview-tracker skill.
To rank brands rather than sellers, use the top-brand-position-tracker skill.
## Prerequisites
- JoomPulse MCP access is configured for the current agent environment.
- The user names a category (free text is fine).
- For a period comparison, the user supplies a previous leaderboard that this
skill produced for the same category (pasted or uploaded). Without it, the skill
produces a standalone leaderboard.
- The available JoomPulse tools can find the sellers active in a category and
return each seller's profile (estimated average monthly sales and revenue,
last-365-day completed sales, cancellation rate, sales trend, brands, listing
distribution, international shipping, classic and premium listing counts).
Seller medal — used to color the chart — and reputation are read when available.
If JoomPulse MCP access is unavailable, stop and explain that the skill requires
JoomPulse MCP setup before it can rank a category's sellers.
## 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. Cancellation rate and last-365-day completed sales
are real history. Disclose the estimate caveat in every output.
- **Read-only.** The skill never writes or modifies anything; it does not store the
leaderboard — the user keeps the downloadable table and brings it back next period.
- **Language:** detect the seller's language and respond in it. Default to pt-BR.
- **The baseline is user-supplied.** Never claim a movement without a previous
leaderboard to compare against, and never infer or fabricate one from memory.
## Workflow
### Step 1 — Resolve the category and find its sellers
Ask for a category if none was given, then use JoomPulse to match the free text to
a category and find the sellers active in it.
### Step 2 — Rank by estimated average monthly revenue
Rank the sellers by **estimated average monthly revenue**, highest first. Keep a
sensible top (default about 50, up to about 100 on request), and treat the count
as a cap — show fewer if fewer exist.
### Step 3 — Present today's leaderboard and offer it for download
Render the leaderboard for **today** (head it with the category name and the date).
This table is the deliverable — and **offer it as a downloadable file (`.csv` /
`.xlsx`)** so the user can save it and bring it back next period as the baseline.
On a standalone leaderboard there is **no movement column and no legend**.
### Step 4 — Offer comparison, and compare if a previous leaderboard is supplied
Invite the user to send a previous leaderboard for the same category to compare
periods. **If they provide one**, align by seller and report:
- a **Variação** column per seller: 🟢 subiu N / 🔴 caiu N / 🆕 novo / = igual, and
note sellers that **left** the top in a short "saíram do top" line;
- a short **Destaques** block — biggest risers 🟢 and biggest fallers 🔴.
A movement **requires both an old and a new position/value** for the same seller —
no previous entry means "novo", never a fabricated trend. Show the 🟢/🔴 legend
**only** in the comparison (where the markers actually appear), never on a plain
leaderboard. The change column header is a word ("Variação"), never a bare "Δ".
## Output
Respond in the seller's language (default pt-BR).
**Leaderboard (always):** a markdown table, plus a downloadable `.csv` / `.xlsx`:
| Vendedor | Vendas méd. (mês) | Receita média (mês) | Vendas 365d | Cancel rate | Sales trend | Marcas | Produtos (todos) | Produtos (com venda) | Envio internacional | Classic | Premium |
|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
- The **Vendedor** name links to the seller's JoomPulse page.
**Comparison (only when a previous leaderboard is supplied):** the same table plus
a **Variação** column, and a **Destaques** block (maiores altas / maiores quedas).
**Disclaimer (every report):**
> ⚠️ Vendas e receita são estimativas do JoomPulse com base no histórico de
> anúncios — não são transações reais. Taxa de cancelamento e vendas dos últimos
> 365 dias são dados reais do Mercado Livre.
## Visualization
When the client can render inline visuals, present metric cards and charts;
otherwise fall back to the markdown table plus text cards. Never block on visuals.
The leaderboard (and the comparison, when present) always renders as markdown in
the response text, the downloadable file mirrors it, and the ⚠️ disclaimer always
stays in the text.
When inline visuals are available:
- **Four cards:** number of sellers in the category (and how many have sales), the
leader's share of the shortlist's revenue, the average monthly revenue across
the top, and the average ticket.
- **A horizontal bar** of the top ~10 sellers by estimated average monthly revenue,
**colored by seller medal** — platina = purple, ouro = amber, prata = blue, sem
medalha = white with a thin border (white needs the border to stay visible on a
light background). Include a small legend mapping color to medal. When one seller
dwarfs the rest, you may show that leader as a separate highlighted figure and
chart the remaining leaders so the medal colors stay readable.
- **A small "registered versus with sales" comparison** for sellers and for
products, to show how much of the supply actually converts.
Presentation rules: use the medal palette consistently; render a chart only when
the data supports it; the movement/Variação column uses a word header, never a bare
"Δ", and its 🟢/🔴 legend appears only when a comparison is shown.
## Notes & Guardrails
The seller should never see a system or stack error — only a friendly next step.
- **No previous leaderboard supplied:** render today's leaderboard only (no
movement column, no legend) and invite the user to save it for next time.
- **Supplied table is for a different category, malformed, or unreadable:** say so
plainly and fall back to the leaderboard only; do not force a misaligned comparison.
- **Small sample:** if only a few sellers come back, say so rather than implying it
is the whole category.
- **Market data temporarily unavailable:** retry once quietly; if it is still
down, say market data is temporarily unavailable and to try again. Never paste
internal error text, HTTP codes, or field names to the seller.
- **Never silently limit coverage** — state the top cap you used.
unbranded-products-in-category6.01 KB
--- name: unbranded-products-in-category description: > Finds products with no brand (unbranded / no-name / generic) in one Mercado Livre (Brasil) category via JoomPulse — an opening to enter with your own brand / private label, since buyers there aren't anchored to a brand name. Asks for a category, lists the active no-brand listings ranked by estimated weekly demand, and returns a product table (price, estimated weekly sales and revenue, rating, reviews, time on air, shipping, listing type, seller medal) with a JoomPulse link per item. Triggers: "unbranded products", "products without a brand", "private-label opportunities", and the pt-BR "produtos sem marca", "genéricos que vendem", "oportunidade de marca própria". Sales and revenue are JoomPulse estimates, not real transactions. NOT for ranking brands (use top-brand-position-tracker), brand-new listings (use new-growing-products-in-category), high-demand low-rated products (use high- demand-low-quality-finder), or niches without platinum sellers (use uncontested-niche- finder). --- # Unbranded Products In Category This skill surfaces the **products that have no brand** (unbranded / no-name / generic) in one Mercado Livre (Brasil) category — the listings where the brand is empty. These are spots where a seller can enter with their **own brand / private label**, because buyers there aren't anchored to a brand name. For each it shows price, estimated weekly sales and revenue, rating, reviews, time on air, shipping, listing type and seller medal, with a JoomPulse link per item. It is the opposite of ranking a category's brands (for that, use the top-brand-position-tracker skill). For fresh listings use the new-growing-products-in-category skill; for low-rated, well-selling products use the high-demand-low-quality-finder skill; for deep niches without platinum sellers use the uncontested-niche-finder skill. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user names a category (free text is fine). - The available JoomPulse tools can return the active listings in a category, tell which of them have no brand, and provide each listing's price, estimated weekly sales and revenue, rating, reviews, time on air, logistics, listing type and seller medal. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can find unbranded products. ## 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. By contrast, price, rating, and review count are real history. Disclose the estimate caveat in every output. - **Read-only.** The skill never writes or modifies anything, and does not render product images. - **Language:** detect the seller's language and respond in it. Default to pt-BR. - **Keep the workflow invisible.** Show `—` for any missing value; never fabricate. ## Workflow ### Step 1 — Resolve the category Ask for a category if none was given, then use JoomPulse to match the free text to a category. If several plausible matches come back, list the top candidates (name and depth level) and let the user choose — do not guess between unrelated categories. ### Step 2 — Find the unbranded products Use JoomPulse to get the category's **active** listings that have **no brand** (brand empty / unbranded). Rank them by estimated weekly demand (estimated weekly revenue, or weekly sales), highest first, and keep the strongest ~20–30. ## Output Respond in the seller's language (default pt-BR). The product list always renders as a markdown table: | MLB | Nome | Vendedor | Preço | Vendas (semana) | Receita (semana) | Classificação | Avaliações | Tempo no ar | Frete grátis | Mercado Envios Full | Tipo de anúncio | Medalha do vendor | |---|---|---|--:|--:|--:|--:|--:|--:|:--:|:--:|---|---| - The **MLB** identifier links to the item's JoomPulse page. - Lead with a one-line summary (category + how many unbranded products were found), sort by estimated weekly demand, and end with the disclaimer. **Disclaimer (every report):** > ⚠️ 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 avaliações são > histórico real do Mercado Livre. / Sales and revenue are JoomPulse estimates > based on historical listing data — not actual transactions. Price, rating, and > reviews are real Mercado Livre history. ## Visualization When the client can render inline visuals, present metric cards and a chart; otherwise fall back to the markdown table plus text cards. Never block on visuals. The product table always renders as markdown in the response text, on every surface, and the ⚠️ disclaimer always stays in the text. No product images. When inline visuals are available: - **Three cards:** number of unbranded products found, total estimated weekly sales, and average ticket. - **A horizontal bar** of the top ~10 unbranded products by estimated weekly revenue. Render the chart only when there are enough products (skip it under about four), and never block on it. Presentation rules: render a chart only when the data supports it; any column with movement uses a word header, never a bare "Δ". ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **No unbranded products in the category:** the category may be brand-dominated — say so plainly and suggest a broader or adjacent category. Never fabricate rows. - **Ambiguous category name:** list the candidates and ask the user to choose. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable and to try again. Never paste internal error text, HTTP codes, or field names to the seller. - **Never silently limit coverage** — if the category is larger than what you pulled, say the table covers the strongest unbranded products, not all of them.
uncontested-niche-finder11.9 KB
--- name: uncontested-niche-finder description: > Finds low-competition niche products on Mercado Livre (Brasil) — active listings in deep sub-categories (deeper than the third level) of a chosen category that have no platinum seller at all, surfaced via JoomPulse. Use it when a seller wants uncontested niches, gaps without strong incumbents, or where to enter without fighting a dominant platinum seller. Triggers (EN): "uncontested niche", "low-competition products", "categories without platinum sellers", "find a niche to enter"; (pt-BR): "nicho sem concorrência", "produtos sem vendedor platinum", "nicho pouco disputado", "subcategorias sem platinum". It returns one table of niche products, each with a competition signal (number of sellers) and a JoomPulse link. Sales and revenue are JoomPulse estimates, not real transactions; price, rating, and reviews are real history. For one product and its competitors use the ml-product-analysis skill; for fast-growing deep categories rather than products use the growing-leaf-category-tracker skill. --- # Uncontested Niche Finder This skill finds products in **deep sub-categories** of a chosen Mercado Livre (Brasil) category — sub-categories deeper than the third level — that have **no platinum seller at all** among their listings. These are genuinely platinum-free niches a seller can enter without fighting a dominant incumbent. Given a category by name or identifier, it surfaces the active listings in those deep niches, and ranks them by estimated traction so the strongest uncontested opportunities surface first. A truly uncontested niche is a **whole deep sub-category with zero platinum sellers** — not merely the non-platinum listings inside a sub-category that still has platinum sellers elsewhere. Dropping individual platinum-held listings is not enough: if any platinum seller is active in the sub-category, that niche is contested, so the skill keeps only the deep sub-categories that have no platinum seller present. If keeping only platinum-free sub-categories would leave too few results, the skill may also show non-platinum listings from sub- categories that still have platinum sellers — but it labels those plainly as **non-platinum listings (platinum sellers still present in the category)** and does not call them uncontested. This is different from broad assortment work. To size up one product and the products that compete with it, use the ml-product-analysis skill. To find the fast-growing deep **categories** under a category (rather than the products inside them), use the growing-leaf-category-tracker skill. This skill answers "where can I enter without facing a platinum seller?" for a category the seller names. ## Prerequisites - JoomPulse MCP access is configured for the current agent environment. - The user provides one category, as a name or a category identifier. - The available JoomPulse tools can resolve a category, walk its deep sub-categories, and list the active product listings within them. If JoomPulse MCP access is unavailable, stop and explain that the skill requires JoomPulse MCP setup before it can find uncontested niches. ## 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 Mercado Livre history** — 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 niches, 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. Never fill gaps from general knowledge. ## Workflow ### Step 1 — Resolve the category and find its deep sub-levels 1. **Ask the user for a category** (a name or a category identifier). If given a name, use JoomPulse to resolve it to a category, matching on the category name. If several categories match, briefly list the candidates (name and level) and ask which one is meant. 2. **Find every sub-category deeper than the third level** that sits under the chosen category. Use JoomPulse to walk down the category tree from the chosen branch and collect the descendant categories below the third level. Keep that set of deep category identifiers for the next step. 3. If the chosen category is itself at or above the third level and has no descendants below it, tell the user there are no deep sub-levels for it and offer to run on a broader category. ### Step 2 — Keep only the platinum-free deep sub-categories 1. Use JoomPulse to list the **active product listings** in those deep sub-categories. For each listing collect: name, category, seller, listing type, seller medal, logistics (frete grátis), price, estimated **weekly** sales and revenue, rating, review count, time on air, and — where available — how many sellers compete on the listing. 2. **Decide which deep sub-categories are genuinely uncontested.** A deep sub- category is uncontested only when it has **no platinum seller at all** among its listings. Group the listings by their deep sub-category, check each group for any platinum seller, and **keep only the sub-categories with zero platinum sellers.** Do not merely drop the platinum-held listings from a sub-category that still has platinum sellers — that sub-category is contested and its other listings are not uncontested. 3. From the platinum-free sub-categories, keep the listings that are real, funded niches — those with estimated sales above zero — and rank them so the strongest uncontested opportunities lead (by estimated weekly revenue by default). If nothing has estimated sales, fall back to listing the active listings in the platinum-free sub-categories and say so. These are the **uncontested niches.** 4. **If keeping only platinum-free sub-categories leaves too few results**, you may additionally include the non-platinum listings from sub-categories that still have platinum sellers — but present them in a clearly separate, labelled group, **"non-platinum listings (platinum sellers still present in the category)"**, and do **not** call them uncontested. Always lead with the genuinely platinum-free niches. 5. If every deep sub-category has at least one platinum seller (none are platinum-free), report that the deep sub-categories are already contested by platinum sellers, suggest a sibling category, and — if helpful — offer the non-platinum listings under the labelled non-uncontested group described above. ## 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 reads cleanly in any client. **Niche table** — one row per uncontested niche product (from the platinum-free deep sub-categories), with these columns: - Product / listing identifier (rendered as a JoomPulse link for the product) - Name - Category - Seller - Price - Estimated sales (weekly) - Estimated revenue (weekly) - **Number of sellers** — the competition signal, so "uncontested" is legible (show `—` when it is not available) - Rating - Reviews - Time on air - Free shipping (frete grátis) - Listing type - Seller medal — gold, silver, or no medal (never platinum; uncontested rows come only from platinum-free sub-categories per Step 2) - A JoomPulse link for the product Put the JoomPulse link on the product identifier in each row. When a cell is empty, show `—` rather than guessing. Below the table, briefly state what "uncontested niche" means here: sub-categories deeper than the third level that have **no platinum seller at all** among their listings. You may translate the column headers into the seller's language. **If you also include the fallback group** (non-platinum listings from sub- categories that still have platinum sellers, used only when the platinum-free set is too small), put it in a clearly separate, labelled section titled **"non-platinum listings (platinum sellers still present in the category)"**. Use the same columns, but do **not** call these rows uncontested — be explicit that platinum sellers are still active in those sub-categories. **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 avaliações são histórico real do Mercado Livre. ## Visualization When the client can render inline visuals, present metric cards and, when the data supports it, the appropriate chart; otherwise present a short text version of the cards. **The product table always renders as markdown** — never inside a widget — so the competition signal stays legible. Render a chart only when the data supports it, and skip it otherwise. **Cards** — three summary cards: - **Produtos encontrados** — the count of uncontested niche rows in the table (non-platinum, in deep sub-categories). - **Subnichos cobertos** — the count of distinct deep sub-categories actually represented in the results. - **Ticket médio** — the average price across the listed rows, in pt-BR currency formatting (for example `R$ 1.234`). **Chart** — a horizontal bar of the top niche products by estimated weekly revenue, strongest uncontested niches first, each bar labelled with a short product name. **Skip the bar entirely when there are fewer than four products** — show only the cards and the table. **Otherwise (no inline visuals)**: render the three cards as a short text block, one line each, and — only when there are four or more products — a tiny text list of the top niches by estimated weekly revenue. **Never block on visuals**; if inline rendering is unavailable or fails, fall straight through to the markdown output. Round numbers and use pt-BR formatting (for example `R$ 1.234`, `1.234 vendas`). ## Notes & Guardrails The seller should never see a system or stack error — only a friendly next step. - **No deep sub-categories:** if the chosen category has no sub-levels deeper than the third level, say so and offer to run on a broader category. - **No platinum-free sub-categories:** if every deep sub-category has at least one platinum seller, report that the deep sub-categories are already contested by platinum sellers and suggest a sibling category. You may still offer the non-platinum listings, but only under the labelled "non-platinum listings (platinum sellers still present in the category)" group — never as uncontested. - **Too few platinum-free niches:** if the genuinely platinum-free sub-categories yield too few results, you may add the non-platinum listings from sub- categories that still have platinum sellers, in the separate labelled group above — always lead with the platinum-free niches and never relabel the fallback group as uncontested. - **No funded listings:** if no listing has estimated sales, list the active listings in the platinum-free sub-categories instead and say the niche has little measured traction. - **Unknown flags:** when a logistics flag such as frete grátis is unknown, show it as unknown — do not assume "no". - **Many deep sub-categories:** when the deep category set is large, gather the listings in batches and merge the results before ranking. - **Market data temporarily unavailable:** retry once quietly; if it is still down, say market data is temporarily unavailable. Never paste internal error text, HTTP codes, or field names to the seller. - **Never silently limit coverage** — if you cover only some of the deep sub-categories, say so.
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package author
- Joom
Package observed Oct 2, 2026.
Technical details
- First seen
- Sep 30, 2026 · 22:02 UTC
- Last seen
- Oct 2, 2026 · 06:00 UTC
- Collection status
- Collected
plugin_asdk_app_6a4d2371565481918bcf2890f2f29226
Download plugin data (JSON)