CNBS

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

SegmentTriggerOfferNext Action
Single-location independent dispensary (BR-001)New state license issued; operator running spreadsheets or a legacy POS with no METRC integrationFull-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 platformParent/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 consolidationEnterprise 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 complianceHosted 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 moduleDemo 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 toolsBudtender 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.ts and cypress/e2e/cannabis-transfer-manifest.cy.ts compliance 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, stripe in serverExternalPackages), 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, and scripts/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.

Deal flow · CNBS | Midwest