When the auditor walks in, the binder is the build.
If you’re in WA, MA, NJ, NY, IL, or MD, the compliance load is the operating cost. CannAgent puts the rule into the workflow.
The pains your operator group already knows.
State reporting drift is a slow leak you only see at audit.
WA reports to CCRS. CO and MI and MA report to METRC. The data shape is the same; the field names aren’t. Your current POS exports CCRS-correct rows on a happy day and silently truncates strain names on a Tuesday. By the time the regulator’s automated check flags the row, it’s a notice on your desk.
Vendor-license expiry is a blind spot every shop has been bitten by.
WAC 314-55-035 says you can’t buy from a producer whose license isn’t current. Most POS systems will let you receive against a lapsed vendor without a peep. The first you hear about it is when the regulator pulls your last six months of receiving records.
ID-verification edge cases get rounded to ‘good enough.’
Vertical IDs (industry buyers) have a 90-day re-verify under WAC 314-55-095. Out-of-state IDs need extra scrutiny. The fake-ID recognition pattern only fires if the system is looking. ‘Good enough’ at the cart on Friday is a citation on Monday.
The audit trail is a Slack thread and three Google Docs.
Why did this discount apply? Why did this product move from active to quarantine? Who voided this transaction at 9:47pm? The answer lives in Slack, in DMs, in someone’s memory. The auditor wants a row.
Trade samples and industry buyers are accounting’s worst quarter.
WAC 314-55-096 caps trade samples at 30 units per employee per quarter. The POS doesn’t track it. Your bookkeeper untangles it at year-end so the W-2 box 7 tip total doesn’t silently absorb sample units. Two bad rows and you’re in correspondence with the IRS about a $200 line.
What the modules actually do for you.
WAC codes enforced in code, not in a binder.
WAC 314-55-079 waste log triple-witness — three signatures or the disposal can’t close. WAC 314-55-095 industry-discount 90-day re-verify enforced at the cart. WAC 314-55-035 vendor-license lapse auto-pauses receiving. WAC 314-55-082 health-warning gating on infused-product receiving. WAC 314-55-155 advertising rules block product-specific bulk SMS at the template layer.
Vendor-license tracker, with the lapse as the trigger.
Every vendor row carries the WSLCB license number, expiry date, and current status. T-30, T-7, T-day notifications fire to your purchaser and to the brand rep. On lapse, receiving auto-pauses for that vendor — the receiving clerk sees the block at the trailer, not the regulator’s notice in two months.
ID-check audit trail, every cart, indefinitely.
Vertical-ID stop at the cart logs the budtender, the customer record, the DOB-mismatch path if it happened, and the under-21 attempt path if that happened. Every row writes to an immutable audit log that’s the auditor’s first stop. We keep records indefinitely; WSLCB requires three years.
Audit log is a row, not a Slack search.
Every state change writes audit_log: who, when, before, after. The /admin/audit page links from every consequential row across the system — discounts applied, products quarantined, transactions voided, write-ups acknowledged, hours overridden. The auditor’s question becomes a query, not an investigation.
Trade samples tracked separately at the source. Tips don’t absorb units.
WAC 314-55-096 30-units/quarter per-employee cap. The POS warns at 25, blocks at 31. Sample units carry their own ledger so they don’t cross into W-2 box 7 tips at year-end. Your bookkeeper closes the year on a clean separation, not a forensics exercise.
What ships in the codebase today.
WAC 314-55 family enforced in workflow: -035 / -079 / -082 / -095 / -096 / -155
Audit log retained indefinitely (WSLCB requires three years)
WA state-native today; cross-state config (CO, MI, MA, NJ, NY, IL, MD, MO, OK, NV) during onboarding
The rows that matter for this kind of shop.
What this kind of shop usually asks first.
Can we keep our existing METRC integration?
Are you HIPAA-compliant if we sell to medical patients?
What about WSLCB advertising rules — does the platform enforce them?
Who owns our customer and transaction data?
The audit isn’t the test of the platform; the audit is what the platform’s for.
The demo walks the WAC-coded surfaces side-by-side with the audit log they each write to.
Request a demo