Module 6: Reporting & Analytics
⛔ SUPERSEDED 2026-06-11 — Sprig-era feature spec (pre-pivot). The authoritative current design is the locked schema in docs/SCHEMA.md, the module's entry in docs/PROJECT_DECISIONS.md, and the responsibility/seam maps in docs/MODULE_INDEX.md + docs/CROSS_MODULE_CONTRACTS.md. This file is retained for historical feature context only; do NOT treat its scope/table/feature claims as current (it predates the nursery→generic pivot, the HR-out-of-scope cut, the identity/payments/integrations/files extractions, and the schema locks). Superseded note added 2026-06-11.
Status: ✅ Locked for v1.0
Schema: reporting
Feature count: 146 features in v1.0
Build estimate: Strategic spec only — implementation effort TBD
Last updated: 2026-05-12
Overview
Reporting & Analytics is the "show me the data" surface across all other modules. It owns dashboards, scheduled reports, custom report building, exports, and BI-style visualizations. Reporting consumes data from every operational module via materialized views and event subscriptions.
For nurseries, the operational reporting questions are: what's selling, what's not, what's slow-moving; how contractors perform; where margins live; cash flow visibility during spring crunch; inventory turnover and waste; vendor performance trends; and marketing campaign effectiveness.
Reporting is a terminal module — it consumes from everywhere, emits relatively little.
Target Customer Profile
- Mid-size growth-stage retail nursery, $500K–$5M revenue
- Owner reviews dashboards daily during spring
- Bookkeeper/accountant pulls monthly financial reports
- Manager reviews weekly operational reports
- Sales rep / lead checks contractor scorecards
- Multi-site operations require consolidated reporting
Architecture Principle: Configurability
Every threshold, default, refresh rate, and schedule in Reporting is configurable per tenant via the Owner Dashboard (Module 10).
Feature Hierarchy (146 features across 15 groups)
Group 1: Sales Reports (13 features)
| # |
Feature |
Notes |
| 1.1 |
Daily sales summary |
Total revenue, transactions, avg ticket — for any day |
| 1.2 |
Sales by date range |
Custom date range with filters |
| 1.3 |
Sales by cashier |
Performance ranking |
| 1.4 |
Sales by hour-of-day |
When is your busy time? |
| 1.5 |
Sales by day-of-week |
Saturday vs Tuesday patterns |
| 1.6 |
Sales by month-over-month |
Trend visualization |
| 1.7 |
Sales by year-over-year |
Seasonal comparison |
| 1.8 |
Sales by tender type |
Cash vs credit vs charge account |
| 1.9 |
Sales by customer type |
Retail vs contractor vs commercial |
| 1.10 |
Sales by site (multi-loc) |
Site-level performance comparison |
| 1.11 |
Top sales days |
Best 10/30/365 days by revenue |
| 1.12 |
Sales velocity tracking |
Items per hour, transactions per hour |
| 1.13 |
Goal vs actual reporting |
Set targets, compare against actuals |
Group 2: Product / Inventory Reports (15 features)
| # |
Feature |
Notes |
| 2.1 |
Top selling items (by qty) |
Volume leaders |
| 2.2 |
Top selling items (by revenue) |
Dollar leaders |
| 2.3 |
Top selling items (by margin) |
Profit leaders |
| 2.4 |
Slow-moving items |
Items not selling; flags for clearance/markdown |
| 2.5 |
Dead stock report |
Items with no sales in X days |
| 2.6 |
Aging inventory report |
How long inventory has been in stock |
| 2.7 |
Inventory valuation |
Total value of stock on hand (cost basis or retail) |
| 2.8 |
Inventory turnover rate |
How fast inventory cycles through |
| 2.9 |
Out-of-stock report |
Items currently at zero qty |
| 2.10 |
Low-stock alerts dashboard |
Items at or below reorder threshold |
| 2.11 |
Variant performance comparison |
Compare different sizes of same plant |
| 2.12 |
Plant category performance |
Annuals vs perennials vs trees, etc. |
| 2.13 |
Vendor cost trend per item |
How vendor costs change over time |
| 2.14 |
Inventory shrinkage / loss report |
Dead count, theft, adjustments over time |
| 2.15 |
Plant health analytics |
Dead count by plant category; flags categories with high mortality |
Group 3: Customer Reports (13 features)
| # |
Feature |
Notes |
| 3.1 |
Top customers by revenue |
Highest-spend customers |
| 3.2 |
Top customers by frequency |
Most repeat customers |
| 3.3 |
New customer acquisition by source |
Where new customers come from |
| 3.4 |
Customer retention rate |
% of customers returning over time |
| 3.5 |
Customer LTV distribution |
Spread of customer lifetime values |
| 3.6 |
Customer churn analysis |
When customers stop returning |
| 3.7 |
Contractor customer performance |
A/R aging, payment behavior, spend |
| 3.8 |
Customer segment performance |
Revenue per segment |
| 3.9 |
Customer geographic heat map |
Where customers come from |
| 3.10 |
Loyalty program performance |
Enrollment rate, redemption rate, tier distribution |
| 3.11 |
Cohort analysis |
Customer/order cohorts over time — retention, LTV per cohort |
| 3.12 |
Customer concentration report |
"Top 10 customers = 60% of revenue" — concentration risk |
| 3.13 |
Sustainability dashboard |
Aggregates % of inventory and % of sales tagged as native / pollinator-friendly / drought-tolerant / pet-safe (from Inventory feature 1.4 plant care attributes). Trend over time. Per-segment breakdown. Useful for trade reporting and customer-facing sustainability claims. |
Group 4: Margin & Profitability Reports (9 features)
| # |
Feature |
Notes |
| 4.1 |
Gross margin by product |
Per-item or per-category margins |
| 4.2 |
Gross margin by customer |
Margins on different customer types |
| 4.3 |
Markup analysis |
Markup % per category vs target |
| 4.4 |
Discount impact on margin |
How much margin lost to discounts |
| 4.5 |
Promotional pricing margin |
Margin during sale events |
| 4.6 |
Cost variance |
When receiving cost differed from PO cost |
| 4.7 |
Profit by site |
Multi-loc profitability |
| 4.8 |
Profit trend |
Year-over-year profit changes |
| 4.9 |
Profitability waterfall |
Sales → Cost → Margin → Discounts → Fees → Net (visualization) |
Group 5: Order & Fulfillment Reports (11 features)
| # |
Feature |
Notes |
| 5.1 |
Open orders dashboard |
All active reservations, contractor orders, special orders |
| 5.2 |
Order aging |
How long orders have been open |
| 5.3 |
Reservation conversion rate |
% of reservations that convert to sales |
| 5.4 |
Quote-to-order conversion |
% of quotes that become orders |
| 5.5 |
Cancellation rate |
Order cancellation patterns |
| 5.6 |
Fulfillment performance |
Time-to-ready, accuracy, errors |
| 5.7 |
Picker performance |
Per-staff fulfillment metrics |
| 5.8 |
Order revenue forecast |
Projected revenue from open orders |
| 5.9 |
Backorder pipeline |
What's waiting to ship |
| 5.10 |
SLA compliance |
"Customer expected by X" — are we meeting it? |
| 5.11 |
Funnel analysis |
Quote → Order → Fulfilled → Paid — drop-off rates per stage |
Group 6: Purchasing & Vendor Reports (11 features)
| # |
Feature |
Notes |
| 6.1 |
Open POs dashboard |
What's been ordered, what's pending |
| 6.2 |
PO spend by vendor |
Top vendors by $ spent |
| 6.3 |
PO spend by category |
Plants vs hard goods vs services |
| 6.4 |
Vendor lead time tracking |
Actual vs promised lead times |
| 6.5 |
Vendor performance ranking |
On-time + fill rate + quality + price composite |
| 6.6 |
Vendor cost trend |
How costs change with each vendor over time |
| 6.7 |
Receiving discrepancy report |
Shorts, substitutions, damages by vendor |
| 6.8 |
Three-way match status |
Pending matches, mismatches, approved invoices |
| 6.9 |
Vendor 1099 spending |
Annual spend per vendor for tax reporting |
| 6.10 |
Reorder accuracy |
Forecast vs actual purchases |
| 6.11 |
Vendor concentration report |
"Top 5 vendors = 80% of spend" — concentration risk |
Group 7: Financial Reports (11 features)
| # |
Feature |
Notes |
| 7.1 |
Daily cash position |
Cash on hand, in drawers, in deposits |
| 7.2 |
A/R aging |
Customer receivables by age bucket |
| 7.3 |
A/P aging |
Vendor payables by age bucket |
| 7.4 |
Cash flow projection |
Expected cash in/out next 30/60/90 days |
| 7.5 |
Daily journal entries |
Sales, refunds, adjustments — accounting feed |
| 7.6 |
Sales tax collected |
By jurisdiction; ready for filing |
| 7.7 |
Sales tax owed |
What needs to be remitted |
| 7.8 |
Charge account aging |
Specific to customer A/R |
| 7.9 |
Variance reports |
Cash drawer variances, inventory variances |
| 7.10 |
Reconciliation reports |
Daily Z-tape, deposit reconciliation |
| 7.11 |
Budget vs actual reporting |
If tenant sets budget, show variance with breakdown |
Group 8: Marketing & Campaign Reports (8 features)
| # |
Feature |
Notes |
| 8.1 |
Campaign performance dashboard |
All campaigns: sent, opened, clicked, converted |
| 8.2 |
Email open rate by campaign |
Effectiveness metric |
| 8.3 |
Campaign-to-revenue attribution |
How much revenue came from this campaign |
| 8.4 |
Customer engagement scoring |
Active vs disengaged customers |
| 8.5 |
Loyalty program ROI |
Cost of program vs revenue impact |
| 8.6 |
Referral program performance |
New customers from referrals |
| 8.7 |
Customer-facing app engagement |
App opens, plant care views, purchases via app |
| 8.8 |
Marketing ROI by channel |
Email vs SMS vs in-store |
Group 9: Operational Reports (11 features)
| # |
Feature |
Notes |
| 9.1 |
Staff performance dashboard |
Sales per cashier, picker times, returns processed |
| 9.2 |
Register reconciliation status |
Open/closed/variance per register per site |
| 9.3 |
Daily operations summary |
One-page view of today: sales, orders, receipts, issues |
| 9.4 |
Plant care reminders sent |
Customer-facing automation effectiveness |
| 9.5 |
Customer-facing app metrics |
Plant care queries, AI usage |
| 9.6 |
Fraud / suspicious activity report |
Patterns flagged by AI |
| 9.7 |
Compliance status dashboard |
PCI, GDPR, tax filings status |
| 9.8 |
System uptime / health |
Backend service status |
| 9.9 |
Database / storage health |
Disk usage, backup status |
| 9.10 |
API usage tracking |
Internal API call patterns |
| 9.11 |
Anomaly detection alerts |
AI-flagged variance ("Sales down 30% vs expected today") — automatic |
Group 10: Custom Reports & Builder (12 features)
Scope framing: Group 10 is a BI-lite layer — pivot tables, calculated columns, scheduled custom reports. Not a full data warehouse. Complex multi-table joins via UI are permitted but performance-bounded by source materialized views. Group 10 is tier-gated to Pro+.
| # |
Feature |
Notes |
| 10.1 |
Custom report builder |
Drag-and-drop or query-builder UI |
| 10.2 |
Save custom report definitions |
Name and reuse later |
| 10.3 |
Shared custom reports |
Share within tenant (manager creates, staff views) |
| 10.4 |
Schedule custom reports |
Auto-run daily/weekly/monthly |
| 10.5 |
Report export to CSV |
All custom reports |
| 10.6 |
Report export to PDF |
All custom reports |
| 10.7 |
Report email delivery |
Auto-email scheduled reports to stakeholders |
| 10.8 |
Custom report templates library |
Pre-built starter templates for common questions |
| 10.9 |
Pivot table report builder |
Drag-and-drop pivot tables for ad-hoc analysis |
| 10.10 |
Saved filter views |
Re-usable filter combinations (e.g., "Spring contractor orders") |
| 10.11 |
Report parameter prompts |
Run-time inputs ("Enter date range" / "Enter customer" / etc.) |
| 10.12 |
Calculated columns in reports |
Add columns like margin %, growth %, days-to-pay |
Group 11: Dashboards & Visualizations (11 features)
| # |
Feature |
Notes |
| 11.1 |
Real-time owner dashboard |
Today's sales, open orders, low stock, A/R balance. "Real-time" = polled every 30 seconds from materialized views; not streaming. See ARCHITECTURE.md "Real-Time vs Streaming Reconciliation". |
| 11.2 |
Customizable dashboard widgets |
Choose which metrics, charts to display |
| 11.3 |
Mobile dashboard view |
Owner can check from phone anytime |
| 11.4 |
Multi-site dashboard |
Owner views all sites in one dashboard |
| 11.5 |
Drill-down capability |
Click metric → see underlying data |
| 11.6 |
Time-period switcher |
Day/week/month/quarter/year views |
| 11.7 |
Comparison views |
Side-by-side: this period vs last period |
| 11.8 |
Charts and visualizations |
Lines, bars, pies, maps |
| 11.9 |
Conditional formatting on reports |
Red for negative variance, green for positive |
| 11.10 |
Date dimension picker |
Calendar/fiscal/custom date hierarchies |
| 11.11 |
YTD / MTD / QTD running totals |
Year-to-date, month-to-date, quarter-to-date |
Group 12: Export & Integration Reports (6 features)
| # |
Feature |
Notes |
| 12.1 |
QuickBooks export reports |
Sales summary, vendor bills, tax data — formatted for QB. Routes via the Integrations module (Core & Platform Layer); Reporting prepares the report payload, Integrations delivers it to QuickBooks via the unified connector pattern. |
| 12.2 |
Excel export |
All reports exportable to Excel |
| 12.3 |
PDF export |
Branded PDF reports |
| 12.4 |
Raw data export (CSV) |
All data exportable |
| 12.5 |
API for third-party tools |
Reports queryable via API (Enterprise tier) |
| 12.6 |
Webhook event subscriptions |
External tools subscribe to report events |
Group 13: Forecasting & Predictive (5 features)
| # |
Feature |
Notes |
| 13.1 |
Revenue forecast |
Next 30/60/90 days projected |
| 13.2 |
Seasonal demand forecast |
What to stock for next season |
| 13.3 |
Inventory needs forecast |
Reorder suggestions with AI |
| 13.4 |
Cash flow forecast |
Projected cash position |
| 13.5 |
Customer churn prediction |
Who's at risk of leaving |
Group 14: Audit & Compliance Reports (6 features)
| # |
Feature |
Notes |
| 14.1 |
Audit trail report |
All system changes with actor, time, IP |
| 14.2 |
User activity log |
Who did what when |
| 14.3 |
Failed login attempts |
Security monitoring |
| 14.4 |
Data access log (sensitive data) |
Who viewed customer PII, financial data |
| 14.5 |
GDPR/CCPA compliance audit |
Data exports/deletions tracked |
| 14.6 |
PCI SAQ-A scope evidence export |
Generates evidence package for the tenant's PCI SAQ-A self-attestation. Vrida uses Stripe tokenization; cards never touch Vrida systems. Export documents the tokenization scope, not a full PCI audit (which is Stripe's responsibility under their SAQ scope). |
Group 15: Report Distribution & Subscriptions (4 features)
| # |
Feature |
Notes |
| 15.1 |
Report subscription management |
Choose which reports to receive automatically |
| 15.2 |
Report scheduling per recipient |
Different recipients get different reports |
| 15.3 |
Report opt-in / opt-out |
Users manage their report subscriptions |
| 15.4 |
Report history archive |
All sent reports archived; resendable |
Tier Behavior (Module-Level)
| Tier |
Reporting capability |
| Starter |
Basic reports only: daily sales, inventory valuation, top sellers, low stock. No custom builder, no scheduling, no exports beyond CSV. |
| Pro |
Full reporting suite: all built-in reports, custom builder, pivot tables, scheduled reports, dashboards, exports. Single-site view. |
| Enterprise |
+ Multi-site dashboards + comparison views + API access + advanced analytics + budget/goal/forecast features + cohort analysis + concentration reports + anomaly detection. |
Configurable Defaults (Owner Dashboard)
| Configurable |
Default |
| Daily dashboard refresh rate |
"Real-time" = polled every 30 seconds from materialized views (NOT streaming); configurable to 1 min, 5 min, 15 min. See ARCHITECTURE.md "Real-Time vs Streaming Reconciliation". |
| Default reporting period |
Last 30 days |
| Comparison period |
Same period last year |
| Email scheduled reports |
OFF by default; user opts in |
| Owner dashboard default widgets |
Sales today, Open orders, Low stock, A/R balance, Recent activity |
| Mobile dashboard enabled |
ON (owner role) |
| Custom report sharing default |
Owner-only (must explicitly share) |
| Report retention |
7 years for compliance reports; 90 days for ad-hoc |
| API access for reports |
Enterprise tier only |
| Multi-site dashboard |
Enterprise tier only |
| Forecast horizon |
30/60/90 days |
| Audit trail granularity |
All actions logged |
| Anomaly detection sensitivity |
Medium (configurable: low/medium/high) |
| Anomaly alert delivery |
Email + dashboard notification |
| Budget/goal tracking enabled |
OFF (configurable to ON) |
| Concentration risk threshold |
Top 10 customers >= 50% of revenue triggers flag |
| Cohort retention window |
12 months |
AI Features in Reporting & Analytics
| Feature # |
AI capability |
| 2.4 |
AI-powered slow-mover identification |
| 9.6 |
AI fraud / suspicious activity detection |
| 9.11 |
AI anomaly detection alerts |
| 13.1 |
AI revenue forecasting |
| 13.2 |
AI seasonal demand forecasting |
| 13.5 |
AI customer churn prediction |
| 11.5 |
AI-suggested drill-downs based on anomalies |
| 1.12 |
AI-detected sales velocity anomalies |
| 8.4 |
AI customer engagement scoring |
All AI features route via AIService (AI / Intelligence module; model-as-config; AWS Bedrock Claude Haiku 4.5 is the default model). Reporting does not call Bedrock directly.
Events Emitted
reporting.report_generated
reporting.scheduled_report_sent
reporting.dashboard_accessed
reporting.alert_triggered (e.g., revenue below forecast, anomaly detected)
reporting.audit_log_exported
reporting.budget_threshold_exceeded
reporting.concentration_risk_flagged
reporting.churn_risk_flagged
Events Consumed
All modules emit events that Reporting subscribes to for analytics:
pos.sale_completed, pos.refund_processed, etc.
orders.reservation_created, orders.fulfilled, etc.
purchasing.po_sent, purchasing.receipt_recorded, etc.
crm.customer_created, crm.churn_risk_detected, etc.
inventory.stock_changed, inventory.dead_count_recorded, etc.
billing.subscription_changed
API Contract (ReportingService — public methods)
High-level surface (detailed signatures during implementation):
- Standard reports:
getSalesReport, getInventoryReport, getCustomerReport, getMarginReport, getOrdersReport, getPurchasingReport, getFinancialReport, getMarketingReport, getOperationalReport
- Custom reports:
createCustomReport, saveReport, runReport, scheduleReport, shareReport, addCalculatedColumn, setParameterPrompt
- Dashboards:
getDashboard, updateDashboardWidgets, getMultiSiteDashboard
- Drilling:
getDrillData, getRelatedData
- Forecasting:
getRevenueForecast, getInventoryForecast, getChurnPrediction
- Anomaly detection:
getAnomalies, setAnomalyThresholds, acknowledgeAnomaly
- Goal & budget:
setGoal, setBudget, getGoalProgress, getBudgetVariance
- Cohort & funnel:
getCohortAnalysis, getFunnelMetrics
- Concentration:
getCustomerConcentration, getVendorConcentration
- Audit:
getAuditLog, exportAuditLog, getUserActivity
- Export:
exportToCSV, exportToExcel, exportToPDF, exportToQuickBooks (exportToQuickBooks routes the payload to the Integrations module's QuickBooks connector; Reporting does not call the QB API directly)
- Subscriptions:
subscribeToReport, unsubscribeFromReport, getSubscriptions
Out of Scope
| Capability |
Why excluded |
| Business Intelligence (BI) full data warehouse |
Too complex for v1.0 |
| Real-time streaming analytics |
Future v2.0 |
| Geographic information system (GIS) detail |
Mapping limited to standard |
| Machine learning prediction confidence intervals |
Surfaces results, not confidence; v2.0 |
| Multi-tenant analytics (cross-tenant insights) |
Privacy concern; per-tenant only |
| SQL access for super-users |
Too risky for v1.0; defer to v2.0 |
| Weather-adjusted sales analysis (v1.0 only) |
Deferred to v1.2 per Gap #2 — weather-tied AI forecasting ships v1.2 as part of full Purchasing launch. See ROADMAP v1.2 and MARKET_RESEARCH_GAPS Gap #2. |
| Regression analysis with confidence intervals |
BI-territory; defer |
| Deep statistical reports (full descriptive stats) |
BI-territory; defer |
Gaps Identified from Market Research
Source: See docs/MARKET_RESEARCH_GAPS.md for the master gap registry.
Status: All gaps below are Open — pending decision. None have been accepted into scope yet.
| Gap # |
Gap |
What's missing in this module |
Research source |
Possible options |
| 2 |
Weather-tied reporting |
Out-of-Scope line "Weather-adjusted sales analysis" |
Research §6.3.5 |
Deferred (v1.2) — Bundled with v1.2 weather-tied AI expansion. See ROADMAP v1.2. |
| 7 |
Unified AI copilot UX |
No unified "this week you should do X, Y, Z" copilot surface |
Research §6.3.3 |
Deferred (v1.5) — Needs year of multi-tenant signal. See ROADMAP v1.5. |
| 8 |
Sustainability dashboard |
Sustainability dashboard added as Reporting 3.13 |
Research §10.E |
Accepted — Leverages existing Inventory 1.4 attribute data with no schema change. |
| 15 |
AI markdown optimization |
No markdown recommendation in Forecasting group |
Research §6.3.5 |
Deferred (v1.2) — Part of v1.2 AI markdown bundle. See ROADMAP v1.2. |
| 16 |
Pre-trained on nursery seasonality |
No nursery-specific fine-tuning or RAG corpus |
Research §6.3.3 |
Deferred (v1.5) — Needs year of operational data. See ROADMAP v1.5. |
| 24 |
Opinionated answer-dashboards |
BI-lite + standard reports in v1.0; curated dashboards are additive |
Research §10.C |
Deferred (v1.2) — Curated layer added in v1.2 alongside BI-lite. See ROADMAP v1.2. |
| 26 |
Markdown guidance reporting |
No decision support report yet |
Research §6.3.5 |
Deferred (v1.2) — Coupled with Inventory Gap #26 in v1.2 AI markdown bundle. |