Trinitas Volunteers

Groups (families, households, teams)

How to bundle related volunteers so the scheduler handles them sensibly.

What a group is

A group is an admin-only grouping of users — most commonly a family or household, but also useful for:

  • Married couples with different last names.
  • Adult-child pairs where the child is on the schedule (catechism helpers) but shares a parent’s availability.
  • Small teams that rotate as a unit (a youth-leader trio, say).

Groups replace the legacy “match by last name” hack from the Python CLI, which broke on households with different surnames and on unrelated people who happened to share a surname.

Volunteers don’t see the group surface. It’s purely an admin organizing tool.

What the scheduler does with groups

Each group has a Schedule as a unit flag (on by default). When on:

  • The scheduler treats “a member of this group is already serving Sunday X” as a hard exclusion for placing another group member on the same Sunday.
  • If you flip the flag off, it becomes a soft penalty instead — other group members can still be placed on the same Sunday if there’s no better option, but the score pushes them elsewhere.

The flag is per-group so the Smith family can have it on (usually they’re all there or all out) while a group that’s just “fellow catechism teachers” can have it off (they don’t share availability).

Groups and coverage requests

When a volunteer opens a coverage request, we broadcast it to everyone eligible for the role — except members of the requester’s own group. The assumption is that when a household is out, they’re usually out together; broadcasting to them would be noise.

Editing groups

On /admin/groups:

  • Create — name, kind (family / couple / household / team / other), notes, Schedule as a unit flag.
  • Add members — pick users; optionally annotate each with a free-text “role in group” (e.g. “head of household”, “teen”).
  • Archive — groups can’t be deleted once the scheduler has used them (history would get confused); instead set them inactive. Archived groups are ignored by new draft runs but their past influence on the schedule is preserved in the audit log.