Members + their limits matrix on one page
Cluster 2.2 surfaced the design question: a member has many coexisting limits (hours today/week/month, bookings today/week/month, bay caps, peak caps, add-on balances). This report is the cross-customer view — every member, every limit, sortable + filterable. The per-customer drill-down lives on operator-customer-detail#limits.
- Headline metrics — active members count, MRR, churn rate (this period vs prior), avg LTV, avg utilization across all members.
- Plan distribution — Standard / Premium / Unlimited counts + MRR breakdown. Drives "should we add a tier?" conversations.
- Member limits matrix — one row per active member. Columns: name, plan, hours-this-month %, bookings-this-week %, peak-hour %, add-on balance. Sortable by any column. Filter by "approaching cap" (e.g. >80% of any limit) for the operator's renewal/upsell list.
- Underutilizers — members at <30% utilization for 2+ months. Churn-risk segment; surfaces for the operator's retention outreach (links to New message).
- Overutilizers — members consistently hitting caps. Upsell candidates; surfaces with a "+10-hr add-on" CTA (matches the Dashboard Caddie suggestion #3).
- Cohort retention — when did members join, and what % are still active 3/6/12 months later? The marketing-friendly metric.
- LTV by plan — average LTV per plan tier. Informs the plan-pricing editor (cluster 2.2 stub).
- Drill into one member — every row's name links to operator-customer-detail#limits for the full per-member matrix.
Backend wiring pending. GET /operator/reports/members in the live app. Cluster 2.2 design carry-over: this is the cross-customer matrix; per-customer matrix is on the customer-detail stub.