The rule enforced in code, not in a binder.

Audit-log on every keystroke. Vertical-ID stop at the cart. Manager-PIN prompts cite the rule. Excise and sales tax math at $0.01 precision, pulled direct from line items. Document vault with retention tagging and expiry alerts. 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.

The inspector 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.

The advertising rule 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 citation rides next to the rule in code — WAC 314-55-155 in Washington — so the ‘why’ is one click away from the ‘what.’

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

Excise and sales tax computed per line at write-time, off the rate stack configured for the state you operate in — in Washington that is 37% cannabis excise plus a locality-aware sales rate, a 1.458 multiplier on the final bill. Every line item carries the breakdown. The Washington LIQ-1295 monthly filing pulls direct from sale_line_items.pre_tax_revenue, not a back-out estimate. The receipt-to-form trace is a query, not a reconstruction.

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, retention-tagged, with expiry alerts 30 days out. The operator doesn’t hunt through Gmail when the inspector 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 rule citations

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

Automated excise + sales tax math

Excise and sales tax computed at write-time per line, against the rate stack coded for your state — in Washington, 37% excise plus a locality-aware sales rate, with the LIQ-1295 monthly filing pulled direct from line items. Cost lines are classified COGS vs non-deductible for IRC §280E — CPA-ready, never tax advice.

Document vault with retention tagging

Vendor licenses, manifests, COAs, security logs, age-verification photos, training records — searchable + retention-tagged, each against its own floor rather than one blanket number. In Washington most of that list sits under the WAC 314-55-087 five-year period; visitor logs are three years and surveillance recordings 45 days under 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 before they ship (WAC 314-55-155 in Washington). 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

Trainings and certifications 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
Rule citations in UIIn manager-PIN prompts
Excise filing pull from line itemsWA LIQ-1295 today
Document vault with retention rulesRetention-tagged, expiry-alerted
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, walked live by our team. We’ll grep audit_log live for an under-21 attempt, a void, a manifest-variance dispute — pick one.

Request a demo
30 minutes on the working product. An operator replies.