Skip to content
CannAgent
ModulesFeaturesBy stateAboutFAQ
PricingRequest a demo
The product surface

Every module. What it does. Why it matters.

Not a feature list — a product surface. Each module here groups the surfaces a working day actually touches, with the rules it enforces and the operator-pain it removes. Operators run every one of these every day.

Filter14 modules

All fourteen modules

Slang

Slang POS

Cash-first checkout, vertical-ID gated at the cart, manager-PIN where it counts.

  • Cash payment + change calculator; a till variance flags at $5 on close, goes to the admin queue at $10, pulls camera footage at $50 unoffset after two days
  • Vertical-ID stop at the cart with DOB-mismatch and under-21 logging
  • Manager-PIN gates on voids, returns, manual prices, discount overrides
314-55-079See it→
Slang

Cash Discipline

Every drawer counted, every drop logged, every variance escalated on a ladder.

  • Per-budtender till-session lifecycle with variance ladder enforcement
  • PROPRIETARY ·ESCALATION LADDERProprietary technology · request demo for full disclosure
  • Safe + ATM-bank cash trail — every cash_movements row writes audit
in productionSee it→
Brapp

Brapp Inventory

Receive, count, par, waste — one back-of-house, no spreadsheets.

  • Receive flow with auto-match to PO; vendor license expiry on the vendor record and on /compliance
  • Cycle-count scheduling with per-section assignment and signoff
  • Waste log with a second-signature step before disposal can close
314-55-079See it→
Brapp

Vendor Portal

Vendors log in and pull their own — orders, payments, performance, 1099s.

  • Vendor-side dashboard — orders, payments, performance, calendar, 1099
  • Asset library with on-brand-only logo gating
  • Suggest-product form routed to your purchaser, not a generic email
314-55-096See it→
Cross-cutting

AI Reorder Assistant

POs auto-draft against velocity, vendor reliability, and fill-rate. Override with one click.

  • PROPRIETARY ·RELIABILITY-SCALED PO ENGINEProprietary technology · request demo for full disclosure
  • Vendor-reliability scorecard with per-PO history
  • Menu Builder ranks top 365d sellers, capacity-constrained by zones
in productionSee it→
Brapp

In-store TV Boards

Menu screens on the same login as the register — no separate signage vendor.

  • Per-store TV screens managed from the admin — no third-party signage vendor
  • Live heartbeat per screen — green under 2 min, amber to 10, red past that or never seen; the counts are on /api/health
  • Category boards pull live in-stock product, THC%/CBD% and price from the same query as the customer menu
314-55-155See it→
Cross-cutting

Customer Engagement

Loyalty without cards. Phone is the key. Tiers earn through visits.

  • Phone-number loyalty key with tier-earned-through-visits logic
  • RFM segments + lapsed + at-risk-LTV + birthdays — all live, all queryable
  • WAC 314-55-155-aware bulk SMS: every send carries the (2)(c) 21+ statement and the four (7) warning statements — (7) applies to all advertising EXCEPT outdoor, so a text message is squarely inside it, and the four warnings run 341 characters before your own copy starts. The (2)(a) content prohibitions are screened at save and again at render, and (2)(d) out-of-state targeting is blocked
314-55-155See it→
Cross-cutting

Compliance Vault

The rule enforced in code, not in a binder.

  • Vertical-ID gating at the cart, not on a poster
  • Trade-sample quarterly cap counted in the cart (WAC 314-55-096)
  • PROPRIETARY ·TRAINING-GATED POS PINProprietary technology · request demo for full disclosure
314-55-079 +2See it→
Cross-cutting

People Operations

Hiring, write-ups, reviews, training — all in the same system the register runs on.

  • Hiring pipeline with an FCRA-aligned background-check flow, plus the WAC 314-55-083(1) employee identification badge on record
  • PROPRIETARY ·JURISDICTION-AWARE WRITE-UP AIProprietary technology · request demo for full disclosure
  • 5-dimension performance reviews with acknowledgement-required workflow
314-55-083See it→
Cross-cutting

Payroll Stack

Payroll runs in the same login your closer uses — federal and per-state forms staged, not buried in a separate portal.

  • Time-clock → pay run with hours-override audit trail (hours-worked carried for L&I / WBF)
  • Tips and trade-sample units kept separate per WAC 314-55-096
  • Federal form stack — Form 941, W-2, W-3, 940 FUTA
