Deal flow
Deal flow
Last updated 5/24/2026
Deal Flow
Pipeline Thesis
CNBS (Cannabis Business System) creates commercial opportunities by selling a vertically integrated, compliance-first POS and dispensary management platform to licensed cannabis operators. The product's value proposition is built on three mutually reinforcing pillars: regulatory automation (METRC integration, purchase-limit enforcement, transfer manifests, waste tracking surfaced in cypress/e2e/), multi-location multi-org architecture (parent/child organization hierarchy documented in docs/architecture/PARENT_CHILD_ORGANIZATION_ARCHITECTURE.md), and AI-assisted merchandising (/api/ai/generate-hero, /api/ai/generate-promotion, /api/ai/extract-colors). Each pillar reduces operator risk or labor cost, creating a direct ROI case that shortens sales cycles and increases average contract value. Revenue accelerates as each live dispensary generates ongoing subscription and transaction-processing fees, and each satisfied customer becomes a reference account for adjacent operators in the same licensed market.
Target Accounts
| Segment | Trigger | Offer | Next Action |
|---|---|---|---|
| Single-location independent dispensary (BR-001) | New state license issued; operator running spreadsheets or a legacy POS with no METRC integration | Full-stack POS + METRC compliance bundle; Puffutica inventory sync (scripts/sync-puffutica-inventory.js); Square/Stripe payment processing (@square/web-sdk, stripe in next.config.ts) | Demo the cypress/e2e/metrc-package-scanning.cy.ts workflow live; issue a 30-day pilot on a single POS station |
| Multi-location retail group (2–10 stores) (BR-002) | Franchise expansion, acquisition of a second license, or compliance penalty from a competitor platform | Parent/child org management (docs/architecture/PARENT_CHILD_ORGANIZATION_ARCHITECTURE.md); centralized analytics (/api/analytics/dashboard, /api/analytics/revenue); per-location cash drawer and associate management (/api/cash-drawer, /api/associates) | Run a live multi-org environment walkthrough; provide reference data from data_export/organizations.csv |
| Cannabis MSO / enterprise operator (10+ doors) (BR-003) | Platform migration, failed audit, or M&A-driven consolidation | Enterprise SLA, bulk product import (src/app/api/organizations/[orgId]/products/__tests__/bulk.integration.test.ts), AI-driven promotion engine (/api/ai/generate-promotion), custom storefront branding (/api/ai/extract-colors), and dedicated onboarding (/api/admin/onboarding/complete) | Deliver a signed NDA and a technical architecture brief referencing docs/ARCHITECTURE.md; schedule a security review using __tests__/security/customer-data-security.test.ts outputs |
| Delivery-only / e-commerce dispensary (BR-004) | Delivery zone licensing approved; no online storefront capable of age-gating and compliance | Hosted storefront CMS (e2e/cms-workflows.spec.ts), delivery zone configuration (data_export/delivery_zones.csv), customer segmentation (__tests__/components/customers/CustomerSegmentationManager.test.tsx), and loyalty rewards module | Demo the storefront config panel (src/__tests__/cms/StorefrontConfigPanel.test.tsx); highlight GDPR/CCPA compliance posture (__tests__/compliance/gdpr-ccpa-compliance.test.ts) |
| Budtender-forward boutique operator (BR-005) | High staff turnover; owner seeking in-app training and guided selling tools | Budtender dashboard (src/components/budtender/__tests__/BudtenderHeader.test.tsx), product card UI (src/components/budtender/__tests__/ProductCard.test.tsx), cart sidebar (src/components/budtender/__tests__/CartSidebar.test.tsx), and training modules (PR #99, fix(ZP-4296,97):training-modules) | Offer a self-guided trial using seeded demo data from database/customers_inserts.sql and database/insert-all-brands.sql |
Qualification Signals
- Active or pending cannabis retail license in a state where METRC is the seed-to-sale tracking system, confirmed by reference to
cypress/e2e/metrc-package-scanning.cy.tsandcypress/e2e/cannabis-transfer-manifest.cy.tscompliance coverage. - Existing POS dissatisfaction evidenced by manual purchase-limit tracking, missing tax calculation automation (
cypress/e2e/cannabis-tax-calculation.cy.ts), or a recent failed state audit. - Multi-location ambition — the operator manages or plans to manage more than one dispensary, making the parent/child org architecture (
docs/architecture/PARENT_CHILD_ORGANIZATION_ARCHITECTURE.md) and per-org product bulk management (/api/organizations/[orgId]/products) immediately valuable. - Payment processing friction — operator is paying high rates on cash-only or single-processor solutions; CNBS supports Stripe, Square (
@square/web-sdk,square,stripeinserverExternalPackages), and AeroSync ACH (aerosync-web-sdk). - Marketing or branding investment — operator has a visual identity and wants AI-generated hero images or promotions (
/api/ai/generate-hero,/api/ai/generate-image,/api/ai/save-generated-image), signaling willingness to pay for premium tier features. - Compliance risk awareness — operator has received a METRC violation notice, a purchase-limit overage (
cypress/e2e/cannabis-purchase-limits.cy.ts), or a failed regulatory report (cypress/e2e/regulatory-reporting.cy.ts). - Employee management pain — operator is manually scheduling associates or lacks role-based access control; surfaced by interest in
/api/associates,/api/auth/check-role, and the training modules referenced in PR #99. - Data portability need — operator is migrating from a competitor and needs structured import; evidenced by presence of
data-migration/sample-products.csv,data-migration/cannabis-strain-database.json, andscripts/migrate-to-cloud.js(PR #103).
Conversion Loop
1. Awareness → Trial Activation
Prospects discover CNBS through cannabis trade channels or direct outreach. The marketing landing page (recently redesigned per commits d40c3f9 and bc4a591) drives to a self-serve signup backed by /api/admin/onboarding/complete and Clerk organization provisioning (/api/clerk/sync/organization, /api/clerk/add-to-organization). A seeded environment is spun up using scripts/test-db-setup.js and pre-loaded brand and product data from database/insert-all-brands.sql and database/insert-products-batch1.sql, giving the prospect a working POS within minutes.
2. Trial → Proof of Value
During the trial, the operator runs transactions through the budtender POS (src/components/budtender/), processes a sale with tax (cypress/e2e/cannabis-tax-calculation.cy.ts), and scans a METRC package (cypress/e2e/metrc-package-scanning.cy.ts). Real-time analytics (/api/analytics/dashboard/real-time) and the performance dashboard (/api/analytics/dashboard/performance) surface immediate KPIs — revenue, inventory turns, customer counts — making the value tangible before any contract conversation. The AI promotion generator (/api/ai/generate-promotion) produces a branded asset in under 60 seconds, anchoring the creative ROI story.
3. Proof → Commercial Proposal
The sales team uses data from /api/analytics/reports/sales and /api/analytics/predictions to build a custom ROI model for the prospect's volume. Compliance test results from cypress/e2e/cannabis-compliance.cy.ts and the GDPR/CCPA posture (__tests__/compliance/gdpr-ccpa-compliance.test.ts) are packaged as a risk-reduction brief. The multi-location demo, using the parent/child architecture and the centralized revenue endpoint (/api/analytics/revenue), is deployed via Docker (infrastructure/docker/docker-compose.production.yml) to a staging environment matching the prospect's state and license type.
4. Proposal → Close
Contracts are structured around a per-location monthly SaaS fee plus a transaction processing margin. Implementation is accelerated by the data migration tooling (scripts/migrate-to-cloud.js, data-migration/ directory) and the Puffutica inventory sync (scripts/sync-puffutica-inventory.js), reducing go-live risk. Closed accounts are onboarded through the admin wizard (/api/admin/onboarding/complete) and added to the Clerk organization hierarchy, immediately feeding back into the analytics layer as reference account proof for the next prospect in the pipeline.
5. Close → Expansion
Live customers expand by adding POS stations (documented in docs/POS_SETUP/), activating the loyalty module (docs/archive/agent-plans/02_agent_loyalty_section_COMPLETE.md), enabling delivery zones (data_export/delivery_zones.csv), and unlocking AI image generation credits. Each expansion event is tracked via /api/analytics/vitals and /api/analytics/insights, generating upsell signals that re-enter the loop at step 3 for the next tier offer.