a835291eab
- chain.js getCoachingScan(rootId): classifies everyone below a root into atRisk (POL forming they can't catch - corrected bought-level rule), rollForward (qualified-at-Scintilla with entry rewards covering Ascensus), and oneAway (1/2 directs) - Admin: GET /api/admin/coaching?root= (name-decorated) + "Coaching Radar" panel with tiered who/what-to-say/POL-at-stake rows, auto-loaded - Member dashboards: memberPublic now returns .coach scoped to the member's own leg; new "Coach your team" card shows the same triage so every member coaches their own team - computed live, no snapshots or cron needed - Chatbot canned answer + AI system prompt updated to describe the panel Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>