
Choosing a product categorization API: five questions that separate grounded from guessing
- ACJ Labs
- Engineering
- 26 Jul, 2026
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.