314-55-096See it→
Cross-cutting

Bookkeeping & §280E

Your books live in the same database as the till — QuickBooks sync, bank reconciliation, trial balance, one login.

  • QuickBooks Online two-way sync — push journal entries, reconcile both directions
  • Bank-feed import with auto-match plus an unmatched-transaction queue
  • Trial balance, P&L, and a guided month-close off the same login
in productionSee it→
Cross-cutting

Weekly Traceability Filing

Your weekly state traceability file built from real sales and inventory — reconciled and accuracy-checked before it ever goes to the state. Washington’s CCRS today.

  • Weekly CCRS file built from real sales, inventory, and disposal records
  • Reconciliation against the state record — flags missing or mismatched weeks
  • Accuracy verification plus a dry-run anomaly scan before you file
314-55-083See it→
Cross-cutting

POS Cutover Plan

Move off your existing POS on a rehearsed plan — readiness checks, loyalty preserved, numbers reconciled before you flip.

  • Readiness workspace — what’s ready, what isn’t, before you commit
  • Loyalty-balance snapshot preserves every customer’s points pre-flip
  • Reconciliation dry-run proves the numbers tie out before the switch
in productionSee it→
Cross-cutting

System Health

One green-board. Every cron. Every integration. Every stale-open drawer.

  • Health-board with red/yellow/green tiles across 13 surfaces
  • Automation-health — every cron, last run, next run, missed runs
  • Integrations grid — CCRS, SMS, email, push, sibling-store probe
in productionSee it→
Slang · live mock

The register, the cart, the customer card — one screen.

Vertical-ID gated at the cart, manager-PIN where it counts, customer display feeding the second screen. Soft-confirm on big carts catches double-tap mistakes before they post. Tendered in cash, recorded in code, written to audit.

See the module →
brapp.example.com/pos/checkout
Slang POS
ID verified · vertical-ID pass · DOB 1989-04-2221+ AGE RULE
Register 2 · Tyler open
Cart · 2 items
$248.50 tillopen
AK-47 · 1g flower
GLF-1G-AK47 · NWCS
$12.00
x1
Sea Sweets · Blueberry 10pk
GUM-10P-BL · Sea Sweets
$18.00
x1
●Industry discount applied (verified this visit)−$6.00
SUBTOTAL$30.00
WA EXCISE + TAX$10.99
Total$34.99
Customer
Sarah Chen
+1 (509) ···· 4422
Gold237 pts
Last 90 days
Visits9
Avg ticket$31.20
TierGold
brapp.example.com/admin/inventory
Brapp
Inventory · 3 reorders queued
Today’s board
live
All142Flower41Vapes28Edibles33Pre-rolls19
⚠5 SKUs below par. 3 over 30d-velocity threshold.view all
AI-drafted reorder queue
based on 30d velocity + Friday-rush
NWCS✓ 92%
AK-47 · 1g flower
on-hand
4 / 24
suggest
24
Sea Sweets✓ 88%
Blueberry gummies 10pk
on-hand
7 / 18
suggest
12
Hellavated⚠ 78%
Live resin cart 1g
on-hand
1 / 12
suggest
12
3 vendors · 48 units · ~$1,420 PO totaldraft PO →
Brapp · live mock

The reorder queue your purchaser opens before email.

Three vendors, AI-suggested quantities, reliability scores on the row, low-stock alerts at the top. The same shelf your budtender reads from.

See the module →
The wedge

AI proposes. Manager decides. Audit log records.

The reorder queue and the manager write-up assistant ride the same reasoning rails — reading 30-day velocity, vendor reliability, and the labor and enforcement rules of the state you operate in (Washington and Arizona today) — and hand the operator a defensible draft. Every issuance writes to /admin/audit.

CannAgent assistant
reasoning over 30d velocity · labor rules · enforcement posture
live
AI suggests · reorderbased on /admin/par-levels + /pos
  • 24
    AK-47 · 1g flower · NWCS
    30d velocity +18% · Friday-rush pattern
  • 12
    Blueberry gummies 10pk · Sea Sweets
    below par · fill-rate 88%
  • 12
    Live resin cart 1g · Hellavated
    stocked out on 2 of 9 resolved POs · reliability 78%
