[ R-01 ] CASE STUDY — FLAGSHIP PLATFORM

Roots POS

A point of sale that treats compliance as architecture, not paperwork — register, inventory, delivery, and seed-to-sale in one system.

CLIENTWebJoint
ROLEFounder · Product & Engineering
YEAR2021–2026
STATUSMulti-state, live
Next.jsPostgresPrismaxstateMETRC APIUpstash RedisStripe

[ FIG. 01 ] THE ROOTS DASHBOARD — GUIDED SETUP, PULSE AI, METRC, DELIVERY

[ 01 ] THE BRIEF

Compliance was everyone's afterthought

Generic point-of-sale systems bolt cannabis rules on with tape and a prayer. But in this industry a missed waste record or a bad manifest isn't a bug — it's a license. Dispensaries needed a register that was fast at the counter and bulletproof with the state.

So compliance went into the foundation. METRC isn't an integration in Roots; it's part of how an order, a refund, and a delivery are defined. Get it right once, in the architecture, and every cashier gets it right by default.

Because it's structural, the same code serves a single storefront and a multi-location delivery operation — and a new state is a config file, not a quarter of engineering.

[ 02 ] THE APPROACH

Fast at the counter, honest with the ledger

[ 01 ]

Compliance in the transaction

Refund a product and METRC's waste record updates inside the same database transaction — restock, destroy, or hold, decided per line. The till, the loyalty points, and the state all reconcile together, or not at all.

#Compliance
[ 02 ]

Built for the rush

An xstate-driven register that parks and recalls orders, a SELECT-FOR-UPDATE reservation system so two cashiers can't sell the same package, and a 15-state order lifecycle that survives the messiest Friday night.

#POS#Concurrency
[ 03 ]

Nine states, one config

State rules — METRC endpoints, tax categories, purchase limits — are versioned configuration, not hardcoded assumptions. Adding a state is a config change, not a rewrite.

#Architecture
[ 04 ]

An assistant that does the work

31 tool-calling functions place orders, adjust inventory, pull reports, and trigger METRC sync — role-gated, with undo on every write and scheduled commands for the recurring stuff.

#AI

[ 03 ] UNDER THE HOOD

Seed to sale, no gaps

COMPLIANCE & INVENTORY
  • METRC sync every 6 hours + append-only audit trails that pass a state inspection
  • Nine state configs (CA, MA, AK, CO, DC, NJ, OK, OR, MO) as versioned config
  • SELECT-FOR-UPDATE package reservations with a 30-minute cart hold
  • Blind physical-inventory audits that commit atomically — or roll back whole
REGISTER & DELIVERY
  • xstate register — park/recall orders, multi-tier tax, merchant custom fees
  • Per-line partial refunds (restock / destroy / hold) with in-transaction METRC waste sync
  • Delivery zones, vehicle fleet, and a driver app with live GPS + proof of delivery
  • 31-tool AI assistant + three-tier analytics caching — sub-second at 250k orders
[ 04 ] THE RESULTS

Built to not break

9STATES, METRC-COMPLIANT
31AI ASSISTANT TOOLS
250K+ORDERS, STILL SUB-SECOND

In cannabis, “move fast and break things” ends with a revoked license. Roots moves fast and breaks nothing.

CHRISTOPHER DELL'OLIO — FOUNDER, WEBJOINT
NEXT CASE STUDY

Menu.com

See the build