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
banner
normalize_catalog — response
{
  "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_id or an honest null — never a fabricated one
  • Size/color/attribute canonicalization to a fixed vocabulary
See how it works
extract_receipt — response
{
  "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-English rationale naming 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
See how it works
@acjlabs/google-taxonomy-verify
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 exist

Open 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
Browse the open-source tools
ACJ Labs emblem

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