# Amazon Pricing Command Center

> Data-driven pricing strategy engine for Amazon sellers. Given one or more ASINs, auto-detects each product's leaf category, analyzes the pricing landscape, and delivers RAISE/HOLD/LOWER signals with profit simulation. Supports single ASIN or batch (multiple ASINs, auto-grouped by category). Uses ZooData API endpoints with cross-validation. Use when user asks about: pricing strategy, how much to price, optimal price, price optimization, competitor pricing, price war, BuyBox strategy, profit margin, pricing analysis, should I raise price, should I lower price, price comparison, price positioning, repricing, should I raise or lower price. Requires ZOODATA_API_KEY.

- Skill: `serendipityoneinc/amazon-pricing-command-center` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add serendipityoneinc/amazon-pricing-command-center`
- Raw SKILL.md: https://api.skillmd.com/api/skills/serendipityoneinc/amazon-pricing-command-center/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: SerendipityOneInc (https://skillmd.com/u/serendipityoneinc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/serendipityoneinc/amazon-pricing-command-center

---


# Dynamic Pricing Intelligence Agent — RAISE / HOLD / LOWER

Give me your ASIN(s). I'll tell you whether to raise, hold, or lower — with data.

## Files
- **Script**: `{skill_base_dir}/scripts/zoodata.py` — run `--help` for params
- **Reference**: `{skill_base_dir}/references/reference.md` (field names & response structure)

## Credential
Required: `ZOODATA_API_KEY`. Get free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys)

## Capabilities & Data Flow

- **Network**: only `https://api.zoodata.ai` (Bearer `ZOODATA_API_KEY`). Setting `ZOODATA_BASE_URL` to an untrusted host (anything other than `api.zoodata.ai` / `*.zoodata.ai` / localhost) makes the CLI **refuse the request and withhold the key** — the Bearer token is never sent to an untrusted host.
- **Execution**: bundled shared ZooData CLI `{skill_base_dir}/scripts/zoodata.py` (Python 3, stdlib-only). This skill allows `categories`, `product`, `products`, `competitors`, `market`, `price-band-overview`, `price-band-detail`, `brand-overview`, `brand-detail`, `history`, `analyze`, and `check`. Do not invoke unrelated subcommands for this skill's tasks — the bundled manifest `{skill_base_dir}/scripts/allowed-commands.json` enforces this: the CLI refuses out-of-scope subcommands with a structured `COMMAND_NOT_ALLOWED` error before any API request.
- **Local files**: none; reads the optional credential store `~/.zoodata/config.json`.
- **Sent to the API**: keywords, category paths, ASINs, marketplace/date and numeric filter values only. **Never sent**: budget, experience level, risk tolerance, or any other user-profile text — profile inputs map client-side to numeric filters.
- **Credits**: every API call consumes account credits. This skill drives the endpoints granularly (no single composite command); a per-ASIN pricing analysis orchestrates ~11 endpoints for ~20-25 credits, and batch runs scale by unique category (see API Budget below). For batch or broad requests, state the estimated credit cost and confirm with the user before running.

## Shared CLI Contract

Before selecting or invoking the first command, read and apply the local `references/cli-contract.md`. Reapply it after every granular or composite result and before any fallback, additional call, state write, interpretation, or user-facing report. Use this skill's fallback logic only when the shared contract classifies the result as non-terminal.

### Local Interface Failure Output

For a terminal interface failure, respond in the user's language that the pricing assessment could not be completed, followed by the succeeded and failed endpoint identifiers. Do not issue RAISE/HOLD/LOWER, a recommended price, or a profit simulation. Keep control tokens, parameters, and retry logs internal unless diagnostics are requested.

## Input
- **Required**: one or more ASINs (your products). No keyword needed — category is auto-detected.
- **Optional**: competitor_asins

On first interaction, tell user: "Give me your ASIN(s). I support single or batch analysis — I'll auto-detect each product's category and analyze the pricing landscape for you."

## Auto Category Detection (CRITICAL — replaces manual keyword input)

1. For each ASIN: `product --asin {asin}` → extract `bestsellersRank` array
2. The **last entry** in `bestsellersRank` = leaf (most specific) category
3. Use leaf category name → `categories --keyword "{leaf_category_name}"` → get `categoryPath`
4. If categories returns empty, try the second-to-last BSR entry, or ask user
5. **Batch mode**: group ASINs by leaf category → share market data within same category (saves credits)

## API Pitfalls
- Revenue = `sampleAvgMonthlyRevenue` directly. **NEVER** calculate price×sales.
- Sales = `monthlySalesFloor` (lower bound)
- Price in realtime: `buyboxWinner.price`, NOT top-level `price`
- **All keyword-based endpoints MUST include `--category`** once categoryPath is locked
- FBA fees from products/search are estimates — verify with Amazon FBA calculator
- Aggregation endpoints without categoryPath produce severely distorted data

## On Missing Key

