← All use casesCompliance-heavy markets — WA, MA, NJ, NY, IL, MD

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.

01

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.

02

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.

03

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.

04

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.

05

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.

01 · in production

WAC 314-55 family enforced in workflow: -035 / -079 / -082 / -095 / -096 / -155

02 · in production

Audit log retained indefinitely (WSLCB requires three years)

03 · in production

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.

Topic
Compliance posture
CannAgent
WAC-coded into the workflow: 314-55-079 waste log, 314-55-095 industry discount re-verify, 314-55-035 vendor compliance, 314-55-082 health warnings, 314-55-155 advertising
Dutchie
“Compliance-ready” — rules documented, enforcement on the operator
Topic
Source-of-truth for orders
CannAgent
[object Object]
Dutchie
Manual POs against vendor PDFs
Topic
Manager write-ups
CannAgent
[object Object]
Dutchie
Out of scope — operator finds another tool
Topic
Data ownership
CannAgent
Your Postgres, exportable any time
Dutchie
Their database
Topic
Dogfood
CannAgent
Two stores live. Same codebase. The owner uses it Monday morning.
Dutchie
None disclosed

What this kind of shop usually asks first.

Can we keep our existing METRC integration?
In Washington state, yes — WSLCB uses CCRS (Cannabis Central Reporting System), and CannAgent reports to CCRS the same way your current POS does. METRC continuity for cross-state operators (CO, MI, OK, MA, MO, NV, OR, NJ, NM, IL, etc.) is configured per state during onboarding. Some states are first-class today, others ship as a custom integration on the Enterprise tier. We tell you which bucket your state lands in before you sign anything.
Are you HIPAA-compliant if we sell to medical patients?
No — we’re WSLCB-compliant. The platform itself is not a HIPAA-covered system. Medical-patient verification is built in (patient ID checks, registry lookups, age-and-eligibility gating at the cart) and that flow is handled per WAC 314-55-095, not 45 CFR 164. PHI in patient ID-checks doesn’t cross into our system as covered HIPAA data. If you operate a medical-only retail surface that requires a BAA, that’s a separate conversation — talk to us at the demo.
What about WSLCB advertising rules — does the platform enforce them?
Yes — WAC 314-55-155 governs cannabis advertising in Washington, and the menu / marketing surfaces inside CannAgent are scoped to it. Outbound SMS templates, customer-engagement email, and case-card content all sit behind compliance gates. The product helps the business; we don’t make claims about cannabis itself, and the templates we ship don’t either.
Who owns our customer and transaction data?
You do. Always. Each location runs on its own Postgres database, exportable any time in standard SQL. No vendor-database lock-in. On the Enterprise tier, source-code escrow is available so the platform itself keeps running on your terms if anything ever happens to us. Your customer list is not aggregated, not resold, and not used to train any model — it sits in your database.

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
Schedule a demo
30 minutes · register, write-up, Form 941