AI proposes · proportionate-responseagainst labor + cannabis rules
  • Tier 1
    Verbal warning + coaching + 30d follow-up
    First documented incident, low severity. Coach on the SOP, set follow-up date, track in /admin/manager-writeups.
    recommended
  • Tier 2
    Written warning + 60d Performance Improvement Plan
    Pattern of two within 90d. Written record, defined improvement targets, weekly check-ins.
  • Tier 3
    Final warning · escalation per WA RCW 49.46.020
    Three documented incidents in 90d or one severe. Final tier before separation; HR review required.
Manager makes the call. AI proposes, doesn’t decide. Every issuance writes to /admin/audit.
Module detail

How each module actually runs.

Slang · at the register

Slang POS

WAC 314-55-079

The register your budtender actually rings on, built for a cannabis floor. Vertical-ID is caught at the cart — not on a poster, not in a training deck. Manager-PIN gates voids, returns, manual price changes, and discount overrides so the floor can move without giving away the store. Cash-first by design with a customer display on the second screen, barcode scanner, QZ Tray receipt printing, SMS receipt fallback, and age-verification logged into audit. Soft-confirm thresholds catch double-tap mistakes on $200+ carts before they post.

What’s in it

  • Cash payment + change calculator; a till variance flags at $5 on close, goes to the admin queue at $10, pulls camera footage at $50 unoffset after two days
  • Vertical-ID stop at the cart with DOB-mismatch and under-21 logging
  • Manager-PIN gates on voids, returns, manual prices, discount overrides
  • Customer display on the 2nd screen — cart, deal-applied chip, loyalty tier
  • Returns + voids flow with cannabis-quarantine routing — WAC 314-55-079(12) permits returns of open product in original packaging with the lot, batch, OR inventory ID number fully legible — any ONE of the three identifiers, so a return is not refusable just because the lot ID is the unreadable one
  • Soft-confirm on carts over $200 or 7+ items (4s double-tap window)
  • Barcode scanner + QZ Tray receipt printer + SMS receipt fallback

Inventoryapp surfaces

  • /pos/checkout
  • /admin/transactions
  • /admin/registers
  • /admin/holds
  • /admin/returns
Slang · at the register

Cash Discipline

Cannabis is cash-heavy and cash is where the shrink hides. Slang ties every till session to the budtender who rang it: open, ring, drop, payout, close, count. Variances climb a defined ladder — $0–$10 logs and moves on, $10–$50 manager review, $50+ unoffset two days pulls camera footage. Drops to safe and ATM-bank set-asides are tracked separately so your Saturday Loomis pickup reconciles cleanly. Stale opens (drawer left open across days) surface on the health board the next morning, not three weeks later in a quarterly review.

What’s in it

  • Per-budtender till-session lifecycle with variance ladder enforcement
  • PROPRIETARY ·ESCALATION LADDERProprietary technology · request demo for full disclosureRequest demo→
  • Safe + ATM-bank cash trail — every cash_movements row writes audit
  • Saturday Loomis pickup recording with bag-tag photo + chain of custody
  • Stale-open drawer detection on the health board, no manual cleanup
  • Daily-close panel — variance per shift, drops, payouts, ending balance

Inventoryapp surfaces

  • /admin/till-sessions
  • /admin/cash-management
  • /admin/registers
Brapp · behind the counter

Brapp Inventory

WAC 314-55-079

Receive trucks, count cases, set pars, dispose product — all on the same database your register reads from. Cycle counts schedule themselves so your end-of-month physical isn’t a fire drill. The waste log requires a second employee to sign off on the destruction or the disposal can’t close — our control, not a state mandate. Receiving auto-matches POs to invoices, and vendor license expiry is on the vendor page and the /compliance board — so the lapse is on a screen your purchaser already reads, not in a notice two months later. Par-levels and low-stock alerts tie back to velocity — when the system suggests a reorder, it’s reading the same shelf the budtender is.

What’s in it

  • Receive flow with auto-match to PO; vendor license expiry on the vendor record and on /compliance
  • Cycle-count scheduling with per-section assignment and signoff
  • Waste log with a second-signature step before disposal can close
  • Par-levels tied to live velocity, not a static spreadsheet
  • Low-stock alerts with reorder suggestions on the health board
  • Cannabis quarantine queue for returned product — returns are permitted under 314-55-079(12)