When `ZOODATA_API_KEY` is not set (verify via `python {skill_base_dir}/scripts/zoodata.py check` — exits 2 if no key in env or `~/.zoodata/config.json`), stop before any evidence call. Tell the user that a ZooData API key is required, link to https://zoodata.ai/en/api-keys, and explain that the key may be set in the environment or local config. Do not substitute public knowledge or a "for reference only" analysis.
## On 401 Invalid Key

When `_transport.status=401`, stop further calls, tell the user that the configured key was rejected, direct them to https://zoodata.ai/en/api-keys, and do not fabricate missing data.

## On 402 Credit Exhausted

When `_transport.status=402`, stop further calls. Report where the workflow stopped, any compatible partial findings already gathered, and returned credit metadata when present; direct the user to https://zoodata.ai/en/pricing and do not fabricate missing data.

## Pricing Signal Logic

| Signal | Condition |
|--------|-----------|
| **RAISE** | Price below opportunity band AND rating ≥ category avg AND BSR stable/rising |
| **HOLD** | Price in optimal band AND BSR stable AND no competitor price war |
| **LOWER** | Price above hottest band AND BSR declining OR competitor undercut detected |

### New Seller Price Band Selection
Don't pick highest-sales band. Calculate per band:
**Sales/Competition Ratio = Avg Monthly Sales ÷ Avg Review Count**
Highest ratio = best entry point (strong demand + low review barriers).

### Profit Simulation
3 scenarios: Conservative (current price), Moderate (±$1-2), Aggressive (±$3-5).
Per scenario: Revenue = Price × Est. Sales − FBA Fee − Referral Fee (15%) − COGS = Net Profit & Margin.

### Profit Margin Interpretation
| Net Margin | Signal | Interpretation |
|------------|--------|---------------|
| >30% | 🟢 Healthy | Strong margin, room for ad spend and promotions 📊 |
| 15-30% | 🟡 Acceptable | Viable but monitor costs closely 🔍 |
| 5-15% | 🟠 Thin | One price war or cost increase away from loss 🔍 |
| <5% | 🔴 Unsustainable | Must raise price, cut costs, or exit 💡 |

### Price Position Analysis
- **Price < opportunity band min**: Underpriced — likely leaving money on the table if rating ≥ category avg 🔍
- **Price in opportunity band**: Optimal zone — hold unless competitors shift 🔍
- **Price in hottest band**: Maximum volume zone — high competition, margin pressure likely 🔍
- **Price > hottest band max**: Premium positioning — only viable with strong brand/reviews 🔍
- **DB price ≠ Realtime price** (>5% diff): Likely running a promotion or coupon — flag as temporary 📊

## Output
Respond in user's language.

**Per ASIN**: Price Signal (RAISE/HOLD/LOWER) → Current Position in Category → Price Band Heatmap (with Sales/Competition Ratio) → Competitor Price Map (top 10 in leaf category) → 30-Day Trend → Profit Simulation (3 scenarios) → BuyBox Analysis → Recommended Price.

**Batch summary** (if multiple ASINs): Overview table (ASIN | Product | Category | Current Price | Signal | Recommended) → Per-ASIN detail.

End with: Data Provenance → API Usage. Flag DB vs Realtime discrepancies as likely promotions.

### Language (required)

Output language MUST match the user's input language. If the user asks in Chinese, the entire report is in Chinese. If in English, output in English. Exception: API field names (e.g. `monthlySalesFloor`, `categoryPath`), endpoint names, technical terms (e.g. ASIN, BSR, CR10, FBA, credits) remain in English.

### Disclaimer (required, at the top of every report)

> Data is based on ZooData API sampling as of [date]. Monthly sales (`monthlySalesFloor`) are lower-bound estimates. This analysis is for reference only and should not be the sole basis for business decisions. Validate with additional sources before acting.

### Confidence Labels (required, tag EVERY conclusion)

- 📊 **Data-backed** — direct API data (e.g. "current price $12.99 📊")
- 🔍 **Inferred** — logical reasoning from data (e.g. "price is below opportunity band 🔍")
- 💡 **Directional** — suggestions, predictions, strategy (e.g. "consider raising to $14.99 💡")

Rules: Strategy recommendations and price signals (RAISE/HOLD/LOWER) are NEVER 📊. User criteria override AI judgment.

### Data Provenance (required)

Include a table at the end of every report:

| Data | Endpoint | Key Params | Notes |
|------|----------|------------|-------|
| (e.g. Market Overview) | `markets/search` | categoryPath, topN=10 | 📊 Top N sampling, sales are lower-bound |
| ... | ... | ... | ... |

Extract endpoint and params from `_query` in JSON output. Add notes: sampling method, T+1 delay, realtime vs DB, minimum review threshold, etc.

### API Usage (required)

| Endpoint | Calls | Credits |
|----------|-------|---------|
| (each endpoint used) | N | N |
| **Total** | **N** | **N** |

Extract from `meta.creditsConsumed` per response. End with `Credits remaining: N`.

## API Budget
- Single ASIN: ~20-25 credits
- Batch N ASINs (same category): ~20-25 + 1 per additional ASIN
- Batch N ASINs (different categories): ~20-25 per unique category

