Skip to Content
Living documentation — last reviewed 2026-05-28
FeaturesDashboardBehavior — dashboard overview

Behavior — dashboard overview

Gating

None. dashboard-overview-revamp was merged permanently ON on 2026-08-22 — the flag key, the overview-switch.tsx client gate, and the legacy layout were all deleted. Every surface below is unconditional for every org.

Insights rule catalog

All rules run in parallel; zero-count rules drop out; the feed sorts urgent → warning → info, then count desc. sample metas carry at most 3 entries for the secondary line (“who, not just how many”).

Rule idAudienceFires whenSeverityDrilldown
finance.cancellation_requestsowner/adminsubscriptions with cancelAtPeriodEndinfomembers
finance.outstanding_debtowner/admindebtAmountInCents > 0warningpayments?tab=debt
finance.failed_chargesowner/adminfailed charge/recurring txns, last 7 dayswarning; urgent ≥5payments?tab=transactions
finance.refunds_pendingowner/adminopen manual_refund taskswarningtasks
members.at_risk_billingowner/adminpast_due subscriptionsinfo <3 / warning / urgent ≥10members?status=past_due
members.expiring_membershipsowner/adminactive subs, currentPeriodEnd ≤ 7 days out, not cancelAtPeriodEndinfo; warning ≥5members
members.low_creditsowner/adminactive subs with 0–2 tracked credits and time leftinfomembers
operations.tasks_overduestaffopen tasks past due (org-TZ today)warning; urgent ≥10tasks
operations.sessions_missing_workoutstaffpublished sessions later today with no linked workoutwarningprograms
operations.waitlisted_bookingsstaffwaitlisted bookings on upcoming published sessionsinfoschedule
engagement.checkin_missedstaffmembers with check-ins unanswered ≥14 daysinfo / warning ≥5 / urgent ≥10members
engagement.checkins_to_reviewstaffanswered, unreviewed check-in instancesinfoforms (also expands inline)
engagement.forms_missingstaffmembers with pending unsigned compliance formsinfo; warning ≥5forms
engagement.birthdaysstaffactive members with a birthday in the next 7 days (org-TZ month-day window, year-wrap safe)infomembers

Role composition

Owner / AdminCoach
Action Centerfull catalogstaff subset only (finance/members rules are never evaluated for the coach’s request)
Pulsecollected Δ + tasks + leads + members/clientstasks tile always; coaching org adds due-today / completion / needs-attention
Todayschedule panel and/or rostersame (upcoming-today admits coaches)
Add Member buttonshownhidden (can(memberships, manage) is false for coach under legacy matrix)

Member role never reaches /dashboard/* (server redirect) and still 403s on /insights and agent endpoints.

Ask Spotter

Each feed row’s button calls openWith(prompt, { insightId, insightCount }): opens the agent sheet and sends one message. The context rides pageContext.selection for that send only (registered/unregistered around it), so later messages the user types don’t inherit stale insight ids. Hidden automatically when rendered outside AgentProvider.

Today panel + roster semantics

  • GET /sessions/upcoming-today?scope=day returns the whole org-local day (limit 20); without the param it keeps the original from-now window (limit 5) for callers that omit it. The panel dims past sessions (“ended”) so a 9pm visit shows the day that happened, not a false “no classes today”.
  • GET /assignments/coach-overview roster includes only active members with an active enrollment in an active coaching-mode program — schedule-only members no longer appear as “quiet”. kpis.activeMembersCount is the scoped count (this is what the “active clients” tile shows).

Known limits

  • No dismiss/snooze and no per-org thresholds (carried over from the insights gaps list; solve once in the Action Center when prioritized).
  • sessions_missing_workout counts only sessions still ahead of “now” — a bare session that already ran is not actionable.