WAC codes enforced in code, not in a binder.

Audit-log on every keystroke. Vertical-ID stop at the cart. Manager-PIN prompts cite the WAC code. WA excise + LIQ-1295 math at $0.01 precision, pulled direct from line items. Document vault with WSLCB-grade retention. The auditor’s first stop — you grep, you don’t reconstruct.

Four ways compliance breaks on a cannabis floor.

‘We’ll figure it out when they show up’ doesn’t survive the inspector knock.

WSLCB walks in. They want the void log for the last 90 days. They want the under-21 attempt log. They want the manifest variance log on the last six wholesale receipts. If your answer is ‘let me reconstruct it,’ the answer is wrong. CannAgent writes audit_log on every keystroke. You grep, you don’t reconstruct.

WAC 314-55-155 isn’t a poster, it’s the cart.

‘No false or misleading statements’ / ‘no medical claims’ isn’t enforced by a sign — it’s enforced where the language renders. Vertical-ID stop runs at the cart with DOB + under-21 logging. Brand-voice rules block efficacy claims at write-time on every customer-facing surface. The WAC code rides next to the rule in code, so the ‘why’ is one click away from the ‘what.’

Excise + sales tax math at $0.01 precision, not ‘close enough.’

37% WA cannabis excise + ~8.7% local sales tax = 1.458 multiplier on the final bill. Every line item carries the breakdown at write-time. LIQ-1295 monthly filing pulls direct from sale_line_items.pre_tax_revenue, not a back-out estimate. When the auditor asks for the receipt-to-form trace, you have it.

Document vault, not document email-thread.

Vendor licenses, manifest copies, COAs, security logs, training-completion records, age-verification photos — all live in one searchable vault with retention rules per WAC 314-55-083 (3-year minimum). Expiry alerts fire 30 days out. The operator doesn’t hunt through Gmail when WSLCB asks.

Eight surfaces, audit-traceable end to end.

Audit-log on every keystroke

Every transaction, void, override, age-verification, manifest receive, employee record edit — actor + reason + before/after delta written to audit_log at write-time. Searchable by /admin/audit-log, exportable as CSV per case-ID.

Vertical-ID stop at the cart

DOB-mismatch + under-21 + missing-document blocks fire on the cart screen, not on a poster. Each attempt logged. Surfaces on /admin/age-verification with photo + outcome.

Manager-PIN gates with WAC citations

Voids, returns, manual prices, discount overrides — all gated. The PIN-prompt UI cites the WAC code that drives the gate so the budtender learns the rule, not just the click.

Automated WA excise + sales tax math

37% excise + locality-aware sales tax computed at write-time per line. LIQ-1295 monthly filing pulls direct from line items. Cost lines are classified COGS vs non-deductible for IRC §280E — CPA-ready, never tax advice.

Document vault with WSLCB retention

Vendor licenses, manifests, COAs, security logs, age-verification photos, training records — searchable + retention-tagged per WAC 314-55-083. Expiry alerts fire 30 days out.

Brand-voice + medical-claims gate

Customer-facing copy passes through a write-time check that flags efficacy claims (WAC 314-55-155) before they ship. Catches drift before the regulator does.

POS audit trail tied to seed-to-sale

Cultivera/LeafLink wholesale receive ties to inventory_snapshots, then to sale_line_items, then to audit_log. The chain of custody is queryable end to end.

Training + cert-expiry tracker

Mandatory trainings (RCW 69.50.354 / WAC 314-55-079) tracked per employee with expiry alerts. PIN gates won’t fire for staff with expired training.

Compliance, handled at write-time.

Every row is a shipped surface — see it on the demo.

CapabilityCannAgent
Audit-log on every keystrokeBuilt-in, write-time
WAC code citations in UIIn manager-PIN prompts
WA LIQ-1295 monthly filing pullDirect from line items
Document vault with retention rulesWAC 314-55-083 ready
Brand-voice / medical-claims gateWrite-time check
Training-expiry → PIN gateAutomatic
Source available to your teamYes

Want to see the audit trail?

30-minute walkthrough on the real product, seeded with the shape of your inventory. We’ll grep audit_log live for an under-21 attempt, a void, a manifest-variance dispute — pick one.

Request a demo
Request a demo
30 min · demo login emailed in ~60 sec · no call required