Adds comprehensive financial management capabilities: - Accounts Receivable (AR) with customers, invoices, payments - Budget management with lines and variance tracking - Expense tracking with approval workflow - Fixed asset management with depreciation - Recurring transaction schedules (AP, AR, journal entries) - CFO dashboard with financial KPIs - Cash flow forecasting - Directory views for customers and vendors - Division filtering support across all modules
19 KiB
Suites & Pricing Model – Architecture Overview
1. Purpose
This document defines:
- The Suite architecture (7 Suites total)
- How each business (Cannabrands, Curagreen, Leopard AZ, Canopy) is mapped to Suites
- How menus/navigation should eventually be suite-driven
- The pricing and usage model for the Sales Suite
- Procurement flow between subdivisions and Canopy
- Cross-division access for users
- Ground rules to prevent breaking existing behavior while we evolve the system
This is the ground truth for implementation and future design.
2. Corporate Structure
Canopy is the parent management company. Cannabrands, Curagreen, and Leopard AZ are subdivisions.
┌─────────────────┐
│ CANOPY │
│ (Parent Co) │
│ │
│ • AP/AR │
│ • Finance │
│ • Budgets │
│ • Approvals │
└────────┬────────┘
│ owns
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Curagreen │ │ Leopard AZ │ │ Cannabrands │
│ (Processing) │ │ (Mfg/Deliv) │ │ (Sales) │
│ │ │ │ │ │
│ Operations │ │ Operations │ │ Operations │
│ only │ │ only │ │ only │
└───────────────┘ └───────────────┘ └───────────────┘
Key principle: All money flows through Canopy. Subdivisions handle operations; Canopy handles finance.
3. Suites Overview (7 Total)
We model functionality in high-level Suites, not scattered feature flags.
| # | Suite | Target User | Priced? |
|---|---|---|---|
| 1 | Sales Suite | External customers (Brands) | Yes - $495/mo |
| 2 | Processing Suite | Internal (Curagreen, Leopard AZ) | No |
| 3 | Manufacturing Suite | Internal (Leopard AZ) | No |
| 4 | Delivery Suite | Internal (Leopard AZ) | No |
| 5 | Management Suite | Internal (Canopy) | No |
| 6 | Brand Manager Suite | External (brand partners) | No |
| 7 | Dispensary Suite | Buyers (dispensaries/retailers) | No |
Note: Enterprise Plan is NOT a suite - it's a flag (is_enterprise_plan) that removes usage limits.
3.1 Sales Suite (Usage-Tiered, Sold to Customers)
The commercial brain for brands and sales orgs.
Core Features:
- Products & Inventory
- Orders & Invoicing
- Menus & Promotions
- Campaigns & Marketing
- Buyers & Accounts (CRM)
- Buyer Intelligence
- Analytics
- Automations & Orchestrator
- Copilot / AI Assist
- Batches (from supplied COAs)
Shared Features (all suites get these):
- Messaging (omnichannel)
- Procurement (vendors, requisitions, POs, receiving)
- Tools (settings, users, departments, integrations)
Only the Sales Suite is priced and usage-tiered.
3.2 Processing Suite (Internal / Enterprise Only)
Used by processing entities (e.g., Curagreen, Leopard AZ solventless).
Core Features:
- Biomass intake
- Batches and runs
- BHO extraction (Curagreen)
- Solventless extraction – washing & pressing (Leopard AZ)
- Yield tracking & conversions
- Material transfers between entities
- Work Orders from Sales → Processing
- Processing analytics
- Compliance (licenses, COAs)
Shared Features:
- Messaging
- Procurement
- Tools
3.3 Manufacturing Suite (Internal / Enterprise Only)
Used by manufacturing entities (e.g., Leopard AZ packaging & production).
Core Features:
- Work Orders from Sales/Processing
- BOM (Bill of Materials) - Manufacturing only
- Packaging & labeling
- SKU creation from batches
- Lot tracking
- Production queues & status
- Manufacturing analytics
- Compliance (licenses, COAs)
- Batches
Shared Features:
- Messaging
- Procurement
- Tools
3.4 Delivery Suite (Internal / Enterprise Only)
Used by delivery/fulfillment operations (e.g., Leopard AZ).
Core Features:
- Pick/Pack screens
- Delivery manifests
- Delivery windows
- Drivers & vehicles
- Route management
- Proof of delivery (POD)
- Delivery analytics
Shared Features:
- Messaging
- Procurement
- Tools
3.5 Management Suite (Internal / Canopy Only)
Used by top-level management (Canopy as parent company).
Core Features:
- Org-wide dashboard
- Cross-business analytics
- AP (Accounts Payable) - all vendor bills, PO payments
- AR (Accounts Receivable) - all customer invoices, collections
- Budget Management - set budgets per subdivision
- Budget Exception Approvals - approve POs that exceed budget
- Inter-company Ledger - track transfers between subdivisions
- Financial Reports - P&L, balance sheet, cash flow
- Forecasting
- Operational KPIs
- Usage & billing analytics
Shared Features:
- Messaging
- Tools
3.6 Brand Manager Suite (External Partners)
View-only portal for external brand teams to see their brand performance.
Core Features (all read-only, brand-scoped):
- View sales history
- View orders
- View products
- View inventory status
- View promotions
- View conversations
- View buyer accounts
- View brand-level analytics
Communication:
- Messaging (their brand only - can send/receive)
Explicitly NOT available:
- View costs, margins, wholesale pricing
- Edit products, create promotions
- Manage settings
- View other brands
3.7 Dispensary Suite (Buyers)
For buyer businesses (dispensaries, retailers) accessing the marketplace.
Core Features:
- Marketplace access
- Ordering
- Buyer portal
- Promotions (view/redeem)
Shared Features:
- Messaging
- Tools
4. Shared Features (All Suites)
These features are available to ALL operational suites:
4.1 Messaging
All suites get omnichannel messaging capabilities.
4.2 Procurement
| Feature | Description |
|---|---|
| Vendors & Suppliers | Each subdivision manages their own |
| Requisitions | Request purchases |
| Purchase Orders | Create POs |
| Goods Receiving | Confirm deliveries |
4.3 Tools
| Feature | Description |
|---|---|
| Settings | Business settings |
| Users | User management |
| Departments | Department structure |
| Integrations | Third-party integrations |
| Audit Log | Activity tracking |
5. Procurement & Finance Flow
5.1 Who Can Do What
| Role | Create Requisitions | Create POs | Approve Requisitions | Pay (via Canopy) |
|---|---|---|---|---|
| Department Managers | ✅ | ✅ | ✅ (their dept) | ❌ |
| Owners/Admins | ✅ | ✅ | ✅ (all) | ❌ |
| Canopy Finance | ✅ | ✅ | ✅ (budget exceptions) | ✅ |
5.2 Flow
Department Manager or Owner/Admin:
Creates REQUISITION or PO directly
└─▶ Canopy AP pays when invoiced
Budget Exception (PO exceeds subdivision budget):
PO created
└─▶ Flagged as over budget
└─▶ Canopy must approve
└─▶ Canopy AP pays
5.3 Canopy's Role
Canopy doesn't approve routine POs - they just handle the money:
| Feature | Description |
|---|---|
| AP Processing | Pay vendor invoices matched to POs |
| AR Collections | Collect customer payments |
| Budget Management | Set budgets per subdivision |
| Budget Exception Approvals | Only intervene when PO exceeds budget |
| Financial Reporting | Consolidated view across all subdivisions |
6. AR Invoicing vs CRM Invoicing
The platform has two distinct invoicing systems that serve different purposes. This is intentional, not duplication.
6.1 CRM Invoices (Sales Suite)
Tables: crm_invoices, crm_invoice_items, crm_invoice_payments
Purpose: Customer billing for sales transactions
| Aspect | Description |
|---|---|
| Audience | Buyer-facing (dispensaries, retailers) |
| Linked To | Orders, Deals, Quotes, CRM Contacts |
| Customer Reference | account_id → Buyer's business |
| Features | PDF generation, payment links, email delivery, view tracking |
| Workflow | Quote → Invoice → Payment → Fulfillment |
Use Cases:
- Send invoice to dispensary after order placed
- Convert quote to invoice when deal closes
- Track customer payment status
- Generate PDF for customer records
6.2 AR Invoices (Management Suite)
Tables: ar_invoices, ar_invoice_items, ar_payments, ar_customers
Purpose: Internal accounting and collections management
| Aspect | Description |
|---|---|
| Audience | Internal finance team (Canopy) |
| Linked To | Standalone AR Customers (not CRM contacts) |
| Customer Reference | ar_customer_id → ArCustomer record |
| Features | Aging reports, collections workflow, GL posting, credit management |
| Workflow | Invoice → Aging → Collections → Write-off/Payment |
Use Cases:
- Consolidated receivables across all divisions
- Aging analysis (30/60/90 day buckets)
- Collections tracking and follow-up
- Credit limit management
- Financial reporting and GL integration
- Receivables not tied to platform orders
6.3 Why Both Exist
┌─────────────────────────────────────────────────────────────────┐
│ SALES SUITE │
│ │
│ Quote → Order → CRM Invoice → Customer Payment │
│ │ │
│ (Buyer-facing billing document) │
└─────────────────────────────────────────────────────────────────┘
│
│ feeds into (future integration)
▼
┌─────────────────────────────────────────────────────────────────┐
│ MANAGEMENT SUITE │
│ │
│ AR Invoice → Aging → Collections → GL Posting │
│ │
│ (Internal accounting record for finance team) │
└─────────────────────────────────────────────────────────────────┘
Key Distinctions:
| CRM Invoices | AR Invoices |
|---|---|
| What you send to customer | What finance tracks internally |
| Sales document | Accounting record |
| One business's customers | Consolidated across divisions |
| Linked to orders/deals | May include non-order receivables |
| Customer portal access | Internal dashboards only |
6.4 Source of Truth
- For customer billing: CRM Invoices (
crm_invoices) - For accounting/collections: AR Invoices (
ar_invoices)
Both systems may eventually be linked (AR record references CRM invoice), but they serve fundamentally different business functions and should remain separate.
6.5 When to Use Which
| Scenario | System |
|---|---|
| Customer needs invoice for their records | CRM Invoice |
| Finance needs aging report | AR Invoice |
| Sales rep checking if customer paid | CRM Invoice |
| CFO reviewing consolidated receivables | AR Invoice |
| Send payment reminder to customer | CRM Invoice |
| Collections team following up | AR Invoice |
| Customer disputes an invoice | CRM Invoice (original document) |
| Write off bad debt | AR Invoice |
7. Cross-Division Access
Users can access multiple businesses via department assignments.
7.1 How It Works
- Add user to another business via
business_userpivot - Assign them to a department in that business
- Department has suite permissions that control what they can do
7.2 Example
Sarah (User)
├── Business: Cannabrands (primary)
│ └── Department: Sales Team
│ └── Suite: Sales (full permissions)
│
└── Business: Leopard AZ (cross-division)
└── Department: Manufacturing
└── Suite: Manufacturing (manage_bom only)
7.3 Permission Hierarchy
User Permission =
Business Role (owner gets all)
+ Department Permissions (inherited from department's suite permissions)
+ Individual Overrides (grants/revokes specific to user)
| Role | Access Level |
|---|---|
| Owner | Full access to everything |
| Admin | Full access except some owner-only actions |
| Manager | Department permissions + can manage team |
| Member | Department permissions only |
8. Business → Suite Mapping
8.1 Cannabrands
- Role: Sales & brand representation
- Suites: Sales Suite
- Plan: Enterprise (internal)
8.2 Curagreen
- Role: Processing – BHO extraction
- Suites: Processing Suite
- Plan: Enterprise (internal)
8.3 Leopard AZ
- Role: Solventless processing + Manufacturing + Delivery
- Suites:
- Processing Suite (solventless)
- Manufacturing Suite
- Delivery Suite
- Plan: Enterprise (internal)
8.4 Canopy
- Role: Parent company - financial & management oversight
- Suites: Management Suite
- Plan: Enterprise (internal)
9. Suite-Driven Navigation (Target State)
When a user logs in:
- We determine their Business
- We read the Suites assigned to that Business
- We check user's Department permissions for each suite
- We build the sidebar/navigation based on accessible features
9.1 Sales Suite Menu
- Dashboard
- Brands
- Products & Inventory
- Orders
- Menus
- Promotions
- Buyers & Accounts (CRM)
- Conversations
- Campaigns
- Automations
- Copilot
- Analytics
- Settings
9.2 Processing Suite Menu
- Dashboard
- Batches / Runs
- Biomass Intake
- Washing / Pressing (solventless)
- Extraction Runs (BHO)
- Yields
- Material Transfers
- Work Orders
- Compliance (Licenses, COAs)
- Processing Analytics
- Settings
9.3 Manufacturing Suite Menu
- Dashboard
- Work Orders
- BOM
- Packaging
- Labeling
- SKU Creation
- Lot Tracking
- Production Queue
- Compliance (Licenses, COAs)
- Manufacturing Analytics
- Settings
9.4 Delivery Suite Menu
- Dashboard
- Pick & Pack
- Delivery Windows
- Manifests
- Drivers & Vehicles
- Routes
- Proof of Delivery
- Delivery Analytics
- Settings
9.5 Management Suite Menu (Canopy)
- Org Dashboard
- Cross-Business Analytics
- Finance
- Accounts Payable
- Accounts Receivable
- Budgets
- Inter-company Ledger
- Forecasting
- Operations Overview
- Usage & Billing
- Settings
9.6 Brand Manager Menu
- Brand Dashboard
- Sales History
- Orders
- Products
- Inventory
- Promotions
- Conversations
- Analytics
9.7 Dispensary Suite Menu
- Marketplace
- My Orders
- Favorites
- Promotions
- Messages
- Settings
10. Sales Suite Pricing & Usage Model
10.1 Pricing
Base Sales Suite Plan:
- $495 / month
- Includes 1 brand
Additional Brands:
- $195 / month per additional brand
- Each additional brand comes with its own usage allotment
No public free tier. Enterprise internal plan is not sold.
10.2 Included Features (Per Brand)
Each brand under the Sales Suite gets:
- Full Inventory & Product Management
- Menus & Promotions
- Buyers & Accounts (CRM)
- Conversations & Messaging
- Marketing & Campaign Tools
- Buyer Intelligence
- Analytics (unlimited views)
- Automations & Orchestrator
- Copilot (AI-assisted workflows)
10.3 Usage Limits (Per Brand) – Initial Targets
| Resource | Limit |
|---|---|
| SKUs | 15 SKUs per brand |
| Menu Sends | 100 menu sends per month |
| Promotion Impressions | 1,000 promotion impressions per month |
| Messaging | 500 messages per month (SMS, email, in-app, WhatsApp combined) |
| AI Credits | 1,000 AI credits per brand per month |
| Buyer & CRM Contacts | 1,000 buyers/contacts per brand |
| Analytics | Unlimited analytics views |
10.4 Add-ons (Future)
- Extra SKU packs (+10, +25, +100)
- Extra menu send packs
- Extra promotion impression packs
- Extra CRM contact packs
- Extra AI credit packs
- Extra messaging volume
11. Enterprise Plan
Enterprise is NOT a Suite - it's a billing/limit override.
Enterprise Plan (is_enterprise_plan = true) means:
- Usage limits are bypassed (brands, SKUs, contacts, messages, AI credits, etc.)
- Feature access is still controlled by assigned Suites
A business with Enterprise Plan still needs actual Suites assigned to determine which features/menus are available.
Used only for internal operations (Cannabrands, Curagreen, Leopard AZ, Canopy).
12. Safety & Backward Compatibility
-
Existing navigation and behavior must be preserved until suite-based nav is explicitly enabled.
-
Changes should be additive:
- New DB columns for Suites and usage
- New services for Suite→Menu and usage tracking
- Config flag
app.suites.enabled
-
Migrations must be reversible.
-
Feature-flag toggles allow:
- Switching between current menu and suite-driven menu
- Disabling suite enforcement if issues arise
-
Legacy module flags (
has_crm,has_marketing, etc.) remain in "Advanced Overrides" admin area until fully migrated.
13. Implementation Phases
| Phase | Description |
|---|---|
| Phase 1 | ✅ Suites & Docs – Define Suites, business mapping, and pricing |
| Phase 2 | Suite consolidation – Reduce to 7 suites, update seeder and permissions |
| Phase 3 | User Management UI – Settings > Users with full permission control |
| Phase 4 | Suite-Driven Menu Resolver – Implement Suite→Menu mapping behind flag |
| Phase 5 | Usage Counters – Track menu sends, messages, AI usage, contacts, SKUs |
| Phase 6 | Usage Enforcement & Warnings – Soft and hard limits, usage dashboards |
| Phase 7 | Public Pricing Site – Marketing-facing pricing components |
This document is the canonical reference for suite architecture.