Choosing a product categorization API: five questions that separate grounded from guessing

Choosing a product categorization API: five questions that separate grounded from guessing

If you’re mapping a product feed to the Google Product Taxonomy, you have more options than you did a year ago — a raw LLM call, a handful of categorization APIs, a feed tool with categorization bolted on. Most of them demo well. The differences only show up on the long tail of your catalog, in production, on the SKUs nobody checked.

Here’s the honest starting point, the same one we’d tell a friend: if you have a few hundred products and a tolerance for eyeballing the odd wrong category, a single well-prompted model call is genuinely fine. Ask GPT-4o-mini or Gemini Flash to “return the closest Google product category,” accept that it’ll be roughly right most of the time, and move on. You don’t need an API for that, and we’d rather say so.

The reason a dedicated tool earns its place is the part that quietly isn’t fine — the thousands of SKUs you’ll never hand-check, where “confidently wrong” costs you a disapproved Merchant Center feed or a mis-shelved product. So here are the five questions worth asking of anything you evaluate, ours included.

1. Is it grounded in the real taxonomy, or is it recalling one?

The Google Product Taxonomy is a fixed, published list of ~5,500 categories with specific IDs. A model asked to “categorize this” from memory will happily invent a category that reads plausibly and doesn’t exist — we watched a capable vision model label a winter parka Apparel & Accessories > Clothing > Shirts & Tops, with high confidence (here’s how we stopped ours doing that). The fix isn’t a better prompt; it’s constraining every answer to the actual taxonomy data. Ask: does the tool retrieve against the live taxonomy, or is it classifying from training memory? The measured gap is not subtle — on our own hand-labelled sets, ungrounded zero-shot scored 1–2 exact matches out of 12 checks (6 products × Google + Shopify); grounding the same model in the taxonomy took it to 22 of 24 checks on a later, expanded 12-product set — we measured that against a live API, and the post states both set sizes.

2. Does every result carry a valid, current category ID?

A category name is easy; a valid category ID that Merchant Center will accept is the thing you actually need in the feed. Tools that return names you then have to map yourself have just moved the hard part downstream. Ask: is the returned ID guaranteed to exist in the current taxonomy release? If it isn’t validated against the real list, you’re back to hand-checking.

3. Is the confidence calibrated — and will it say “I don’t know”?

This is the one most tools skip. A number between 0 and 1 next to a wrong-but-confident answer is worse than no number at all. What you want is a tool that returns a low score, or an explicit null, when the input genuinely doesn’t determine a category — a bare title with no brand, material, or type. An honest “insufficient signal” lets you route that SKU to a human or ask for more fields; a confident guess sends it silently into your feed. Ask: what does it return for a deliberately under-specified product? Feed it "Blue 500ml" and see whether it admits uncertainty or fabricates a leaf.

4. Does more input actually change the answer?

Grounded classification should get better with more of the product record — title, description, brand, attributes — not just longer. A useful test: send a bare title, note the category and confidence, then send the full record and check that the answer either firms up or corrects. If the output barely moves, the tool isn’t really using the extra signal. (This is also why “just the title” benchmarks flatter everyone equally and tell you little.)

5. How does it track taxonomy updates?

Google revises the taxonomy. A categorizer pinned to a stale release will keep returning IDs that were valid last year. Ask: which taxonomy version does it target, and what happens when Google ships a new one? For a feed you re-run monthly, this is the difference between quiet correctness and a slow drift of rejected products.

The honest tradeoff

Grounding, ID validation, and calibrated nulls aren’t free — they add a retrieval step and a little latency versus a bare model call, and they cost more than a fraction-of-a-cent inference. For a small catalog you check by hand, that overhead isn’t worth it. For a large or growing feed where wrong-and-silent is the expensive failure, it’s the whole point.

That’s the bar we hold our own Catalog Attribute Normalizer to — retrieval-grounded against the live Google Product Taxonomy, a validated ID on every result, a calibrated confidence, and an honest null instead of a fabricated leaf. It’s new, and we’d rather you test it against these five questions than take our word for it. Run your own hardest SKUs through whatever you’re considering — including us — and see which ones admit what they don’t know.

Related Posts

A wrong ABN and a smudged one look the same to OCR. We made sure ours doesn't guess.

A wrong ABN and a smudged one look the same to OCR. We made sure ours doesn't guess.

Every Australian Business Number carries a checksum — a modulus-89 formula baked into the digits themselves, so a wrong ABN is usually mathematically detectable, not just "looks a bit off." Which…

read more
Build vs. buy: should your bookkeeping tool parse receipts with a raw LLM call?

Build vs. buy: should your bookkeeping tool parse receipts with a raw LLM call?

Here's the honest version of the pitch first: if all you need is vendor, date, and total off a receipt, you should probably build it yourself. A single vision-model call — GPT-4o-mini, Gemini Flash…

read more
Choosing a receipt extraction API: six questions that separate tax-aware from just-OCR

Choosing a receipt extraction API: six questions that separate tax-aware from just-OCR

Here's the honest version of the pitch first: if all you need is vendor, date, and total off a receipt, you should probably build it yourself. A single vision-model call — GPT-4o-mini, Gemini Flash…

read more
The GST rule your receipt scanner doesn't know exists

The GST rule your receipt scanner doesn't know exists

A restaurant receipt and a client dinner look identical to an OCR tool. Under Australian GST rules, they aren't: entertainment expenses have their input tax credit (ITC) denied by default — GST was…

read more
How to integrate the catalog attribute normalizer MCP server

How to integrate the catalog attribute normalizer MCP server

This guide covers the mechanical integration steps for the catalog-attribute-normalizer MCP server: client configuration, authentication, and tool usage, so you can normalize product catalogs against…

read more
How to integrate the ACJ Labs receipt extraction MCP server

How to integrate the ACJ Labs receipt extraction MCP server

This guide covers the mechanical integration steps for the ACJ Labs receipt extraction MCP server: client configuration, authentication, schema definitions, and error handling, so you can consume the…

read more
x402 Bazaar Listing Monitor: catch a vanished listing before your revenue does

x402 Bazaar Listing Monitor: catch a vanished listing before your revenue does

If you sell over x402, your buyers find you through Coinbase CDP's Bazaar discovery catalog. It's the directory that lets an agent or a buyer's client discover your payTo address and the resources…

read more
How accurate is "just ask the model to categorize it"? We measured — 1–2 of 12 checks.

How accurate is "just ask the model to categorize it"? We measured — 1–2 of 12 checks.

If you're mapping a product catalog into Google's Product Taxonomy, the obvious first move is to hand the title and description to a capable model and ask for the category. It reads well in a demo.…

read more
AI product classifiers hand you category IDs that don't exist. Here's how we stopped ours.

AI product classifiers hand you category IDs that don't exist. Here's how we stopped ours.

Ask a capable AI model to classify a product into Google's Product Taxonomy and it will do something unsettling: return an ID that looks completely valid — right format, plausible category name — and…

read more