Technical Whitepaper · April 2026

Inside CostIQ: Automatic line-item categorization

How NEXOS categorizes every line on every invoice into 19 cost buckets — without the manual tagging tax, and without a template-matching library that breaks on every vendor format change.

By Mike Del Giorno, Founder & CEO, Titan Innovations LLC · ~5 min read

Why line-item granularity matters

Most accounting tools categorize at the vendor level. Sysco = "Food." Restaurant Depot = "Food." Ecolab = "Supplies." It's fine for your tax return. It's useless for running your business.

A $3,100 Sysco invoice could be 40% produce, 25% dairy, 20% dry goods, 10% paper, 5% seafood. When produce inflation hits, vendor-level tagging shows you "food cost went up." CostIQ tells you produce went up 12%, dry goods held flat, dairy dropped 3% — so you know which distributor to renegotiate with, which SKUs to swap, and which menu items to re-price.

The 19 categories

CostIQ's category set was designed around how multi-location operators actually think about their P&L:

Food — Produce
Food — Dairy
Food — Dry Goods
Food — Meat/Poultry
Food — Seafood
Food — Bakery
Food — Frozen
Beverage — Liquor
Beverage — Beer
Beverage — Wine
Beverage — Non-Alcoholic
Paper/Disposables
Chemicals/Cleaning
Smallwares
Equipment
Utilities
Repairs & Maintenance
Services
Other

Nineteen was a deliberate number. Fewer categories lose signal (food vs. beverage is not enough when you need to see dairy inflation). More categories make manual overrides a nightmare and confuse the classifier. Nineteen hits the Prime Cost mental model — Food, Beverage, Paper, Chemicals, Smallwares, Equipment — with enough depth to act on.

The classification model

CostIQ runs as a second pass right after NexosIQ extraction completes. For each line item on the invoice, the classifier gets three signals:

  1. Vendor context. If the invoice is from Ecolab (a cleaning chemical distributor), line items default toward chemicals_cleaning. If from RNDC (a liquor distributor), they default toward beverage_liquor. Vendor context is a prior, not a verdict — overridden when line-item text disagrees.
  2. Line-item text. "LEMON RINSE POWER 3-IN-1" reads as chemicals even on a mixed-distributor invoice. "CHK BRST 40# CS" reads as meat regardless of who sent the invoice. The model learns the distribution of product-name patterns per category across millions of real-world line items.
  3. Unit + packaging context. Case counts, weights, UOMs give secondary signals. "50 LB BAG" suggests dry goods. "CS/24 CAN" suggests beverage. "GAL CONC" suggests cleaning concentrate.

Why we don't use a static keyword map

The obvious approach — "if line contains ‘chicken’ then meat" — fails on real invoices. Examples we've hit in production:

  • "CHICKEN WIRE 50FT ROLL" is smallwares, not poultry.
  • "FISH SAUCE 5 GAL" is dry goods / pantry, not seafood.
  • "COFFEE FILTER BASKET CS/500" is paper, not beverage.
  • "LIQUID EGG 6/5LB" is dairy category in our system (refrigerated protein), not meat.

The classifier has to weigh context. Vendor-first disambiguates most edge cases; unit context handles the rest; the minority that remain ambiguous get flagged with lower confidence so a controller can override with one click and the override feeds future accuracy.

Per-tenant learning

Every manual override becomes training signal for that tenant. If a hospitality group renames "soda syrup" consistently as beverage_non_alcoholic and another overrides it to food_dry_goods (because they're a convenience store that retails it), CostIQ learns each tenant's taxonomy without bleeding between accounts.

Where it feeds

CostIQ categories appear throughout the platform:

  • CostIQ Category Analysis sheet in generated Excel reports — category-by-store spend with totals, percentages, and confidence scores.
  • True P&L uses CostIQ-tagged invoice totals as the COGS numerator (Professional tier).
  • Multi-Location Benchmarking ranks stores by category-level spend.
  • Vendor Price Tracking identifies price trends at the SKU level across vendors.
  • Cross-Store Price Comparison surfaces which stores are paying more for the same item.

Accuracy

On our production dataset (50k+ real-world invoices across restaurant, retail, and hospitality tenants): ~95% category accuracy at the line-item level. Most errors are ambiguous dual-use items (is that case of olive oil food or smallwares?). Operators rarely override, and when they do, the tenant-specific learning layer absorbs the feedback.

Want per-vendor benchmarks?

We publish anonymized per-vendor category benchmarks quarterly for enterprise customers. Curious how your Sysco mix compares to peers? Get in touch.

See CostIQ on your own invoices

Get started