Prerequisite Complete: Both Event Check-in and Champion Portal depend on Auth & Roles System. The sequencing below assumes Auth & Roles is done.
| Benefit | Description |
|---|---|
| Richer engagement insights | Champion profiles can display “Attended 5 events since 2022” based on real check-in data |
| Event history on profile | Champions see their own attendance history, reinforcing engagement |
| Future RSVP flows | Champion Portal Phase 2 plans champion-submitted events; integrated Event model provides the foundation |
| Champion-led check-in | Future feature: trusted champions could check in attendees at regional events via the Portal |
| Data consistency | Single Event model used by both internal staff and Champion Portal views — no sync required |
No.
Champion Portal v1 (auth, profile, directory, regional structure, dashboard) does not require event check-in data. The Portal can ship using:
EngagementActivity data (imported from CRM)Alumni records for profile enrichmentChampionSignupEvent integration becomes valuable in Portal Phase 2 (Events, Stories, Mentorship), but even then, champion-submitted events are a separate flow from staff-managed check-in events.
Auth & Roles Month 1-3 Month 3-6 Month 6+
──────────── ───────── ───────── ─────────
[Phases 1-6:
Roles, SSO,
Permissions]
│
├──────────────────────────────────────────────────────────────────────
│ │ │ │
Champion Portal │ [Phase 1: Auth, [Portal v1 Launch] [Phase 2: Events,
│ Profile, Directory] Stories]
│ │ │ │
│ │ │ │
Event Integration │ [Phase 0-1: Planning, [Phase 2-3: Import, [Phase 4-5: Badges,
│ Data Model] Check-in UI] Portal Alignment]
| Decision | Recommendation |
|---|---|
| Which ships first? | Champion Portal v1 (unless reunion season demands event features sooner) |
| Can they share dev effort? | Yes — Phase 1 data model work is backend-only, Portal is frontend-heavy |
| What blocks what? | Nothing blocks each other until Phase 5 |
| When do they converge? | Phase 5 (Portal alignment) bridges event data into Champion-facing views |
| Model | Used By Staff Portal | Used By Champion Portal |
|---|---|---|
Alumni |
✅ Search, profiles | ✅ Profile enrichment |
Contact |
✅ Event registrations | ⏳ Phase 5 (attendance history) |
Event |
✅ Event management | ⏳ Phase 5 (read-only history) |
Registrant |
✅ Check-in tracking | ⏳ Phase 5 (read-only) |
EngagementActivity |
✅ Scoring, reports | ✅ Dashboard metrics |
The Champion Portal roadmap (see docs/planning/champion-portal/) plans champion-submitted events in Phase 2:
Question: Should these use the same Event model?
Recommendation: Yes, with differentiation:
class Event < ApplicationRecord
enum event_source: {
staff_managed: 'staff_managed', # Traditional check-in events
champion_submitted: 'champion_submitted' # Future Portal events
}
belongs_to :submitted_by, class_name: 'Champion', optional: true
# ... existing fields ...
end
This allows:
| Risk | Impact | Mitigation |
|---|---|---|
| Event integration scope creep delays Portal | Medium | Keep integration phases small; defer badges/photos to Phase 4 |
| Two parallel tracks strain dev capacity | Medium | Prioritize Portal v1; event integration can slip until reunion season |
| Data model decisions conflict | Low | Finalize Contact/Event/Registrant schema in Phase 1 before Portal v2 event planning |
| Champion-led check-in requires new permissions | Low | Permission-based model (event_checkin) already planned; extend to CLC in Phase 5 |
Contact model confusion with existing contact_id field |
Low | Clear naming: Contact (model) vs contact_id (BQID field on Alumni) |
City Leadership Council members may need to check in attendees at regional events. This requires:
| Permission | Internal Users | CLC Members |
|---|---|---|
event_checkin |
Per-user flag on users table |
Via cp_champions table or regional scope |
event_manage |
Per-user flag on users table |
❌ Not available to CLC |
CLC check-in should be limited to events in their region:
# Future: CLC can only check in at events in their region
class RegistrantPolicy
def checkin?
return true if user.can_event_checkin? # Internal staff
return true if user.admin?
# CLC: check regional match
if user.is_a?(Champion) && user.clc?
event.region == user.region
else
false
end
end
end
users tableEvent#region field for geographic scoping| Question | Context | When to Decide |
|---|---|---|
Should champion-submitted events use the same Event model, or a separate cp_events table? |
Affects data architecture | Before Portal Phase 2 |
| Can champions see OTHER champions’ attendance history? | Privacy consideration | Portal Phase 5 planning |
| Will Advancement Services want attendance pushed to BruinQuest automatically (API)? | Currently CSV export only | After Phase 2 launches, based on feedback |
| Should CLC members be able to check in attendees at regional events? | Permissions/trust model | Portal Phase 2+ |
| How do champion event RSVPs flow into registrant data? | Integration complexity | Portal Phase 2 planning |
| What defines an event’s “region” for CLC scoping? | Geographic model | Before CLC check-in implementation |
event_checkin permission)