The problem
Shopping assistants now answer product questions directly. For a small Brazilian store, that is a new sales channel it cannot reach, because the catalog was never written to be read by a machine: it is a spreadsheet with free-form columns, prices in several formats, and images on an old marketplace URL. The question the product answers is simple: is my catalog ready for these agents, and what exactly is missing?
How it works
- Onboarding in three steps, with the store slug generated and normalised while the owner types.
- CSV upload with drag and drop and automatic column detection.
- Column mapping the owner confirms or corrects, instead of a silent guess.
- Normalisation pipeline for price, availability and URLs, which is where most real catalogs break.
- Agent Ready Score, 0 to 100 with a letter grade and the recommendations that would raise it.
- Public feed API (
GET /api/v1/store/:slug/products), paginated and filterable, plus JSON and CSV download authenticated by API key. - Settings for the store profile and API key rotation.
- Billing with Stripe: a free tier up to 50 products and a Pro plan.
Technical decisions and trade-offs
-
The parser, the score and the validators live in their own workspace packages
(
feed-parser,score,validators) instead of inside the web app. Trade-off: more wiring in the monorepo, but the logic that decides what a good feed looks like is testable on its own and can move to a worker later. - The score is explainable, not just a number. Each deduction carries the recommendation that fixes it. Trade-off: the scoring rules are product decisions that have to be maintained; a black-box score would have been less work and useless to the owner.
- A public, paginated feed API with API keys, because the point of the product is that someone else's system consumes it. Trade-off: a public surface means keys, rate limits and compatibility to look after.
- tRPC for the dashboard, REST for the feed. The first-party UI gets end-to-end types; the integration surface stays a conventional REST contract that any agent can call.
Where it stands
MVP complete and deployed on Vercel (Brazil region, gru1) with GitHub Actions: all
the main features are in production, from upload to billing. The catalog arrives today as a CSV
that the store uploads; there is no marketplace integration yet. The repository belongs to the
company, so there is no link to it here.