Inventoryapp surfaces

  • /admin/inventory
  • /admin/receive
  • /admin/cycle-count
  • /admin/par-levels
  • /admin/waste-log
  • /admin/products
Brapp · behind the counter

Vendor Portal

WAC 314-55-096

Vendors stop emailing your purchaser at 7am asking ‘did the PO go through?’ The /vmi portal lets every brand log in to their own slice — open POs, payment status, fill-rate scorecard, 1099 pull, sample-cap usage (WAC 314-55-096), suggest-product form, asset library, calendar of upcoming menu plans. Every vendor row carries its WSLCB license number and expiry — the list flags anything inside 60 days and turns red the day it lapses, and /compliance shows only the expired vendors you still carry active product from. Pausing one is a switch on the vendor page, with a name and a timestamp on it. Your purchaser stops being the inbox; the portal is the inbox.

What’s in it

  • Vendor-side dashboard — orders, payments, performance, calendar, 1099
  • Asset library with on-brand-only logo gating
  • Suggest-product form routed to your purchaser, not a generic email
  • Trade-sample tracker against the cap that binds YOU: WAC 314-55-096(1)(f)(ii) lets a processor provide any one retail business up to 120 units per calendar quarter, and (1)(f)(i) lets a producer provide any one processor up to 96 units of flower. The 30-unit figure is (1)(j)(vi) — a RETAILER's limit on what it hands its own paid employees — and does not govern a vendor
  • WSLCB license number and expiry on every vendor row — flagged at 60 days, red once expired

Inventoryapp surfaces

  • /vmi
  • /vmi/orders
  • /vmi/payments
  • /vmi/performance
  • /vmi/assets
  • /admin/vendors
Cross-cutting · across the shop

AI Reorder Assistant

The reorder model reads the same shelf your budtender does and drafts a PO before your purchaser opens email. Inputs: 30/60/90-day velocity, vendor reliability score (✓ 92% / ⚠ 78% surface on the row), fill-rate across your resolved POs with that brand, Friday-rush patterns, and the Menu Builder’s zone constraints. Output: a draft PO with quantity-per-SKU chips your purchaser approves, edits, or kills. The Menu Builder ranks top 365-day sellers, capacity-checks them against your case zones, and flags phase-out candidates so you stop carrying dead stock.

What’s in it

  • PROPRIETARY ·RELIABILITY-SCALED PO ENGINEProprietary technology · request demo for full disclosureRequest demo→
  • Vendor-reliability scorecard with per-PO history
  • Menu Builder ranks top 365d sellers, capacity-constrained by zones
  • Phase-out candidates flagged so dead stock leaves the shelf
  • Suggested-quantity chips your purchaser one-click approves
  • Reads /admin/par-levels + /pos velocity — same numbers your floor sees

Inventoryapp surfaces

  • /admin/purchase-orders
  • /admin/menu-builder
  • /admin/menu/phase-out-candidates
  • /vmi/menu-plans
Brapp · behind the counter

In-store TV Boards

WAC 314-55-155

Most shops rent their menu screens from a third-party signage company, then watch the board drift from what’s actually on the shelf. CannAgent runs the screens from the same admin that runs the till, off the same inventory: the category boards read the same in-stock query the customer menu does, so a sold-out eighth leaves the wall when it leaves the shelf, and a weight tier with no SKU behind it shows a dash instead of a price nobody can honour. Boards can be dayparted and scheduled by weekday in store time, they play the ad videos you already own, and they keep showing the last good board if the network drops. A heartbeat badge sits in the corner of the board itself and a matching dot sits on the /admin/tv list — green under two minutes, amber to ten, red past ten. A screen that has never checked in reads red rather than blank, and the same counts are published on /api/health, so you can wire a stuck screen into whatever you already page with. One login for the till, the books, and the wall.

What’s in it

  • Per-store TV screens managed from the admin — no third-party signage vendor
  • Live heartbeat per screen — green under 2 min, amber to 10, red past that or never seen; the counts are on /api/health
  • Category boards pull live in-stock product, THC%/CBD% and price from the same query as the customer menu
  • Flower weight tiers 1g–28g show a real in-stock price per cell, or a dash — never an extrapolated one
  • Dayparting and day-of-week scheduling in store-local time, overnight windows included
  • Runs your existing ad videos — autoplay, looped, never cropped
  • Keeps showing the last good board when the network drops
  • WSLCB banned-phrase scrub on every string, at save and again at render (WAC 314-55-155)

