Category Opportunity Index
This skill answers a single question for one category on Mercado Livre
(Brasil) or Shopee Brasil: is it worth entering? Given a marketplace and a
category named in free text, it reads that category's opportunity index (low,
medium, or high) and its current monthly market indicators — estimated revenue,
estimated sales, sellers, listings, and average ticket — then writes a short
pt-BR summary that interprets the opportunity level together with how
concentrated the market is and which way it is growing. On Mercado Livre the
summary can also draw on a year of history and a seasonality read; on Shopee
neither exists yet, and the report says so plainly instead of guessing.
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 provides a marketplace — Mercado Livre (Brasil) or Shopee Brasil — and
names the category to evaluate (free text is fine).
- The available JoomPulse tools can resolve a category name to a category on
either marketplace and return that category's current monthly market
indicators, plus — on Mercado Livre — 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) and Shopee Brasil, one at a time. Other marketplaces
are out of scope.
- Sales and revenue are JoomPulse estimates — not real transactions. The
seller, listing, and average-ticket figures shown here are estimates too.
Disclose this in every output. The estimates are built differently on each
marketplace: on Mercado Livre from historical listing data, on Shopee from the
marketplace's own rounded sold counters refined with review movement. Use the
matching disclaimer.
- 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.
Shopee data — what differs from Mercado Livre
- Estimates come from Shopee's own rounded sold counters, refined with review
movement. Treat small gaps between items as noise and never rank on a difference
of a few units. Price, rating and review count are real.
- Coverage is not a census: only items with at least one lifetime sale are
tracked, so any count is a lower bound and an absent item is not evidence it does
not sell.
- History starts May 2026 — there is no long-run trend and no seasonal read.
- Category analytics stop at three levels; the item view reaches deeper. Say
which you used.
- No seller medals — Shopee has three mutually exclusive shop tiers: Official
store, Preferred (Indicado) and Common. There is no ladder; inventing
Shopee medals is fabrication.
- No catalogue and no buy-box, and an item belongs to one shop.
- No fulfilment programme, no free-shipping flag and no listing tier — show
—
rather than guessing.
- Concentration is measured differently and thresholds do not transfer between
marketplaces.
- Item titles mix Portuguese, English and Chinese — search both languages.
Workflow
Step 0 — Decide the marketplace
JoomPulse covers two separate marketplaces: Mercado Livre (Brasil) and Shopee
Brasil. They are independent datasets with different coverage, history and
mechanics. Decide which one the request belongs to before reading any data:
- The seller said so. "Shopee" means Shopee; "Mercado Livre", "MeLi" or "ML"
means Mercado Livre.
- An identifier gives it away. An identifier beginning
MLB is Mercado Livre;
a bare 10–11 digit number is a Shopee item or shop. A mercadolivre.com.br link
is Mercado Livre, a shopee.com.br link is Shopee. If an identifier is not found
on the marketplace you assumed, check the other one before telling the seller it
does not exist.
- The request only makes sense on one of them — buy-box, catalogue position,
seller medals, a fulfilment programme or search keywords are Mercado Livre only.
- Otherwise ask — one short question, mentioning that both are available.
Never guess and never default.
Never mix data from the two marketplaces in one query, one table or one total.
They are separate pipelines with different grains and estimate methods; a combined
figure is simply wrong. If the seller wants both, run the analysis twice and report
the two side by side, comparing direction and orders of magnitude — never exact
numbers.
Step 1 — Resolve the category
- If the user did not name a category, ask which one to evaluate
(for example "Para qual categoria você quer o Índice de Oportunidade?").
- Use JoomPulse to match the free text to a category on the marketplace chosen
in Step 0, retrieving candidate categories with their name, depth level, and
opportunity index for the current month.
- 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, check the other
marketplace before saying the category was not found, then ask for a broader
or rephrased term.
- On Shopee, category analytics stop at three levels. If the seller names
a deeper niche, evaluate the closest available level instead, say which level
you used, and do not promise a deeper drill-down.
Step 2 — Get the current monthly indicators
First settle which month you are reading. On Mercado Livre the latest month is
flagged reliably. On Shopee that flag is not trustworthy, so resolve the most
recent month that actually has data and use that one — then name the month in the
report so the seller knows exactly which period the figures describe.
For the chosen category, use JoomPulse to obtain that month's market indicators:
- Opportunity index (low / medium / high).
- Estimated monthly revenue and estimated monthly sales.
- Number of sellers and number of listings. On Shopee these count only the
sellers and the items that had sales in that month — label them that way and
never present them as the category's whole population.
- Average ticket.
- Context for the summary: the concentration measure, the month-over-month revenue
growth direction, and — on Mercado Livre only — any seasonality signal.
Concentration is not the same measurement on the two marketplaces. On Mercado
Livre it is the leading seller's share of orders, expressed 0–100%. On Shopee it is
an index computed across all the sellers in the category: give it its own label,
never describe it as one seller holding a share of the shelf, never apply the
Mercado Livre thresholds to it, and never compare or combine the two marketplaces'
values.
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 (Mercado Livre only)
On Mercado Livre, use JoomPulse to retrieve the category's recent monthly
history (estimated revenue 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.
On Shopee, skip this step entirely. History only begins in May 2026, so about
three months exist and the six-month rule above would fire on every single run.
Do not draw a trend and do not pass three points off as one: state plainly that a
long-run trend is not available for Shopee yet, and report the snapshot plus the
month-over-month change instead.
Step 4 — Build the report (pt-BR)
- Lead with the opportunity index, prominently: 🟢 alto / 🟡 médio / 🔴
baixo (show
— if it is missing), noting the marketplace, the category name
and level, and the month the figures describe.
- Show the monthly indicators table (see Output).
- Write a 2–4 sentence resumo that interprets the opportunity index
together with concentration and growth:
- What the level means — high implies good room for new sellers; low implies
little relative upside.
- Concentration — on Mercado Livre, 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. On Shopee, report
the index under its own label and read it in relative terms only — no
share-of-the-shelf phrasing, no borrowed thresholds, no cross-marketplace
comparison.
- Growth — rising means the category is expanding; falling means it is
contracting.
- Seasonality — on Mercado Livre, optionally note it if relevant. On
Shopee there is no seasonality data at all: say the read is unavailable
there, and never state that a category is not seasonal.
- End on a practical takeaway: worth entering / enter with caution / not very
attractive right now.
- On Shopee, name the category level you actually used, and do not promise a
deeper drill-down than the three levels available.
- Add the mandatory disclaimer for the marketplace you queried, and — on Mercado
Livre — 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 naming the marketplace, the category and
the month the figures cover, for example:
Índice de Oportunidade: ALTO 🟢 (Mercado Livre · categoria: , nível
L · mês de referência: …)
Monthly indicators table:
| Indicador |
Valor (mensal) |
| GMV Estimado (Mensal) |
R$ … |
| Vendas Estimadas (Mensal) |
… |
| Vendedores Ativos |
… |
| Anúncios Ativos |
… |
| Ticket Médio |
R$ … |
On Shopee, keep the same five rows but rename the two count rows so they say
what they actually cover — for example Vendedores com vendas no mês and
Anúncios com vendas no mês. Wherever concentration appears, give it its own
Shopee label as an index across all sellers, never "Monopolização" and never a
top-seller share.
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) — use the variant for the marketplace you queried.
Mercado Livre:
⚠️ 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.
Shopee:
⚠️ Receita, vendas, vendedores e anúncios são estimativas do JoomPulse a partir
dos contadores arredondados da própria Shopee — não são transações reais, e
diferenças pequenas são ruído. Só itens com pelo menos uma venda no histórico
são rastreados, então as contagens são um piso. / Revenue, sales, sellers, and
listings are JoomPulse estimates built from Shopee's own rounded sold counters —
not actual transactions, and small gaps are noise. Only items with at least one
lifetime sale are tracked, so the counts are a lower bound.
Optionally add the JoomPulse category dashboard link — Mercado Livre only.
There is no JoomPulse category dashboard link for Shopee, so never invent one.
Visualization
Render the visuals every time the data supports them. As soon as the analysis
is done, present the cards and charts described below as a self-contained visual
panel — an artifact where the client renders artifacts, an inline widget where
it renders widgets. Do not ask permission first, do not describe the panel instead
of drawing it, and do not offer it as an optional extra: the cards and charts are
part of the answer, not a follow-up.
- Order: the cards first, then the charts, then the written read.
- The data table always stays markdown in the response text, never inside the
panel — the panel carries cards and charts only.
- The estimate disclaimer always stays in the response text as well.
- Skip an individual chart when its own data threshold is not met (each
threshold is stated below): a chart nobody can read is worse than no chart.
Skipping one chart never means skipping the panel.
- Only the cards and charts specified below. Do not invent extra ones, and do
not promote a categorical value to a bar — a chip or plain text is the honest
rendering for it.
- If no visual surface is available at all, fall back to the markdown table
plus the same figures written as text cards. Never block on visuals, and never
leave the answer without its numbers.
The panel contains:
- Opportunity badge at the top: Alta 🟢 / Média 🟡 / Baixa 🔴 (show
— if
missing), with the marketplace and the reference month.
- Five metric cards: estimated monthly revenue, estimated monthly sales,
sellers, listings, and average ticket — pt-BR formatted, money with
R$. These
match the five rows of the monthly indicators table; on Shopee the two count
cards carry the "com vendas no mês" wording.
- 12-month trend line of estimated monthly revenue (one point per month, x =
mês, y = receita; optionally a second series for estimated sales) — Mercado
Livre only. 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. On
Shopee there is no long-run trend to draw at all: show the growth chip on its
own and say a 12-month trend is not available yet.
- Concentration: on Mercado Livre, a 0–100% horizontal bar for the leading
seller's share of orders; note that a low value is the favorable end (demand
spread across many sellers). On Shopee, show the index as its own labelled
value — not on the Mercado Livre 0–100% scale, not with the Mercado Livre
thresholds, and never side by side with a Mercado Livre figure.
- Seasonality chip — Mercado Livre only: a pill, no bar — "Não sazonal"
when the category is not seasonal, or "Sazonal · pico {mês}" naming the peak
month. On Shopee omit the chip; if seasonality comes up, say the read is
unavailable there, and never print "Não sazonal" — the data cannot support that
claim.
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.
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. If nothing matches, check the
other marketplace before saying the category does not exist.
- 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.
On Shopee, add that only items with at least one lifetime sale are tracked, so an
empty result is not proof the category is quiet.
- Opportunity index missing: show
— for the badge and base the summary on
concentration and growth instead.
- Sparse history: when fewer than about six months of history exist, omit the
trend line and report the snapshot only. On Shopee there is no long-run history
yet at all — say so rather than presenting a few months as a trend.
- Reference month on Shopee: never trust a latest-month flag there. Resolve
the most recent month that has data and name that month in the report.
- Category depth on Shopee: analytics stop at three levels. Say which level
you used and do not promise a deeper drill-down.
- Concentration across marketplaces: the two figures are different
measurements. Never compare them, average them, or carry one marketplace's
wording or thresholds onto the other.
- Seasonality on Shopee: the read simply does not exist. Say it is
unavailable; never assert that a category is or is not seasonal.
- 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.
1---2name: category-opportunity-index3description: Reports the JoomPulse opportunity level (low, medium, high) for one category on Mercado Livre (Brasil) or Shopee Brasil, with that month's snapshot — estimated revenue and sales, sellers, listings, average ticket — plus concentration and month-over-month growth, and a plain-language verdict on entering it. Use for a one-shot snapshot of a category the seller names. Triggers: "is this category worth entering", "opportunity index for this category", "how big is this market", "category opportunity on Shopee"; pt-BR "qual o índice de oportunidade", "vale a pena entrar nessa categoria", "tamanho de mercado da categoria", "índice de oportunidade na Shopee", "vale a pena vender nessa categoria da Shopee". Ask which marketplace when unclear; never mix the two. Sales and revenue are JoomPulse estimates, not real transactions. To rank the sellers in a category use the top-sellers skill; for trending search terms the top-keywords skill; to compare against a user-supplied previous snapshot the category-monitor skill.4---56# Category Opportunity Index78This skill answers a single question for **one** category on **Mercado Livre9(Brasil) or Shopee Brasil**: is it worth entering? Given a marketplace and a10category named in free text, it reads that category's **opportunity index** (low,11medium, or high) and its current monthly market indicators — estimated revenue,12estimated sales, sellers, listings, and average ticket — then writes a short13pt-BR summary that interprets the opportunity level together with how14concentrated the market is and which way it is growing. On Mercado Livre the15summary can also draw on a year of history and a seasonality read; on Shopee16neither exists yet, and the report says so plainly instead of guessing.1718This is a point-in-time snapshot, not a tracker. To rank the sellers inside a19category, use the top-sellers-in-category skill. For the trending search terms20shoppers use in a category, use the top-keywords-in-my-category skill. To compare21a category's aggregates against a user-supplied previous snapshot, use the22category-monitor skill. This skill answers "how attractive is this category right23now?" for a category the user names.2425## Prerequisites2627- JoomPulse MCP access is configured for the current agent environment.28- The user provides a marketplace — Mercado Livre (Brasil) or Shopee Brasil — and29 names the category to evaluate (free text is fine).30- The available JoomPulse tools can resolve a category name to a category on31 **either** marketplace and return that category's current monthly market32 indicators, plus — on Mercado Livre — its recent monthly history.3334If JoomPulse MCP access is unavailable, stop and explain that the skill requires35JoomPulse MCP setup before it can report a category's opportunity index.3637## Scope3839- **Mercado Livre (Brasil) and Shopee Brasil**, one at a time. Other marketplaces40 are out of scope.41- **Sales and revenue are JoomPulse estimates** — not real transactions. The42 seller, listing, and average-ticket figures shown here are estimates too.43 Disclose this in every output. The estimates are built differently on each44 marketplace: on Mercado Livre from historical listing data, on Shopee from the45 marketplace's own rounded sold counters refined with review movement. Use the46 matching disclaimer.47- **Read-only.** The skill never writes or modifies anything.48- **Language:** detect the seller's language and respond in it. Default to49 pt-BR.50- **Keep the workflow invisible.** The seller wants the answer, not a play-by-51 play. If one approach does not return data, switch to another quietly; only if52 every approach fails do you say one short, friendly sentence. Never fill gaps53 from general knowledge, and never fabricate a number — show `—` when a value54 is missing.5556**Shopee data — what differs from Mercado Livre**5758- **Estimates come from Shopee's own rounded sold counters**, refined with review59 movement. Treat small gaps between items as noise and never rank on a difference60 of a few units. Price, rating and review count are real.61- **Coverage is not a census**: only items with at least one lifetime sale are62 tracked, so any count is a lower bound and an absent item is not evidence it does63 not sell.64- **History starts May 2026** — there is no long-run trend and no seasonal read.65- **Category analytics stop at three levels**; the item view reaches deeper. Say66 which you used.67- **No seller medals** — Shopee has three mutually exclusive shop tiers: **Official68 store**, **Preferred (Indicado)** and **Common**. There is no ladder; inventing69 Shopee medals is fabrication.70- **No catalogue and no buy-box**, and an item belongs to one shop.71- **No fulfilment programme, no free-shipping flag and no listing tier** — show `—`72 rather than guessing.73- **Concentration is measured differently** and thresholds do not transfer between74 marketplaces.75- Item titles mix Portuguese, English and Chinese — search both languages.7677## Workflow7879### Step 0 — Decide the marketplace8081JoomPulse covers **two separate marketplaces**: Mercado Livre (Brasil) and Shopee82Brasil. They are independent datasets with different coverage, history and83mechanics. Decide which one the request belongs to **before reading any data**:8485- **The seller said so.** "Shopee" means Shopee; "Mercado Livre", "MeLi" or "ML"86 means Mercado Livre.87- **An identifier gives it away.** An identifier beginning `MLB` is Mercado Livre;88 a bare 10–11 digit number is a Shopee item or shop. A `mercadolivre.com.br` link89 is Mercado Livre, a `shopee.com.br` link is Shopee. If an identifier is not found90 on the marketplace you assumed, check the other one before telling the seller it91 does not exist.92- **The request only makes sense on one of them** — buy-box, catalogue position,93 seller medals, a fulfilment programme or search keywords are Mercado Livre only.94- **Otherwise ask** — one short question, mentioning that both are available.95 **Never guess and never default.**9697**Never mix data from the two marketplaces in one query, one table or one total.**98They are separate pipelines with different grains and estimate methods; a combined99figure is simply wrong. If the seller wants both, run the analysis twice and report100the two side by side, comparing direction and orders of magnitude — never exact101numbers.102103### Step 1 — Resolve the category1041051. If the user did not name a category, ask which one to evaluate106 (for example *"Para qual categoria você quer o Índice de Oportunidade?"*).1072. Use JoomPulse to match the free text to a category **on the marketplace chosen108 in Step 0**, retrieving candidate categories with their name, depth level, and109 opportunity index for the current month.1103. Pick the best match. If several plausible categories come back, list the top111 candidates (name and level) and ask the user to choose — do not silently112 guess between unrelated categories. If nothing matches, check the other113 marketplace before saying the category was not found, then ask for a broader114 or rephrased term.1154. On **Shopee**, category analytics stop at **three levels**. If the seller names116 a deeper niche, evaluate the closest available level instead, say which level117 you used, and do not promise a deeper drill-down.118119### Step 2 — Get the current monthly indicators120121First **settle which month you are reading.** On Mercado Livre the latest month is122flagged reliably. On Shopee that flag is not trustworthy, so resolve the most123recent month that actually has data and use that one — then name the month in the124report so the seller knows exactly which period the figures describe.125126For the chosen category, use JoomPulse to obtain that month's market indicators:127128- Opportunity index (low / medium / high).129- Estimated monthly revenue and estimated monthly sales.130- Number of sellers and number of listings. On **Shopee** these count only the131 sellers and the items that **had sales in that month** — label them that way and132 never present them as the category's whole population.133- Average ticket.134- Context for the summary: the concentration measure, the month-over-month revenue135 growth direction, and — **on Mercado Livre only** — any seasonality signal.136137**Concentration is not the same measurement on the two marketplaces.** On Mercado138Livre it is the leading seller's share of orders, expressed 0–100%. On Shopee it is139an index computed across all the sellers in the category: give it its own label,140never describe it as one seller holding a share of the shelf, never apply the141Mercado Livre thresholds to it, and never compare or combine the two marketplaces'142values.143144All indicators are monthly values. Use the always-positive monthly totals for145market size, never a month-over-month delta — never label a change figure as a146total or as "revenue".147148### Step 3 — Get ~12 months of history for the trend line (Mercado Livre only)149150On **Mercado Livre**, use JoomPulse to retrieve the category's recent monthly151history (estimated revenue and estimated sales per month) for roughly the last 12152months. Order the months oldest to newest. If fewer than about six months of153history come back (a new or sparse category), treat history as unavailable and154skip the trend line — show the cards only.155156On **Shopee**, skip this step entirely. History only begins in May 2026, so about157three months exist and the six-month rule above would fire on every single run.158Do not draw a trend and do not pass three points off as one: state plainly that a159long-run trend is not available for Shopee yet, and report the snapshot plus the160month-over-month change instead.161162### Step 4 — Build the report (pt-BR)1631641. Lead with the **opportunity index**, prominently: 🟢 alto / 🟡 médio / 🔴165 baixo (show `—` if it is missing), noting the marketplace, the category name166 and level, and the month the figures describe.1672. Show the monthly indicators table (see Output).1683. Write a 2–4 sentence **resumo** that interprets the opportunity index169 together with concentration and growth:170 - What the level means — high implies good room for new sellers; low implies171 little relative upside.172 - **Concentration** — on Mercado Livre, high concentration (roughly above173 half) means the market is dominated by a few sellers and is harder to break174 into; low means demand is spread out and more accessible. On Shopee, report175 the index under its own label and read it in relative terms only — no176 share-of-the-shelf phrasing, no borrowed thresholds, no cross-marketplace177 comparison.178 - **Growth** — rising means the category is expanding; falling means it is179 contracting.180 - **Seasonality** — on Mercado Livre, optionally note it if relevant. On181 Shopee there is no seasonality data at all: say the read is unavailable182 there, and never state that a category is not seasonal.183 - End on a practical takeaway: worth entering / enter with caution / not very184 attractive right now.1854. On **Shopee**, name the category level you actually used, and do not promise a186 deeper drill-down than the three levels available.1875. Add the mandatory disclaimer for the marketplace you queried, and — on Mercado188 Livre — optionally the JoomPulse category dashboard link.189190## Output191192Respond in the seller's language, default pt-BR, with no commentary about how the193report was produced. The indicators table always renders as markdown so it shows194cleanly in any client.195196**Opportunity badge** — a heading line naming the marketplace, the category and197the month the figures cover, for example:198199> **Índice de Oportunidade: ALTO** 🟢 (Mercado Livre · categoria: <nome>, nível200> L<level> · mês de referência: …)201202**Monthly indicators table:**203204| Indicador | Valor (mensal) |205|---|---|206| GMV Estimado (Mensal) | R$ … |207| Vendas Estimadas (Mensal) | … |208| Vendedores Ativos | … |209| Anúncios Ativos | … |210| Ticket Médio | R$ … |211212On **Shopee**, keep the same five rows but rename the two count rows so they say213what they actually cover — for example *Vendedores com vendas no mês* and214*Anúncios com vendas no mês*. Wherever concentration appears, give it its own215Shopee label as an index across all sellers, never "Monopolização" and never a216top-seller share.217218Format money as `R$` with pt-BR conventions (comma decimal, dot thousands, for219example `R$ 1,2 mi`, `8.400`, `R$ 49,90`) and round large values sensibly. Empty220cells show `—`.221222**Resumo** — the 2–4 sentence interpretation described in the workflow.223224**Disclaimer (every report) — use the variant for the marketplace you queried.**225226Mercado Livre:227228> ⚠️ GMV, vendas, vendedores e anúncios são estimativas do JoomPulse com base no229> histórico de anúncios — não são transações reais. / GMV, sales, sellers, and230> listings are JoomPulse estimates based on historical listing data — not actual231> transactions.232233Shopee:234235> ⚠️ Receita, vendas, vendedores e anúncios são estimativas do JoomPulse a partir236> dos contadores arredondados da própria Shopee — não são transações reais, e237> diferenças pequenas são ruído. Só itens com pelo menos uma venda no histórico238> são rastreados, então as contagens são um piso. / Revenue, sales, sellers, and239> listings are JoomPulse estimates built from Shopee's own rounded sold counters —240> not actual transactions, and small gaps are noise. Only items with at least one241> lifetime sale are tracked, so the counts are a lower bound.242243Optionally add the JoomPulse category dashboard link — **Mercado Livre only**.244There is no JoomPulse category dashboard link for Shopee, so never invent one.245246## Visualization247248**Render the visuals every time the data supports them.** As soon as the analysis249is done, present the cards and charts described below as a **self-contained visual250panel** — an artifact where the client renders artifacts, an inline widget where251it renders widgets. Do not ask permission first, do not describe the panel instead252of drawing it, and do not offer it as an optional extra: the cards and charts are253part of the answer, not a follow-up.254255- **Order:** the cards first, then the charts, then the written read.256- **The data table always stays markdown in the response text**, never inside the257 panel — the panel carries cards and charts only.258- **The estimate disclaimer always stays in the response text** as well.259- **Skip an individual chart when its own data threshold is not met** (each260 threshold is stated below): a chart nobody can read is worse than no chart.261 Skipping one chart never means skipping the panel.262- **Only the cards and charts specified below.** Do not invent extra ones, and do263 not promote a categorical value to a bar — a chip or plain text is the honest264 rendering for it.265- **If no visual surface is available at all**, fall back to the markdown table266 plus the same figures written as text cards. Never block on visuals, and never267 leave the answer without its numbers.268269The panel contains:270271- **Opportunity badge** at the top: Alta 🟢 / Média 🟡 / Baixa 🔴 (show `—` if272 missing), with the marketplace and the reference month.273- **Five metric cards:** estimated monthly revenue, estimated monthly sales,274 sellers, listings, and average ticket — pt-BR formatted, money with `R$`. These275 match the five rows of the monthly indicators table; on Shopee the two count276 cards carry the "com vendas no mês" wording.277- **12-month trend line** of estimated monthly revenue (one point per month, x =278 mês, y = receita; optionally a second series for estimated sales) — **Mercado279 Livre only**. Render this chart only when the data supports it — skip it280 entirely when there are fewer than about six months of history, leaving just the281 cards. Optionally add a small growth-% chip from the month-over-month change. On282 **Shopee** there is no long-run trend to draw at all: show the growth chip on its283 own and say a 12-month trend is not available yet.284- **Concentration:** on **Mercado Livre**, a 0–100% horizontal bar for the leading285 seller's share of orders; note that a **low** value is the favorable end (demand286 spread across many sellers). On **Shopee**, show the index as its own labelled287 value — not on the Mercado Livre 0–100% scale, not with the Mercado Livre288 thresholds, and never side by side with a Mercado Livre figure.289- **Seasonality chip** — **Mercado Livre only**: a pill, no bar — "Não sazonal"290 when the category is not seasonal, or "Sazonal · pico {mês}" naming the peak291 month. On **Shopee** omit the chip; if seasonality comes up, say the read is292 unavailable there, and never print "Não sazonal" — the data cannot support that293 claim.294295Presentation rules: use the medal palette consistently if medals appear anywhere296(platina = purple, ouro = amber, prata = blue, sem medalha = white with a thin297border). Any change or difference column uses a word as its header ("Variação",298or "Era | Agora"), never a bare "Δ" symbol. Show a 🟢/🔴/🆕 legend only on a run299where those symbols actually appear — never on a first or baseline run. Render a300chart only when the underlying data supports it, and skip it otherwise.301302## Notes & Guardrails303304The seller should never see a system or stack error — only a friendly next step.305306- **Ambiguous category:** list the candidate categories and ask the user to307 choose. Do not guess between unrelated categories. If nothing matches, check the308 other marketplace before saying the category does not exist.309- **No current data / empty result:** say you could not find current data for310 that category and suggest a broader or different term. Never fabricate numbers.311 On Shopee, add that only items with at least one lifetime sale are tracked, so an312 empty result is not proof the category is quiet.313- **Opportunity index missing:** show `—` for the badge and base the summary on314 concentration and growth instead.315- **Sparse history:** when fewer than about six months of history exist, omit the316 trend line and report the snapshot only. On Shopee there is no long-run history317 yet at all — say so rather than presenting a few months as a trend.318- **Reference month on Shopee:** never trust a latest-month flag there. Resolve319 the most recent month that has data and name that month in the report.320- **Category depth on Shopee:** analytics stop at three levels. Say which level321 you used and do not promise a deeper drill-down.322- **Concentration across marketplaces:** the two figures are different323 measurements. Never compare them, average them, or carry one marketplace's324 wording or thresholds onto the other.325- **Seasonality on Shopee:** the read simply does not exist. Say it is326 unavailable; never assert that a category is or is not seasonal.327- **Market data temporarily unavailable:** retry once quietly; if it is still328 down, say market data is temporarily unavailable and to try again. Never paste329 internal error text, HTTP codes, or field names to the seller.330- **Missing values:** show `—` for any empty indicator rather than guessing.