Marketplace Ops
An internal analytics product for an Amazon agency that reads Product Opportunity Explorer data and answers one question: which products are worth launching. Forty-nine screens across analytics, AI research and administration.

The problem
Amazon's Product Opportunity Explorer gives sellers more data than any person can act on. Search volume, growth rates, competitor counts, review velocity, seasonality — all of it accurate, none of it a decision. Sellers were exporting it to spreadsheets and arguing about it.
The brief was not another dashboard. It was to turn a data feed into a verdict: given everything the marketplace knows about a product category, is this one worth launching.
The interface problem
A tool like this fails in a predictable way. It becomes forty-nine screens of tables, each technically complete and none of them answering the question, and the sellers go back to the spreadsheet they already trusted.
The central design decision was to make the product commit to an opinion. Every tracked product is classified as a home run, a hit, or a miss, and that classification is the first thing on the screen — not the seventh column of a table the user has to sort themselves. The underlying data is all still there, one level down, for the moment someone wants to disagree with the verdict. But the interface leads with a judgement, and the numbers exist to justify it.
The same principle governs the rest of the surface. A watchlist so a seller can narrow forty products to the four they actually care about. Alerts so the product tells them when something changed, rather than requiring a daily visit. Historical tracking so a claim about a trend can be checked rather than asserted.
The design system
Coral on warm cream, with a warm near-black for text. The deliberate choice was to avoid the cold blue-grey that almost every analytics product defaults to — this one is used for hours at a time by people making expensive decisions, and a warmer ground is easier to sit with.
The token set defines a monochromatic chart ramp — five tints of the same coral rather than five competing hues — so a chart reads as one dataset with an order to it, and colour never carries information that position and length already carry. Green and amber are held back for state, success and warning, so they mean something when they do appear.
Built on Radix primitives with a 0.5rem radius throughout, in a full light and dark token set.
Under the interface
Eight marketplace scrapers feed thirty-eight data models through a Redis-backed job queue, so a slow scrape never blocks a page. Claude handles the classification and the competitor research that would otherwise be an analyst's afternoon.
Access is invite-only with role-based permissions, and every administrative action is written to an audit log — the product was built as an internal tool with a multi-tenant SaaS structure already in place underneath it.
Palette
Primary
#FF8162
Coral — actions and alerts
Accent
#FFB57E
Secondary emphasis
Background
#FFFBF5
Warm cream, not white
Surface
#FFF1EA
Sidebar and muted panels
Foreground
#3D3637
Warm near-black
Success
#16A249
Reserved for state only
Scope
- Screens
- 49
- Components
- 79
- Data models
- 38
- API controllers
- 34
- Scrapers
- 8
- Tests
- 142
Screens


What we did
- Product design
- Design system
- Interface design — 49 screens
- Full-stack build
- Data modelling
- AI integration
Built with
- React
- TypeScript
- Vite
- Tailwind
- Radix UI
- TanStack Query
- Recharts
- Node.js
- Express
- MongoDB
- Redis
- BullMQ
- Playwright
- Claude
- Docker