Concept: count people, not just spots

Recommendation for the NN Serve Staffing dashboard. Roles happen in time blocks (12pm setup, 3pm setup, 4pm service, 6:30 hospitality, 9pm teardown), so one person can fill several spots in one night. Today the tool hides that. Here's what it looks like fixed.

1 · Every event shows two numbers

Spots stay the workload measure. The new people number is the minimum humans needed if setup crews roll into service roles, which is the event's biggest time block.

Proposed event card header

Arlington · Aug 11

19 spots open
55 spots across 5 time blocks · needs as few as 33 people if double-serving · 36 people committed

12pm · Setup

11 spots
Experience Team 3/5 Lobby Setup 2/3 Merch Setup 2/3

3pm · Setup

4 spots
WC Respond Time 2/4

4pm · Service

33 spots. Biggest block, sets the people number
Welcome Team 15/15 Parking 6/6 Merch Sales 3/5 Operations 4/6 Resource Center 1/1

6:30 · Hospitality

5 spots
Hospitality 3/5

Post · 9pm

5 spots
Students 2/2 Merch Teardown 2/3

2 · People stack roles across blocks

A chip can carry more than one role per night. The + adds another role, and stacked chips get a teal outline so leaders can see who's pulling doubles. Your examples, as they'd appear:

Proposed person chips
Craig Mele (CEN) Exper. 12pWelcome 4p + Rachel's crew ×3 Lobby 12pWC Setup 3pHosp. 6:30 + Merch guys ×3 Merch 12p+9pNehemiah 4p + Susan Bailey (CEN) Hosp. 6:30 +

3 · The add-role menu blocks time conflicts

Clicking + only offers roles in blocks the person doesn't already occupy. Same-block roles show up disabled with the reason, so nobody gets double-booked at 4pm.

Add a role for Craig Mele (already on Exper. 12p + Welcome 4p)

3pm setup
WC Respond Time 2/4 · needs 2
6:30 hospitality
Hospitality 3/5 · needs 2
post-service / 9pm
Merch Teardown 2/3 · needs 1
unavailable: time conflict
Parking 4pm, already on Welcome
Merch Sales 4pm, already on Welcome
Lobby Setup 12pm, already on Exper.

Every stacked role fills a real spot, so the gap chips and the heatmap self-correct as admins record actual plans. Undo removes one role at a time.

4 · The top of the dashboard, restated in people

Spots remain the fill target. The new people line stops the numbers from overstating the recruiting problem: 967 spots reads as 967 people, when the floor is 609.

Proposed KPI row
967Spots to fill
609–967People needed (full → no stacking)
224People committed
385More people to recruit (min)
102 of 211FT staff at 3+ nights

5 · Why this matters for the staff ask

Coverage planSlots producedvs 967 spotsvs 609-person floor
FT staff × 3 nights (current expectation)645short 322covers
FT × 3 + current volunteers~764short 203covers +155
FT × 4860short 107covers +251

If double-serving is normal (and your examples say it is), the existing 3-night expectation plus current volunteers already clears the realistic people bar. The recruiting push then becomes about the 4pm service block specifically, not 967 raw spots.

Build cost: dual numbers are a small display change. Multi-role stacking needs the database to allow one person in several roles per night (currently capped at one), the add-role menu above, and block-aware conflict checks. Roughly an hour of careful work, fully compatible with the existing sync and audit log. The public signup page stays as-is; stacking is recorded in this tool only.