How the Volunteer Hub works
A practical look at the flows, rules engine, and data shape that power scheduling, communication and coordination for our 100+ volunteers.
4 user roles
Referee, Venue Manager, Coordinator, Admin — each with tailored views and permissions.
Match lifecycle
Scheduled → Confirmed → Completed, with auto status nudges when referees respond.
Role-based access
Routes and actions gated by role; admin actions write to an audit log.
Single source of truth
Matches, venues, availability and incidents live in one normalised store.
Notifications
Broadcast announcements by audience and priority; in-app + push.
Rules engine
Allocation respects availability, city proximity, and qualification level.
Core flow — Match allocation
Coordinator ──▶ Create match ──▶ Rules engine ──▶ Suggest refs
(availability, │
city, level, ▼
fairness) Assign + DM
│
┌───────────────────────────────┤
on decline│ │on accept
▼ ▼
Re-run rules Confirmed
│
▼
Venue Manager
checklist
│
▼
Completed
Rules engine
• Referee marked available on date + slot
• Same city as venue (or within commuting distance)
• Qualification level ≥ match division requirement
• No conflicting assignment within 90 minutes
• Fairness — fewer matches this month ranked higher
• Recent rating from coordinators (weighted 30%)
• Travel time penalty for venues over 5 miles
• Mentor pairings for new referees
Data model
User ──< Availability Venue ──< Match >── User (referee) │ │ └──< Message Match ──< Incident │ └──< AuditLog (admin actions) Announcement (audience: role | all, priority: info | important | urgent)