Inventoryapp surfaces

  • /admin/tv
Cross-cutting · across the shop

Customer Engagement

WAC 314-55-155

Phone number is the loyalty key — no cards to print, no QR codes to lose. Tiers earn through visits and basket size, not punch cards. RFM segments, lapsed customers, at-risk-LTV, and birthdays all live in the same system the register reads from, so the next-message-to-send is one click from the customer record. Outbound respects WSLCB advertising rules (WAC 314-55-155): an advertising text is not outdoor advertising, so subsection (7) applies in full and every send carries the 21+ statement plus all four warning statements — 341 characters, three segments, before your own copy. Naming a product is not the problem; omitting the warnings is.

What’s in it

  • Phone-number loyalty key with tier-earned-through-visits logic
  • RFM segments + lapsed + at-risk-LTV + birthdays — all live, all queryable
  • WAC 314-55-155-aware bulk SMS: every send carries the (2)(c) 21+ statement and the four (7) warning statements — (7) applies to all advertising EXCEPT outdoor, so a text message is squarely inside it, and the four warnings run 341 characters before your own copy starts. The (2)(a) content prohibitions are screened at save and again at render, and (2)(d) out-of-state targeting is blocked
  • Tier celebration UI in POS when a customer levels up
  • Win-back flows tied to visit-recency, not blasted to everyone

Inventoryapp surfaces

  • /admin/customers
  • /admin/customers/segments
  • /admin/customers/lapsed
  • /admin/customers/at-risk-ltv
  • /admin/customers/birthdays
  • /admin/loyalty
  • /admin/marketing
Cross-cutting · across the shop

Compliance Vault

WAC 314-55-079WAC 314-55-095WAC 314-55-096

Compliance is a workflow, not a PDF. Vertical-ID stops the cart at the register. Vendor-license status, second-signature disposal and trade-sample quarterly caps are enforced where the work happens — in the cart, in the disposal, in the receive — not on a poster. Every state change writes to an immutable audit log, and we keep records indefinitely. In Washington: the waste log requires a second employee’s sign-off or the disposal can’t close — our workflow, not a state mandate; vendor license numbers and expiry dates sit on the vendor record and on /compliance, so the purchaser sees a lapse before cutting the next PO; trade samples cap at 30 units per employee per quarter (314-55-096) — the POS warns before the cap and blocks at 31; and WAC 314-55-087 requires records kept for a five-year period, which is the floor we build to.

What’s in it

  • Vertical-ID gating at the cart, not on a poster
  • Trade-sample quarterly cap counted in the cart (WAC 314-55-096)
  • PROPRIETARY ·TRAINING-GATED POS PINProprietary technology · request demo for full disclosureRequest demo→
  • Waste-log second signature in code (our workflow)
  • WSLCB license number and expiry on every vendor row — flagged at 60 days, red once expired
  • Trade-sample cap blocks at 31 — 30 units to any one employee per quarter, WAC 314-55-096(1)(j)(vi), the retailer-side cap
  • Immutable audit log — every state change, kept indefinitely

Inventoryapp surfaces

  • /admin/audit
  • /admin/compliance
  • /admin/vendors/compliance
  • /admin/waste-log
Cross-cutting · across the shop

People Operations

WAC 314-55-083

Your people stack lives where your registers do — hiring, write-ups, reviews, and training on the same database the floor rings on, not four disconnected tools. The hiring pipeline runs an FCRA-aligned background-check flow — disclosure, authorization, provider, result, adverse action — so a manager makes each call deliberately, not silently. Washington's WSLCB rule that reaches an employee is the WAC 314-55-083(1) identification badge, held on the staff record; WAC 314-55-035 carries TWO criminal-background provisions and neither reaches a hire: the board MAY conduct an investigation of a true party of interest who exercises control (discretionary), and WILL conduct a financial and criminal background investigation on all financiers (mandatory). Employees appear in neither. AI drafts proportionate-response options for write-ups against WA labor and WSLCB rules; a manager decides. Performance reviews use a five-dimension rubric with an acknowledgement-required workflow. Onboarding training runs ${TRAINING_CLAIM_LONG} so a new hire’s first week is a checklist, not a dropped baton.

