Major Features: - CRM Lite: Pipeline, tasks, accounts, calendar, inbox - AI Copilot: Multi-provider support, brand voice, content rules - Marketing: Campaigns, templates, channels, broadcasts - Intelligence: Buyer analytics, market intelligence dashboard - Orchestrator: Sales & marketing automation with AI - Compliance: License tracking (minimal shell) - Conversations: Buyer-seller messaging with email/SMS routing Infrastructure: - Suites & Plans system for feature gating - 60+ new migrations - Module middleware for access control - Database seeders for production sync - Enhanced product management (varieties, inventory modes) Documentation: - V1 scope, launch checklist, QA scripts - Module current state audit - Feature matrix (standard vs premium)
13 KiB
V1 Scope Document
Generated: November 2025 Based on: Full system audit of 295 migrations, 161 controllers, 130+ models, 416 views
Table of Contents
- Overview
- Personas
- Route Areas
- Implementation Status by Area
- Premium vs Standard Feature Tiers
- Known Gaps & Stubs
- Post-V1 Features
Overview
Cannabrands is a two-sided B2B marketplace connecting cannabis brands (sellers) with dispensaries (buyers). The platform uses manual business_id scoping for multi-tenancy (NOT spatie/laravel-multitenancy).
Tech Stack
- Backend: Laravel 12.38.1, PHP 8.4.14, PostgreSQL
- Frontend: Blade + DaisyUI + Tailwind CSS + Alpine.js
- Admin Panel: Filament v3 (for
/adminonly) - Storage: MinIO (S3-compatible)
- Queue: Redis + Laravel Horizon
Personas
1. Superadmin
- Access:
/admin/* - Framework: Filament v3
- Scope: Platform-wide (all businesses, users, system config)
- Key Functions: Business approval, module toggles, AI settings, usage monitoring
Permission Tiers (V1):
| Capability | Superadmin | Admin Staff |
|---|---|---|
| View resources (Users, Businesses, Orders) | ✅ | ✅ |
| Edit basic business info | ✅ | ✅ |
| Module toggles (Modules tab) | ✅ | ❌ Hidden |
| AI Settings & Content Rules | ✅ | ❌ Hidden |
| Module Usage Reports | ✅ | ❌ Hidden |
| Quick Switch / Impersonation | ✅ | ❌ Hidden |
| Horizon Queue Monitor | ✅ | ❌ Hidden |
Role Detection: Uses Spatie hasRole('Super Admin'). Admin Staff = user_type === 'admin' without the role.
2. Seller (Brand)
- Access:
/s/{business}/* - Framework: Blade + DaisyUI
- Scope: Business-scoped (their brands, products, orders)
- Key Functions: Product catalog, order fulfillment, invoicing, CRM, analytics
3. Buyer (Dispensary)
- Access:
/b/{business}/* - Framework: Blade + DaisyUI
- Scope: Business-scoped (their orders, invoices, team)
- Key Functions: Marketplace browsing, ordering, team management, analytics
Route Areas
/admin — Superadmin Platform
| Area | Status | Notes |
|---|---|---|
| User management | ✅ Complete | UserResource with approval workflow |
| Business management | ✅ Complete | BusinessResource with Modules tab |
| Brand management | ✅ Complete | BrandResource |
| Product management | ✅ Complete | ProductResource with RelationManagers |
| Order oversight | ✅ Complete | OrderResource |
| Invoice oversight | ✅ Complete | InvoiceResource |
| Component management | ✅ Complete | ComponentResource |
| Batch management | ✅ Complete | BatchResource |
| Lab management | ✅ Complete | LabResource |
| AI Settings | ✅ Complete | AiConnectionResource + AiContentRuleResource |
| Module toggles | ✅ Complete | In BusinessResource Modules tab |
| Usage reporting | ✅ Complete | ModuleUsageReport page |
| Quick switch | ✅ Complete | QuickSwitchController for testing |
| Failed jobs | ✅ Complete | FailedJobResource |
/s/{business} — Seller Platform
| Area | Status | Notes |
|---|---|---|
| Dashboard | ✅ Complete | Stats, recent orders, quick actions |
| Products list | ✅ Complete | Full CRUD with filtering |
| Product edit (multi-tab) | ⚠️ Partial | 13 tab stubs (see Known Gaps) |
| Product preview | ✅ Complete | Buyer-view preview |
| Brands | ✅ Complete | Full CRUD, dashboard, stats, AI voice |
| Orders | ✅ Complete | Full workflow, picking, manifest |
| Invoices | ✅ Complete | Create, list, PDF export |
| Customers | ✅ Complete | List + CRM integration |
| Contacts | ✅ Complete | Full CRUD with types |
| Locations | ✅ Complete | Full CRUD |
| Fleet (Drivers) | ✅ Complete | Full CRUD |
| Fleet (Vehicles) | ✅ Complete | Full CRUD |
| Components | ✅ Complete | Full CRUD for BOM |
| BOM | ✅ Complete | Editor, templates, PDF |
| Batches | ✅ Complete | CRUD, QR codes, COA |
| Settings | ✅ Complete | 15+ settings pages |
| CRM-Lite | ✅ Complete | Pipeline, tasks, calendar, accounts |
| Marketing | ✅ Complete | Broadcasts, campaigns, templates |
| Analytics | ✅ Complete | KPI cards, revenue chart, top products/buyers |
| Processing | ✅ Complete | Conversions, wash reports |
| Manufacturing | ✅ Complete | POs, work orders |
| Inventory | ✅ Complete | Items, movements, alerts |
| Conversations | ✅ Complete | Messaging with buyers |
| Bulk Actions | ✅ Complete | Prices, visibility, assign, inventory |
/b/{business} — Buyer Platform
| Area | Status | Notes |
|---|---|---|
| Dashboard | ✅ Complete | Business switcher, browse links |
| Marketplace | ✅ Complete | Products, brands, categories |
| Brand detail | ✅ Complete | Brand page with products |
| Product detail | ✅ Complete | Product page with batch info |
| Cart | ✅ Complete | Add/remove/update |
| Checkout | ✅ Complete | Delivery windows, payment terms |
| Orders | ✅ Complete | List, detail, acceptance |
| Invoices | ✅ Complete | List, detail, PDF |
| Favorites | ✅ Complete | Product bookmarks |
| Notifications | ✅ Complete | Stock alerts, order updates |
| Settings | ✅ Complete | Profile, locations, contacts |
| CRM | ✅ Complete | Inbox, tasks, analytics, team |
| Setup wizard | ✅ Complete | 3-step dispensary setup |
Implementation Status by Area
Core Platform (Always Enabled)
| Feature | Seller | Buyer | Admin |
|---|---|---|---|
| Dashboard | ✅ | ✅ | ✅ |
| Product catalog | ✅ | ✅ (browse) | ✅ |
| Order management | ✅ | ✅ | ✅ |
| Invoice management | ✅ | ✅ | ✅ |
| Contact management | ✅ | ✅ | ✅ |
| Location management | ✅ | ✅ | ✅ |
| User/team management | ✅ | ✅ | ✅ |
| Business profile | ✅ | ✅ | ✅ |
| Onboarding wizard | ✅ | ✅ | N/A |
Optional Modules (Feature Flagged)
| Module | Flag | Seller | Buyer | Admin |
|---|---|---|---|---|
| CRM-Lite | has_crm |
✅ | ✅ | Config |
| Marketing | has_marketing |
✅ | N/A | Config |
| Analytics | has_analytics |
✅ Implemented | ⚠️ Basic | Config |
| Inventory | has_inventory |
✅ | N/A | Config |
| Processing | has_processing |
✅ | N/A | Config |
| Manufacturing | has_manufacturing |
✅ | N/A | Config |
| Compliance | has_compliance |
✅ Minimal | N/A | Config |
| Conversations | has_conversations |
✅ | ✅ | Config |
| Buyer Intelligence | has_buyer_intelligence |
✅ Implemented | N/A | Config |
| AI Copilot | copilot_enabled |
✅ | N/A | Config |
Premium vs Standard Feature Tiers
Standard Tier (V1 Required)
All businesses get these by default:
- Dashboard - Stats, quick actions, recent activity
- Product Catalog - Full CRUD, images, SEO, pricing
- Order Management - Full workflow from new to finalized
- Invoice Management - Create, track, PDF export
- Contact Management - All contact types, soft delete
- Location Management - Multiple locations per business
- Team Management - Users, roles, permissions
- Fleet Management - Drivers and vehicles
- BOM System - Components, templates, cost calculation
- Batch/COA Tracking - Lab results, QR codes
- Basic Analytics - Sales Dashboard (
/s/{business}/dashboard/sales), basic analytics index (/s/{business}/analytics) - NOT gated by any module flags - Onboarding - 5-step business setup wizard
- Notifications - Stock alerts, order updates, reminders
Premium Tier (Module-Gated)
Businesses enable these via admin toggles:
| Module | Tier | Flag | Status |
|---|---|---|---|
| CRM-Lite (Standard) | Standard | has_crm |
✅ Implemented |
| CRM-Premium | Premium | crm_tier |
⚠️ Tables exist, no UI |
| Marketing | Premium | has_marketing |
✅ Implemented |
| Advanced Analytics | Premium | has_analytics |
✅ Implemented |
| Inventory | Premium | has_inventory |
✅ Implemented |
| Processing | Premium | has_processing |
✅ Implemented |
| Manufacturing | Premium | has_manufacturing |
✅ Implemented |
| Compliance | Premium | has_compliance |
✅ Minimal shell |
| Conversations | Premium | has_conversations |
✅ Implemented |
| Buyer Intelligence | Premium | has_buyer_intelligence |
✅ Implemented |
| AI Copilot | Premium | copilot_enabled |
✅ Implemented |
Module Tiers (basic/premium/custom)
Each module can have a tier level stored in businesses table:
copilot_tier- basic, premium, customcrm_tier- basic, premium, customanalytics_tier- basic, premium, custominventory_tier- basic, premium, custommarketing_tier- basic, premium, custom
Module Route Protection
All premium modules enforce access at the route middleware level:
| Module | Flag | Route Protection |
|---|---|---|
| Processing | has_processing |
Routes and UI gated by EnsureBusinessHasProcessing middleware |
| Manufacturing | has_manufacturing |
Routes and UI gated by EnsureBusinessHasManufacturing middleware |
| Conversations | has_conversations |
Routes and UI gated by EnsureBusinessHasConversations middleware |
| Buyer Intelligence | has_buyer_intelligence |
Routes and UI gated by EnsureBusinessHasBuyerIntelligence middleware |
| AI Copilot | copilot_enabled |
Routes and UI gated by EnsureBusinessHasCopilot middleware |
| Inventory | has_inventory |
Routes and UI gated by EnsureBusinessHasInventory middleware |
| Compliance | has_compliance |
Routes and UI gated by EnsureBusinessHasCompliance middleware |
| CRM | has_crm |
Routes and UI gated by EnsureBusinessHasCrm middleware |
| Marketing | has_marketing |
Routes and UI gated by EnsureBusinessHasMarketing middleware |
Known Gaps & Stubs
Critical: 13 Product Tab Stubs
The following views are 1-line placeholders:
seller/products/partials/inventory-tab.blade.phpseller/products/partials/batch-management-tab.blade.phpseller/products/partials/archived-tab.blade.phpseller/products/partials/promotions-tab.blade.phpseller/products/partials/listings-tab.blade.phpseller/products/partials/templates-tab.blade.phpseller/products/partials/custom-menus-tab.blade.phpseller/products/partials/faqs-tab.blade.phpseller/products/partials/strains-tab.blade.phpseller/products/partials/bulk-add-edit-tab.blade.phpseller/products/partials/product-packaging-tab.blade.php
Critical: Empty Views
1. ✅ Implementedseller/analytics/index.blade.php - 0 lines
Critical: Not Wired
1. Bulk Actions - ✅ Wiredseller/bulk-actions/index.blade.php (522 lines Alpine.js) not connected to backend
Schema Exists, No UI
- CRM Premium Tables - 12 tables (
crm_premium_*) created but no views Buyer Intelligence- ✅ All 5 views implemented with gating (Nov 2025)Compliance Module- ✅ Minimal shell implemented with dashboard + license list (Nov 2025)
Minimal Views
- ✅ Polished with quick start guide (Nov 2025)onboarding/confirmation.blade.php- ✅ Polished with progress UI (Nov 2025)onboarding/processing.blade.phpseller/crm/feature-disabled.blade.php- 58 lines (placeholder)
Post-V1 Features
Defined in Spec (Not Started)
- WhatsApp Integration - Additional messaging channel
- Campaign A/B Testing - Subject line and timing tests
- Drip Campaigns - Multi-step automated sequences
- Predictive Segments - ML-based audience prediction
- Advanced Copilot - Multi-step content generation
- Internal Notes - Brand-only notes on conversations
- Conversation Assignment - Assign to team members
- SLA Tracking - Response time metrics and alerts
- Meilisearch - Full-text search (currently LIKE queries)
- Calendar Sync - Google/Outlook integration
Technical Debt
- Migrate Precognition → Livewire - Real-time form validation
- Optimize Large Files - seller-sidebar (41K lines), modal (3K lines)
- Consolidate Brand Switcher - Two versions exist
- Clean Up Migrations - Rename cycles (businesses→companies→businesses)
- Remove Unused Tables -
retailerstable not referenced
Summary
V1 Readiness: 90%+ implemented
The core B2B marketplace functionality is production-ready. Main gaps are:
13 product tab stubs need content✅ 11 tabs implemented (Nov 2025)1 analytics view is empty✅ Implemented (Nov 2025)Bulk actions frontend needs wiring✅ Wired (Nov 2025)Buyer Intelligence views incomplete✅ All 5 views implemented with gating (Nov 2025)Compliance module needs building✅ Minimal shell with dashboard + license list (Nov 2025)- CRM Premium features need UI
All module flags and tiers are in place for gradual feature rollout.