⚠️ PLANNING DOCUMENT - This describes features that are NOT YET IMPLEMENTED.
Champion profiles allow alumni to share information about themselves with the Champion community while maintaining control over their privacy.
Design Principle: Champions reflect what alumni already do. Profiles must highlight belonging and agency.
New champions are guided through a multi-step wizard to complete their profile. The wizard is designed to be:
| Step | Name | Required | Purpose |
|---|---|---|---|
| 1 | Basic Info | Yes | First name, last name, preferred name, college last name |
| 2 | Location & Contact | No* | Street address, phone (*ZIP already collected at signup) |
| 3 | Professional | No | Employer, job title, industry |
| 4 | Affinities | No | “What groups were you part of at Belmont?” |
| 5 | Photo | No | Profile photo upload |
Source: Pulled from Alumni record after BUID verification
| Field | Source | Editable | Notes |
|---|---|---|---|
| Degree | Alumni table | No | Could have multiple (undergrad + grad) |
| Major | Degrees table | No | Multiple possible |
| College | Majors → Colleges | No | Multiple possible |
| Graduation Year | Degrees table | No | Privacy controls apply |
Privacy Controls for Graduation Year:
| Field | Required | Notes |
|---|---|---|
| Preferred name | Yes | Display name throughout portal |
| Legal name | No | For matching/verification |
| Maiden name | No | For search - labeled “last name while at Belmont if different” |
| Profile photo | No | Upload/replace/remove |
| Field | Required | Privacy Options |
|---|---|---|
| Phone | No | All Champions / Region only / Hidden |
| Yes | All Champions / Region only / Hidden | |
| Street Address | No | All Champions / Region only / Hidden |
| City, State, ZIP | Yes | All Champions / Region only / Hidden |
| District | Auto | Derived from ZIP |
| Region | Auto | Derived from District, can be overridden |
District/Region Assignment:
| Field | Required | Notes |
|---|---|---|
| Employer | No | Current employer name |
| Title | No | Current job title |
| Industry | No | Preset list - aligns with industry-based engagement |
Industry List Example:
Champions can self-select affinities representing groups they were part of at Belmont.
Data Model:
cp_affinities table (separate from staff-managed alumni_affinities)affinities master table for consistencycrm_data_changes tableSelection UI: | Component | Purpose | |———–|———| | Typeahead search | Quick find for users who know what they’re looking for | | Category accordions | Browse by category (collapsed by default to avoid overwhelm) | | Selected tags | Display current selections as removable chips/badges |
Categories (from existing affinities table):
Key Decisions:
Future Enhancement (Backlog):
alumni_affinities and allow bulk add to profile| Field | Notes |
|---|---|
| Primary Role | Community Builder, Connection Advisor, Digital Ambassador, Generous Giver |
| Secondary Roles | Optional, multiple allowed |
| Role Quiz Link | Can retake quiz to update role selection |
Decision Made: Champions can select multiple roles and change them seasonally.
Who can contact you:
Preferred contact channels:
| Level | Who Can See |
|---|---|
| All Champions | Any authenticated Champion |
| Region Only | Champions in same primary region |
| Hidden | Only the Champion themselves (and admins) |
Each contact field can have its own privacy setting:
Track and display profile completion to encourage full profiles:
| Section | Weight |
|---|---|
| Photo uploaded | 15% |
| Contact info complete | 20% |
| Employment info | 15% |
| Affinity selected | 15% |
| Champion role selected | 20% |
| Privacy settings configured | 15% |
Temporal data (changes over time) → Champion table:
Permanent data → Alumni table:
Bridge: Champion record links to Alumni record via buid foreign key.
Profile edits are tracked via the unified crm_data_changes table for export to Advancement Services:
# When Champion updates their profile:
CrmDataChange.create!(
buid: champion.linked_alumni&.buid,
contact_id: champion.linked_alumni&.contact_id,
cp_champion_id: champion.id,
source_table: 'cp_champions',
field_name: 'phone',
old_value: '(615) 555-1234',
new_value: '(615) 555-9999',
change_source: 'champion_portal',
changed_by_type: 'Cp::Champion',
changed_by_id: champion.id
)
Full Architecture: See UNIFIED_DATA_SYNC.md