What’s in it

  • Hiring pipeline with an FCRA-aligned background-check flow, plus the WAC 314-55-083(1) employee identification badge on record
  • PROPRIETARY ·JURISDICTION-AWARE WRITE-UP AIProprietary technology · request demo for full disclosureRequest demo→
  • 5-dimension performance reviews with acknowledgement-required workflow
  • 50+ modules across 8 role tracks (budtender → admin)
  • Cross-employee write-up patterns (admin + GM gated)

Inventoryapp surfaces

  • /admin/staff-records
  • /admin/hiring
  • /admin/manager-writeups
  • /admin/write-ups
  • /admin/performance-reviews
  • /training
Cross-cutting · across the shop

Payroll Stack

WAC 314-55-096

Your bookkeeper works where your closer does, instead of re-keying hours into a separate payroll portal. Hours flow from the time-clock straight into the pay run with an hours-override audit trail — including the hours-worked count that hours-based filings need (Washington L&I, Oregon’s WBF) — and tips track to W-2 box 7 separately from sample units (WAC 314-55-096) so they don’t get crossed at year-end. The form stack stages what a cannabis shop owes: the federal set (Form 941, W-2, W-3, 940 FUTA) plus the state stack for the markets you operate in — Washington’s ESD trio (PFML + WA Cares, SUI, L&I), Colorado FAMLI + DR 1094, California’s EDD DE 9 family (SDI/PFL), Oregon’s combined Form OQ (withholding + Paid Leave + transit + WBF), Arizona A1-QRT + UC-018. The year-end dashboard tracks what’s filed, what’s due, and what’s open. We stage and track it; your bookkeeper files it.

What’s in it

  • Time-clock → pay run with hours-override audit trail (hours-worked carried for L&I / WBF)
  • Tips and trade-sample units kept separate per WAC 314-55-096
  • Federal form stack — Form 941, W-2, W-3, 940 FUTA
  • Per-state stack — WA ESD trio, CO FAMLI, CA SDI/PFL, OR Paid Leave, AZ withholding
  • Year-end status dashboard — filed, due, open

Inventoryapp surfaces

  • /admin/payroll
  • /admin/timeclock
  • /admin/hours-override
  • /admin/bookkeeper
Cross-cutting · across the shop

Bookkeeping & §280E

Most shops keep their books in a tool that has never seen a single sale. Yours runs on the same database as the register, so the numbers your bookkeeper reconciles are the numbers your closer rang. QuickBooks Online syncs both directions, the bank feed imports and auto-matches with an unmatched-transaction queue for the stragglers, and trial balance, profit-and-loss, and a guided month-close are one click off the same login. A nightly anomaly sweep flags the entries that don’t look right before your CPA does. And because this is cannabis, cost lines are classified for IRC §280E — what counts as cost of goods sold versus what isn’t deductible — so the file you hand your accountant is already framed the way the return needs it.

What’s in it

  • QuickBooks Online two-way sync — push journal entries, reconcile both directions
  • Bank-feed import with auto-match plus an unmatched-transaction queue
  • Trial balance, P&L, and a guided month-close off the same login
  • Nightly bookkeeping-anomaly sweep flags bad entries before your CPA does
  • §280E cost-line classification — COGS vs non-deductible, framed CPA-ready

Inventoryapp surfaces

  • /admin/bookkeeper
  • /admin/bookkeeping/qbo
  • /admin/bookkeeper/reconcile
  • /admin/bookkeeper/reports/trial-balance
  • /admin/bookkeeper/month-close
  • /admin/bookkeeping/anomalies
Cross-cutting · across the shop

Weekly Traceability Filing

WAC 314-55-083

In Washington, CCRS reporting is a weekly chore that bites you at audit time if a week is missing or a number doesn’t tie out. Here the file builds itself from the sales, inventory, and disposal you already recorded, then reconciles against what the state has on record and flags any missing or mismatched weeks before you file. An accuracy pass and a dry-run anomaly scan catch the rows that would bounce. The CSV export is ready to upload today; direct integrator submission is in process — the LCB third-party integrator application is filed, and direct submission goes live once the Board grants us access to upload. Either way, the week is built and checked, not reconstructed from memory.

