Vendors log in and pull their own.
Per-vendor scoped login. Live velocity + fill-rate dashboards. Self-serve PO proposal. Asset upload with license-version sign-off. Payment status + 1099 self-serve in January. Cross-store HMAC-signed federation that crosses the session wall but not the data wall. Replaces the email-thread loop entirely — and no other cannabis POS has it.
Four loops that eat dispensary time on the vendor side.
‘Hey, what did we sell of yours last month?’ is a 12-email thread.
Buyer asks. Doug looks it up. Sends the report. Vendor asks for last quarter too. Doug looks it up. Sends. Vendor asks why fill-rate dropped. Doug looks it up. The vendor portal turns all of that into a self-serve dashboard the vendor logs into. Doug answers zero of those emails — the vendor pulls their own.
Manifest variance disputes go to email and die.
Cultivera/LeafLink ships 24 of 25 cases. The receive picks up the variance. Today: Doug emails the vendor. Vendor emails back. Doug forwards the manifest. Vendor finds it on their side. Two weeks later. Vendor portal: dispute thread auto-opens at receive-time, both sides see the manifest + receive photos in one place, resolution lands in audit_log.
1099s are a January nightmare.
End-of-year. Bookkeeper asks for vendor 1099 figures. Doug pulls a CSV of every PO from January through December. Adds them up. Cross-checks against payment records. Files. Vendor portal: vendor logs in to /vmi/payments, sees their YTD payment record + auto-generated 1099-NEC draft, exports the PDF themselves. Doug doesn’t pull a CSV.
Cross-store wholesale is a security minefield.
Vendor sells to Wenatchee. Doug also runs Seattle. Vendor wants to log in once and see both. Naively done, this leaks one store’s data into the other. Federation done right: vendor session + DASHBOARD_SESSION_SECRET HMAC + per-store SESSION cookie + vendor-isolation gate. Vendor sees both stores; neither store leaks to the other or to other vendors.
Eight surfaces — vendor side, audit-traceable.
Per-vendor scoped login (vendor_users)
Separate auth from staff session. /vmi/login, separate cookie, vendor-isolation gate on every page so vendors NEVER see store-internal or cross-vendor data. Doug 2026-05-07 rule: ‘a vendor cant see any information for any other vendors.’
Velocity + fill-rate dashboard (own-data only)
/vmi/dashboard shows the vendor THEIR velocity, fill-rate, ad-slot performance — never another vendor’s. Tied to the same data the auto-PO pulls from, so vendor + buyer see the same number.
Self-serve PO proposal
Vendor proposes orders against the buyer’s velocity feed. Buyer reviews + approves or overrides + audit-logs the decision. Replaces the email-thread loop on every reorder.
Asset upload + license storage
/vmi/assets — vendor uploads logos, COAs, brand bios, marketing copy. Each gated by license-version sign-off (re-sign on version bump). Renders into customer-facing /brands/[slug] pages automatically.
Payment status + 1099 self-serve
/vmi/payments — vendor sees outstanding POs, paid POs, payment dates, YTD totals. 1099-NEC draft auto-generates in January. Vendor exports PDF themselves.
Manifest variance dispute thread
Receive picks up shortage / damage / SKU mismatch. Dispute auto-opens with manifest copy + receive photos + suggested resolution. Both sides resolve in one thread, audit-logged.
Cross-store federation (HMAC-signed)
Vendor with credentials at one store can log into the other via DASHBOARD_SESSION_SECRET-signed federation. Each store keeps its own data wall; the vendor session crosses the wall, the data doesn’t.
Vendor performance score → auto-PO weight
The same fill-rate / days-late / dispute count the vendor sees in their dashboard feeds the auto-PO drafting math. Transparency aligns incentives — vendors see what they’re scored on.
CannAgent vs. the alternatives.
No other cannabis POS has a built-in vendor portal at this depth. The competitors row reflects that — they offer email reports, not a portal.
| Capability | CannAgent | Dutchie | BLAZE | Treez |
|---|---|---|---|---|
| Built-in vendor portal | Yes (full self-serve) | Not available | Not available | Not available |
| Vendor sees their own velocity | Live dashboard | Email reports | Email reports | Email reports |
| Self-serve PO proposal by vendor | Yes | No | No | No |
| Self-serve 1099 generation | Yes | Manual export | Manual export | Manual export |
| Cross-store federation | HMAC-signed | Single-store | Single-store | Single-store |
| Vendor-isolation guard rails | Strict checkVendorBlock | Not applicable | Not applicable | Not applicable |
| Source available to your team | Yes | No | No | No |
Want to see a vendor log in?
30-minute walkthrough on a real Washington-store deployment. We’ll log into /vmi/dashboard as a real vendor (Brent at NWCS, dogfood) and walk through their dashboard, their PO proposal flow, their 1099.
Request a demo