Sunday, May 31, 2026

Backup Coaches & Accurate Event Costing

Volleyball Elite Academy development update
Volleyball Elite Academy
Backup Coaches & Accurate Event Costing

Backup Coaches & Accurate Event Costing

Volleyball Elite Academy — Development Update • May 31, 2026

Backup Coaches & Accurate Event Costing

What & Why

When admins staff an event from coach applicants, they can currently pick one coach per position. This adds a backup (alternate) coach per position so there's coverage if the primary gets sick or drops out. When a primary + backup are chosen, both are emailed (each gets the other's contact info so they can coordinate coverage), and every academy coach can see who is staffing each event — chosen coaches and backups.

It also tightens event cost accounting so the "athletes needed to break even" figure is accurate: only locked-in active coaches (plus the pro-rated gym-rental cost already built) count toward labor cost. Applicants who only expressed interest, and backups on standby, must NOT inflate the cost or the break-even athlete count.

Done looks like

  • On the coach-applications review screen, an admin can mark one applicant as the primary (assigned) and one applicant as the backup for the same position (role). Exactly one backup per position.
  • Selecting a primary while a backup exists emails both coaches: the primary learns who their backup is (with the backup's contact info) and the backup learns they're on standby for the event (with the primary's contact info).
  • If the primary drops out, the admin can promote the backup to primary in one click (the backup then goes through the normal accept flow).
  • Every academy coach can see, per upcoming event, the chosen coaches and the backup coach for each position.
  • The event cost evaluation and the "athletes needed to break even" number count only locked-in active coaches (ASSIGNED/ACCEPTED/COMPLETED) for labor — backups and mere applicants are excluded — combined with the existing pro-rated gym cost.

Out of scope

  • More than one backup per position (single backup only).
  • Automatic promotion of a backup the instant a primary drops (promotion is an explicit admin action).
  • Changing the pro-rated gym-rental cost math (already shipped) or coach pay/payroll.
  • Reworking the acceptance-requirements checklist mechanism.

Steps

1. Add a BACKUP assignment state — Introduce a status for an event staff assignment so an applicant row can be designated the standby coach for a position. Treat BACKUP as not-locked-in everywhere a position is considered "covered" (it must not satisfy a staffing slot the way ASSIGNED/ACCEPTED do) and not count toward cost. Run the DB push and verify the schema guard count. 2. Approval/backup actions (server) — In the coach-interest approval flow, add the ability to set an applicant as the backup for its position and to promote the existing backup to primary. Enforce a single backup per (event, role): setting a new backup replaces any prior one. Promotion flips the backup to the normal assigned path. Keep all existing approve/reject behavior intact. 3. Coverage-pairing emails — When a primary is assigned for a position that has a backup (and when a backup is set for a position that already has a primary), send a transactional email to each of the two coaches sharing the other's name and contact info, plus the event details and who is primary vs. backup. Add catalog entries for the new email(s) and dedupe re-sends via the existing email log. Follow the existing transactional-email pattern. 4. Status-aware event cost + break-even — Make the event cost evaluation, the event cost alerts, and the enrollment/break-even threshold count labor cost only from locked-in active coaches (ASSIGNED/ACCEPTED/COMPLETED), excluding OPEN_FOR_INTEREST, INTEREST_EXPRESSED, BACKUP, DECLINED, and CANCELLED. This both fixes the current over-count and excludes backups so "athletes needed to break even" is accurate. 5. Admin review UI — On the coach-applications review screen, add a "Set as backup" action alongside Approve/Reject, clearly show which applicant is the primary and which is the backup for each position, and add a "Promote backup" control for when a primary drops out. 6. Coach-visible staffing roster — Give every academy coach a read-only view, per upcoming event, of the chosen coach(es) and the backup for each position. Surface it on the coach opportunities/portal area using a new read endpoint. 7. Verify — Walk the flow end to end (assign primary, set backup, confirm both emails, promote backup, confirm break-even count excludes backups/applicants), restart, check logs/schema guards, and run an architect review.

Architectural constraints

  • The applicant model is row-per-coach: each applicant is its own row (INTEREST_EXPRESSED); approval flips one to ASSIGNED. A backup is simply an applicant row set to BACKUP — do not introduce a parallel table.
  • Coverage/"position filled" logic counts only ASSIGNED/ACCEPTED/COMPLETED; BACKUP never auto-closes a posting or satisfies a staffing requirement (so and the "N of M filled" UI stay correct).
  • Cost/break-even must derive labor from the same locked-in active set as coverage — keep the two definitions consistent.
  • Coverage-pairing emails are transactional (admin-triggered), not coalesced digests; dedupe via and add an entry. Do not build a new in-memory coalescer.

Relevant files

- - - - - - - - - - - -

Volleyball Elite Academy

Reply to this email — we read every reply.

You received this because you have an account with Volleyball Elite Academy.

elitevolleyball.training

No comments:

Post a Comment