What’s in it

  • Weekly CCRS file built from real sales, inventory, and disposal records
  • Reconciliation against the state record — flags missing or mismatched weeks
  • Accuracy verification plus a dry-run anomaly scan before you file
  • CSV export ready to upload today
  • Direct integrator submission in process — LCB application filed. (No WAC section governs third-party integrator access: -083 uses the words integrator and third-party zero times. -083(4) puts the reporting duty on the LICENSEE, on whatever system the board specifies; the integrator programme is an LCB process, not a rule.)

Inventoryapp surfaces

  • /admin/ccrs/auto-pilot
  • /api/cron/ccrs-weekly-prep
  • /api/cron/ccrs-reconcile
  • /api/admin/ccrs/export.csv
Cross-cutting · across the shop

POS Cutover Plan

Switching POS is the thing every operator puts off because the horror story is always the same: loyalty balances vanish and the first day’s numbers don’t tie out. This is the cutover workspace built to move a shop off its existing POS in phases. A readiness board tells you what isn’t ready yet, a loyalty-balance snapshot preserves every customer’s points before the flip, and a reconciliation dry-run proves the numbers match before you commit. A drill harness lets you rehearse the switch, and a retry queue catches anything that stalls mid-migration. You move in phases — shadow first, then flip — instead of all at once on a Friday night and hoping.

What’s in it

  • Readiness workspace — what’s ready, what isn’t, before you commit
  • Loyalty-balance snapshot preserves every customer’s points pre-flip
  • Reconciliation dry-run proves the numbers tie out before the switch
  • Drill harness to rehearse the cutover plus a retry queue for stalls
  • Phased move — shadow first, then flip — not all at once

Inventoryapp surfaces

  • /admin/cutover-readiness
  • /admin/cutover/phase-1
  • /admin/cutover/loyalty-snapshot
  • /admin/cutover/retry-queue
  • /admin/cutover/drill-harness
Cross-cutting · across the shop

System Health

Single-pane-of-glass for the operator. Manager+ sees what’s green, what’s yellow, what needs attention right now: stale-open till sessions, overdue write-up follow-ups, vendor-license lapses, waste-log signatures still pending, cron jobs that didn’t run last night, integrations that drifted (METRC, SMS, email, push), feature-flag flips with the actor’s name attached. The audit log links from every row, so ‘why did this go yellow?’ is one click, not a ticket. The health board is what Doug checks before he opens email, and it’s the page a new manager learns the system from.

What’s in it

  • Health-board with red/yellow/green tiles across 13 surfaces
  • Automation-health — every cron, last run, next run, missed runs
  • Integrations grid — CCRS, SMS, email, push, sibling-store probe
  • Feature-flag flips logged with actor + timestamp
  • 150+ in-app help panels so a new manager solves their own question

Inventoryapp surfaces

  • /admin/system-health
  • /admin/automation-health
  • /admin/audit
  • /admin/control-panel
  • /admin/overview
Ready when you are

Want to see them in your dispensary’s data?

The demo deploy seeds production-shape personas, transactions, and write-ups so you can walk every module with real shapes of data — not a deck.

Request a demo
CannAgent

The dispensary operating system that runs the whole shop — not just the register. Powered by Sureel.

Also from Sureel: RadMail — email triage for the inbox your shop runs on.

Platform

  • Dispensary management software
  • Modules
  • Online menu
  • Integrations
  • How it works
  • Use cases
  • Cannabis POS
  • Inventory automation
  • Compliance automation
  • Loyalty rewards
  • Vendor portal
  • Payroll API docs

Switch & migrate

  • Features
  • Coming from another POS
  • Cutover

Explore

  • Pricing
  • Demo
  • For operators
  • Where we win
  • Case studies
  • By state
  • By city
  • Guides
  • Vendor due-diligence checklist
  • Shelf-empty tax
  • Diagnostic
  • Free audit

Company

  • About
  • Careers
  • Trust
  • Status
  • Changelog
  • FAQ
  • Privacy
  • Terms
  • Support
  • RadMail
  • Sureel

Markets

  • Washington
  • Michigan
  • New York
  • Massachusetts
  • Maine
  • Montana
  • Oklahoma

© 2026 CannAgent · A Sureel Ventures LLC brand · Compliance written against 24 state rulebooks · Cash-first by design

30 minutes on the working product. An operator replies.
Book it →