Where AI agents meet commerce.
Commerce is becoming agentic — software that buys, sells, and operates on our behalf. ACJ Labs builds the products and infrastructure for that world: focused, inspectable tools that do messy jobs reliably, with honest confidence and no black boxes. Free tier, no card — start from any MCP client or a one-line npm package.
Browse the tools
{
"category_paths": {
"google": {
"path": ["Apparel & Accessories", "Clothing", "Shirts & Tops"],
"leaf_id": null,
"confidence": 0.9
},
"shopify": {
"path": ["Apparel & Accessories", "Clothing", "Tops"],
"leaf_id": "aa-3-1",
"confidence": 0.85
}
},
"attributes": {
"size": { "value": "L", "provenance": "canonicalized" },
"color": { "value": "navy", "provenance": "canonicalized" }
}
}Catalog data that checks its own work
Our Catalog Attribute Normalizer cleans messy product data from multiple sources and maps it into the Google and Shopify taxonomies — but it doesn't trust the model's memory. Every category ID is verified against the real, current taxonomy file, and each result carries an honest confidence score.
- Retrieval-grounded classification — 11 of 12 exact category+ID matches on the Google side of our 12-product evaluation set, measured against the live service
- Returns a real
leaf_idor an honestnull— never a fabricated one - Size/color/attribute canonicalization to a fixed vocabulary
{
"vendor": { "name": "Acme Pty Ltd", "abn": "51824753556", "abn_valid": true },
"date": "2026-07-14",
"line_items": [
{
"description": "Widget",
"qty": 2,
"unit_price": 12.5,
"gst": 2.5,
"tax_code": "taxable",
"confidence": 0.95,
"rationale": "Standard-rated retail good; 10% GST applies."
}
],
"totals": { "subtotal": 25.0, "gst": 2.5, "total": 27.5 }
}Receipts that know the tax rule
Our Receipt Extraction service turns a receipt or invoice image into structured data — vendor, ABN (checksum-validated), GST-aware line items — and it understands Australian GST rules most OCR tools ignore, like entertainment ITC denial and the exceptions that flip it back.
- Per-line
tax_code,confidence, and a plain-Englishrationalenaming the actual rule applied - Knows a client dinner (ITC denied) from an in-flight meal on a business trip (claimable) — same-looking receipt, different rule
- ABN checksum validation built in
import { isVerifiedGoogleLeafId } from "@acjlabs/google-taxonomy-verify";
// Does this ID exist — AND does its real path match what was claimed?
isVerifiedGoogleLeafId("212",
["Apparel & Accessories", "Clothing", "Shirts & Tops"]); // true
isVerifiedGoogleLeafId("212",
["Apparel & Accessories", "Clothing", "Outerwear"]); // false — path mismatch
isVerifiedGoogleLeafId("999999", ["Anything"]); // false — ID doesn't existOpen by default
The reusable pieces we extract from our own products ship as zero-dependency, MIT-licensed npm packages — the same code we run, free for anyone to use.
- Three packages live on npm under @acjlabs
- Zero dependencies, MIT license, TypeScript
- Node, Bun, Deno, and browser support
Try either tool free — no card, no signup wall
Both services have a self-serve free tier. Call them from any MCP client, or install the typed npm client and make your first request in a minute.
Browse the tools