Story: Parent Cluster Detection
Story: Parent Cluster Detection
Key:
clusters · Label: story:clusters · Role: Ops (Lucas / Ava)Story
As ops, I need to automatically spot parents who have multiple unsigned kids, so I can have the "sibling discount" conversation with them as one call instead of calling the same parent twice.
Why
A parent with two unsigned kids is a very different conversation than a parent with one. The business decision (apply a sibling discount? bundle the contracts? waive a fee?) depends on knowing they're a cluster. Calling them twice and having two separate half-discussions is the failure mode. The dashboard should surface these clusters automatically so ops doesn't have to hand-scan for duplicate emails.
Acceptance criteria
- Below the filtered Offered dataframe, a warning banner appears only when there are parent clusters in the current filter.
- Banner lists each parent email with the count of unsigned kids: e.g., "jane@example.com (3), bob@example.com (2)".
- Clusters are computed from the current filtered view, not the full offered pool, so filtering to a specific team shows team-scoped clusters.
- Parents with a single unsigned kid never show up in the cluster list.
Current implementation
Already built in
app.py lines 77–83. Matches acceptance criteria. Captured for traceability.Future enhancements (not yet tickets)
- Make the email clickable — one click filters the dataframe to just that parent's kids.
- Extend cluster detection to the Jerseys view (one parent buying 3 jerseys might qualify for a bulk discount).
- Surface which teams the cluster spans (e.g., "both kids on 17U Kings" vs "one on Kings, one on Queens").