Purpose: Track ideas, nice-to-haves, and intentionally deferred features for the Champion Portal. Not a task list — just a place to capture things so they aren’t lost.
When to Reference: During Sub-Phase Planning Checkpoint (see
AGENTS.md§5)Last Restructured: January 2026 (added Feature Backlog for post-MVP items)
These are significant features planned for after MVP soft launch. Prioritization will be based on Champion feedback and engagement data.
| Feature | Description | Priority | Effort |
|---|---|---|---|
| Job Board | Champions can post job openings; other Champions can browse/apply | High | Large |
| Alumni Business Directory | Champions can list their businesses for other alumni to discover | High | Medium |
| Mentorship Center | Structured mentorship matching between Champions | High | Large |
| Newsletter Tool | Hard-coded sections + community content sections for staff-curated newsletters | Medium | Medium |
| Real-Time Messaging | WebSocket-based instant messaging (currently async) | Medium | Large |
| Map View | Visual map of Champions across the country | Medium | Medium |
| Advanced Search | More filters, saved searches, search history | Medium | Medium |
| Reporting & Insights | CLs and staff see engagement metrics for their communities | High | Large |
| Native Mobile App | iOS/Android apps with push notifications | Low | Very Large |
Added: January 2026 (Phase restructure)
Description: A dedicated space for Champions to post job openings at their companies and for job-seeking Champions to browse opportunities within the Bruin network.
Key Features:
Data Model:
# cp_job_postings table
t.references :champion # Who posted
t.references :community # Which industry/affinity community (optional)
t.string :title, null: false
t.string :company_name, null: false
t.string :location # City or "Remote"
t.boolean :remote_friendly, default: false
t.text :description
t.string :experience_level # Entry, Mid, Senior, Executive
t.string :application_url # External link
t.date :expires_at
t.integer :status # draft, active, closed
t.timestamps
Priority: High — Champions frequently ask about Bruin job network
Added: January 2026 (Phase restructure)
Description: Champions with businesses can list them for discovery by other alumni. Supports the “hire a Bruin” and “support Bruin businesses” use cases.
Key Features:
Data Model:
# cp_businesses table
t.references :champion # Business owner
t.string :name, null: false
t.text :description
t.string :industry
t.string :city
t.string :state
t.string :website
t.string :phone
t.boolean :verified, default: false # Staff can verify
t.timestamps
Priority: High — frequently requested; supports alumni economic network
Added: January 2026 (Phase restructure)
Description: Formalized mentorship matching where Champions can offer or request mentorship in specific areas.
Key Features:
Data Model:
# cp_mentor_profiles table
t.references :champion
t.text :areas_of_expertise # Array or JSONB
t.string :availability # monthly, weekly, as-needed
t.string :preferred_format # in-person, video, phone, chat
t.boolean :accepting_mentees, default: true
t.integer :max_mentees, default: 3
t.timestamps
# cp_mentorship_matches table
t.references :mentor_profile
t.references :mentee, foreign_key: { to_table: :cp_champions }
t.string :status # pending, active, completed, cancelled
t.date :started_at
t.date :ended_at
t.timestamps
Priority: High — strong alignment with Champion mission of giving back
Added: January 2026 (Phase restructure)
User Spec: “hard-coded + community content sections”
Description: Staff-curated newsletters with both fixed content sections and dynamic community-specific sections.
Key Features:
Priority: Medium — valuable for re-engagement but email platform may handle this
Added: January 2026 (Phase restructure)
Description: Upgrade current async messaging to WebSocket-based real-time delivery.
Key Features:
Implementation: ActionCable WebSocket channels
Priority: Medium — current async model works fine for MVP
Added: January 2026 (Phase restructure)
Description: Visual map showing Champion locations across the country.
Key Features:
Implementation: Leaflet.js or Google Maps API
Priority: Medium — visually impressive but directory search achieves same goal
Added: January 2026 (Phase restructure)
Description: Enhanced search capabilities beyond current directory filters.
Key Features:
Priority: Medium — current filters handle most use cases
Added: January 2026 (Phase restructure)
Description: Analytics dashboards for Community Leaders and Staff.
Key Features:
User Story:
> As a portal admin, I want to see the engagement score for members in a community so that I can know who might be a good person to contact about becoming a community leader.
Status: User story implemented! Engagement scores now display on community member lists in the Lookup Portal (/champions/communities/:id/members). Portal admins can see each member’s engagement score to identify potential community leaders.
Priority: High — critical for program management and proving ROI
Added: January 2026 (Phase 2.3/2.4)
Context: As more staff get access to the portal, the current CRM changes workflow (buried in /settings/affinaquest/crm_changes) needs to be more accessible and streamlined.
Current State:
Potential Improvements:
/champions/crm_changes with streamlined UIPriority: Medium — works for now, revisit as portal_admin usage grows
admin.alumnilookup.com)Added: December 4, 2025 (Phase 1 planning)
Idea: Create a separate admin portal at admin.alumnilookup.com that consolidates settings from both Lookup Portal and Champion Portal.
Benefits:
Considerations:
Status: Captured for future consideration. Current plan continues with verification queue in Lookup Portal, but this is a strong candidate for Phase 2 or later.
Added: December 4, 2025 (Phase 1 planning)
Idea: Users with permissions to multiple portals should have an easy way to switch between them.
Proposed Solution: Header dropdown showing available portals based on user permissions:
Status: NOT IMPLEMENTED — Should add before Phase 2
Priority: Medium — Quality of life for staff who work in both portals
Added: December 4, 2025 (Phase 1.1 implementation)
Idea: Admin interface to edit district display names without direct database access.
Context: Districts are imported from CSV with long MSA names (e.g., “Nashville-Davidson–Murfreesboro–Franklin”) but we want short display names (e.g., “Nashville”). The csv_name column preserves the original for import matching, while name is the editable display name.
Scope:
Target: Phase 1.5 (Admin tools) or Phase 2
Priority: Medium — seed script auto-generates short names, but staff will want to customize ~50 key metros
Status: Should implement in Phase 1.5 when building the Champion Portal header. Simple dropdown with links to Lookup/Champions based on user permissions.
Added: December 4, 2025
Idea: Type-ahead autocomplete for ZIP code entry that shows city/state as user types.
Priority: Low (ZIP entry is one-time during signup)
Added: December 4, 2025
Idea: Client-side image cropping before upload to ensure consistent profile photos.
Libraries to consider: Cropper.js, react-image-crop
Priority: Medium (better UX, but not blocking)
Added: December 4, 2025
Idea: Add service worker and manifest for Progressive Web App capabilities.
Benefits:
Priority: Medium (good for mobile-first, but not Phase 1)
Added: December 17, 2025 (UX polish for Lookup Portal)
Context: Batch Search tool allows staff to search for multiple alumni by name/email. Current implementation works but has several UX gaps identified by early users.
Enhancements:
Issue: Result table columns don’t line up well, making it hard to scan data.
Solution: Use fixed-width columns or sticky headers with proper alignment. Consider:
Issue: When a search returns multiple matches, there’s no way to select which result should be exported.
Solution:
Example flow:
Search: "John Smith"
Results:
◯ John Smith (B00012345) — BS '15
◯ John Smith (B00067890) — MBA '18
◯ None
[Export with selections]
Issue: Batch search export format doesn’t match the “standard alumni export” used elsewhere (alumni search, engagement stats, etc.).
Solution:
Issue: No way to filter out non-matches from results. Staff wants to see only successful searches.
Solution:
Issue: Currently exports everything as-is. Staff sometimes wants just the matches or just the non-matches.
Solution:
Issue: Results are hard to copy into spreadsheets. Staff wants quick copy-to-clipboard.
Solution: Offer multiple copy methods:
Example implementation:
[Copy to Clipboard as TSV] [Export to CSV] [Export to XLSX]
Priority: Medium-High (staff-requested feature, significant UX improvement)
Target Phase: 1.5 or 2.0 (post-MVP refinement)
Effort:
Added: December 11, 2025 (Phase 1.4)
Implemented: January 2026 (Phase 1.9.1)
Issue: Champions have no clear way to change their email address.
Solution Implemented: Settings page with email change flow:
crm_data_changes on confirmationAdded: December 11, 2025 (Phase 1.4)
Implemented: December 12, 2025 (Phase 1C)
Issue: The current flow asks for “Legal First Name” and “Preferred First Name” which feels bureaucratic. The legal name isn’t really needed except for identity matching.
Solution Implemented: Option 2 — single “First Name” field for most users, collapsible section for optional legal name and maiden name
Added: December 22, 2025 (Phase 1.6.2)
Idea: When a verified Champion is the only person in their district, show an “Invite another Belmont Alum” link/button on the dashboard that launches an invite flow.
Context: A placeholder link exists on the dashboard today but does not trigger any flow.
Priority: Medium — reinforces growth and community-building
Target: Phase 1.6.3 or Phase 2
Changes:
pref_first_name) and Last Name (last_name)first_name) - if different from preferredcollege_last_name) - maiden nameset_first_name_from_pref automatically sets first_name from pref_first_name if not providedvalidates :first_name to validates :pref_first_nametoggle-legal-name handles expand/collapse with icon rotationResult: Cleaner, less bureaucratic signup flow while still capturing legal name when needed
Added: December 11, 2025 (Phase 1.4)
Implemented: January 2026 (Phase 1.9.3)
Issue: The profile show/edit pages feel “clunky and full of words” with similar styling across sections.
Solution Implemented:
[icon] degree_code Major (YYYY)Added: January 2026 (Phase 5.3 fixes)
Purpose: Track features, pages, and settings that need better user education — through tooltips, callouts, welcome emails, or in-app guidance. Champions should discover features naturally without reading documentation.
| Feature | Location | Tooltip Trigger | Status |
|---|---|---|---|
| Privacy Settings | Settings → Privacy | First visit to settings | ⏳ Planned |
| Notification Settings | Settings → Notifications | First visit to settings | ⏳ Planned |
| Contact List | Settings → Contacts | First visit to contacts | ⏳ Planned |
| Messaging Privacy | Settings → Privacy | When privacy level changed | ⏳ Planned |
| Directory Search | Directory | First search | ✅ Implemented (Phase 1.9) |
| Profile Completion | Dashboard | First login | ✅ Implemented (Phase 1.9) |
| Messaging Intro | Messages | First visit | ✅ Implemented (Phase 1.9) |
Static prompts that appear on pages to explain functionality:
| Location | Callout Content | Status |
|---|---|---|
| Messages Index | “You’re in control. Privacy Settings let you choose who can message you…” | ✅ Implemented (Phase 5.3b) |
| Directory Index | “Your privacy matters. Privacy Settings let you control who can see your location…” | ✅ Implemented (Phase 5.3b) |
| Contacts Page | “Contacts you add can reach you based on your privacy settings…” | ⏳ Planned |
| Profile Edit | “Your profile helps other Champions find and connect with you…” | ⏳ Planned |
Welcome emails that could explain site functionality:
| Email Trigger | Content to Include | Status |
|---|---|---|
| Account Verified | Welcome! Here’s how to use the Champion Portal… | ⏳ Planned |
| First Login | Quick start guide: Find Champions, Update Profile, Set Privacy | ⏳ Planned |
| First Contact Added | “You added [Name] as a contact. Your contacts can now message you based on your privacy settings…” | ⏳ Planned |
| First Message Sent | “Nice! You started a conversation. Here’s how messaging works…” | ⏳ Planned |
More complex onboarding features to consider:
| Idea | Description | Priority |
|---|---|---|
| Onboarding Checklist | Dashboard widget showing: ✓ Profile complete, ✓ Photo uploaded, ○ Privacy set, ○ First message sent | Medium |
| Feature Spotlight | Modal popup highlighting new features after major releases | Low |
| Guided Tour | Step-by-step tour of the portal on first login (Shepherd.js or similar) | Low |
| Contextual Help | ”?” icons next to complex settings that expand to show explanation | Medium |
| Resource | Description | Status |
|---|---|---|
| Help & FAQ | Searchable FAQ page | ✅ Implemented (Phase 1.9) |
| Privacy Guide | Detailed explanation of all privacy settings | ⏳ Planned |
| Getting Started Guide | Walkthrough for new Champions | ⏳ Planned |
| Video Tutorials | Short videos showing key features | Future |
Added: December 4, 2025
Idea: Tool for staff to merge duplicate Champion accounts if someone signs up multiple times before verification.
Priority: Low (can handle manually initially)
Added: December 4, 2025
Idea: Build Champion Portal features with RESTful API endpoints to support future native mobile app.
Status: Keep in mind during Phase 1 implementation. Controller actions should be API-friendly.
Added: December 4, 2025
Idea: Champions in small districts (non-highlighted areas) may not have a full “district view” if there are few champions nearby.
Possible solutions:
Status: ✅ Partially addressed in Phase 1.9.4 Dashboard Visual Refresh — dashboard now shows region fallback when champion is first in their district, with “You’re the first Champion here!” celebration and invite CTA.
Remaining: Directory filtering could still benefit from region expansion for small districts.
Items intentionally deferred from specific phases:
| Item | Original Phase | Reason Deferred | Target Phase |
|---|---|---|---|
| Push notifications | Phase 1 | Not needed for MVP | Phase 4+ |
| Map view | Phase 1 | Complexity | Phase 5 |
| Visit mode (secondary cities) | Phase 1 | Complexity | Phase 5 |
| Apple Sign In | Phase 1.3 | Focus on Google first | Future |
| Facebook OAuth | Phase 1.3, 1.9 | Focus on Google first; requires FB Developer App | Future |
| SSO account linking | Phase 1.3 | Complexity (edge case handling) | Phase 2+ |
| ✅ Phase 1.9.1 | |||
| Sync imported affinities to profile | Phase 1.4 | Requires BUID verification first | Phase 2+ |
| Affinity export mechanism (cp_affinities → crm_data_changes) | Phase 1.4 | Awaiting Affinaquest export format | Phase 2+ |
| CLC Regional Admin (News) | Phase 1.10.4 | CLC model evolving toward Community Leadership | Phase 1.12+ |
| News Post Likes | Phase 1.10.5 | Nice-to-have engagement feature | Phase 2+ |
| News Post Analytics Dashboard | Phase 1.10.5 | Nice-to-have analytics | Phase 2+ |
| Featured Champions in News | Phase 1.10.6 | Requires champion tagging UI | Phase 2+ |
| CLC → Community Leadership | Phase 1.12 | CLC as Community Leadership Council vs District-based | Phase 2+ |
| Community Visibility Settings | Phase 1.12 | Public/Invite-Only/Private communities | Phase 2+ |
| Track affinity adds/removes for Advancement Services | Phase 1.4 | Awaiting Affinaquest export format | Phase 2+ |
Drop cp_profile_changes table |
Phase 1.1 | Superseded by crm_data_changes |
Post-Affinaquest |
| SMS/Phone Platform (Twilio) | Phase 1.9 | Cost/complexity for beta; high future value | Phase 3+ |
| Notification Digest Emails (Daily/Weekly) | Phase 1.9/1.16 | Infrastructure built; needs scheduling + testing | Pre-MVP |
| @Mentions in Discussion Boards | Phase 3 | Complexity (name resolution, notifications) | Phase 4+ |
| Discussion Board Search | Phase 3 | Full-text search across posts/comments | Phase 4+ |
| Discussion Board Bookmarks | Phase 3 | Save posts for later reading | Phase 4+ |
| Mute Discussion Threads | Phase 3 | Stop notifications for specific threads | Phase 4+ |
| Additional Discussion Sort Options | Phase 3 | Top, Controversial, etc. | Phase 4+ |
| Multiple Images per Discussion Post | Phase 3 | Currently single image (MVP) | Phase 4+ |
| User Temp Bans | Phase 3 | 24hr/7day/permanent bans by CL | If needed |
| Advanced Discussion Reporting Analytics | Phase 3 | Content trends, user patterns, exportable reports (basic metrics in MVP Sub-Phase 3.8) | Phase 4+ |
| Profile Wizard Header Alignment | Phase 4 | Low priority — vertical rhythm on step 3 headers | Future |
| Message Reactions Sizing | Phase 4 | Low priority — already functional, minor polish | Future |
| Almost Alumni BUID Verification | Phase 5.2 | Alumni data has BUID but no degree records for current students | Discussion |
| Degree Import Hook (Almost Alumni → Alumni Upgrade) | Phase 5.2 | Automatic upgrade when degree record added to alumni table | Pre-MVP |
| Almost Alumni Upgrade Email Notification | Phase 5.2 | Notify champion when upgraded from Student to Alumni status | Pre-MVP |
| Admin “Recheck Education” Action | Phase 5.2 | Staff action to manually trigger degree-based status upgrade | Pre-MVP |
| Contact Notes | Phase 5.3 | Nice-to-have; not needed for MVP contacts | Future |
| Community Suggestions Based on Contacts | Phase 5.3 | Suggest communities when 5+ contacts are members; needs more usage data | Future |
| Popularity Boost for Contacts’ Content | Phase 5.3 | 1.3x boost in discussion sorting for contacts’ posts; deferred with other popularity features | Future |
| Dashboard “My Contacts” Widget | Phase 5.3 | Quick access widget on dashboard; other widgets prioritized | Future |
| Profile “Similar Champions” Section | Phase 5.4 | Show recommendations on Champion profile pages | Future |
| Recommendation “Not Interested” Feedback | Phase 5.4 | Allow users to dismiss irrelevant recommendations | Future |
Added: December 23, 2025 (Phase 1.9 planning)
Deferred from: Phase 1.9 (was considered as alternative to Facebook OAuth)
Why Deferred: Adds ongoing cost and complexity that isn’t critical for beta launch. Google SSO covers the primary authentication need.
Future Value (High):
Implementation Notes:
heroku addons:create twilio:basic (pay-as-you-go)Target Phase: Phase 3 or 4, after Events/Stories prove Champion engagement
Added: January 2026 (Phase 1.9/1.16 cleanup)
Status: Infrastructure COMPLETE — Scheduling PENDING
What’s Built:
Cp::NotificationMailer#daily_digest and #weekly_digest methodsCp::NotificationDigestJob — Background job to send digestsdaily_digest.html.erb, weekly_digest.html.erb (+ text versions)Cp::NotificationPreference model with email_frequency columnWhat’s Missing:
Why Deferred: During Phase 1.9, immediate notifications were prioritized. The daily/weekly digest options are visible in Settings but don’t actually send yet because the scheduler jobs aren’t configured.
To Complete (Pre-MVP):
# Daily digest - 7am Central (12pm/1pm UTC depending on DST)
bin/rails runner "Cp::NotificationDigestJob.perform_now(digest_type: 'daily')"
Schedule: Daily at 12:00 PM UTC
# Weekly digest - Monday 7am Central
bin/rails runner "Cp::NotificationDigestJob.perform_now(digest_type: 'weekly')"
Schedule: Weekly on Monday at 12:00 PM UTC
Update docs/operations/SCHEDULERS.md with the new entries
emailed_at timestamp (already implemented)Content Included in Digests:
Edge Cases to Test:
Target: Pre-MVP (before soft launch to Champions)
Added: January 2026 (Phase 5.2 implementation)
Context: When implementing the Almost Alumni (current student) membership type, we discovered that current students MAY have a BUID in the Alumni data system, but they won’t have degree records until they graduate.
The Problem:
Current Behavior (Phase 5.2):
help_find_you stepWhy This Is Acceptable:
Future Enhancement Options:
For Discussion:
Estimated Effort: 1-2 hours (mostly testing and scheduler config)
cp_profile_changes TableAdded: December 9, 2025 (Affinaquest unified sync planning)
Context: The cp_profile_changes table was created in Phase 1.1 as a changelog for CRM exports. It has been superseded by the unified crm_data_changes table (see UNIFIED_DATA_SYNC.md).
Current Status:
Cp::ProfileChange model exists but unusedMigration Plan:
crm_data_changes table (Affinaquest Phase 1)crm_data_changes (Phase 1.4 or 2)cp_profile_changes table after Champion Portal is using unified tableCp::ProfileChange modelMigration to Create:
class DropCpProfileChanges < ActiveRecord::Migration[7.1]
def up
drop_table :cp_profile_changes
end
def down
# Recreate table if needed to rollback
create_table :cp_profile_changes do |t|
t.references :cp_champion, foreign_key: { to_table: :cp_champions }, null: false
t.string :field_name, null: false
t.string :table_name, null: false
t.text :old_value
t.text :new_value
t.string :changed_by_type
t.bigint :changed_by_id
t.timestamps
end
add_index :cp_profile_changes, [:cp_champion_id, :created_at]
add_index :cp_profile_changes, :created_at
add_index :cp_profile_changes, :field_name
end
end
Target: After Affinaquest import is live and Champion Portal profile editing uses crm_data_changes
Added: January 14, 2026 (Phase 1.11 planning)
Idea: Built-in RSVP system for Champion Portal events, rather than relying solely on external RSVP links.
Features:
Why Deferred: Phase 1.11 focuses on admin-created events with external RSVP links to simplify MVP. Built-in RSVP adds complexity around capacity management, notifications, and cancellations.
Priority: Medium — valuable for engagement tracking but external links work for MVP
Target Phase: Phase 2+ (after community foundation proves value)
Added: January 14, 2026 (Phase 1.14 planning)
Idea: Email champions when a new community emerges that they belong to, rather than only showing in-app notifications.
Trigger: When CommunityCreationJob creates a new community and assigns members.
Email Content:
Why Deferred: Phase 1.14 focuses on in-app Dashboard notifications. Email adds complexity around delivery, opt-outs, and template design.
Priority: Medium — good for re-engagement of inactive champions
Target Phase: Future (after in-app notifications prove valuable)
Added: January 14, 2026 (Phase 1.14 planning)
Promoted to Phase 1.16: January 12, 2026
Status: Comprehensive spec created at phase-1/1.16-notifications.md
Phase 1.16 Scope:
Target Phase: Phase 1.16 (next up after Phase 1.15)
Added: January 12, 2026 (Phase 1.15 implementation)
Promoted to Phase 1.16: January 12, 2026
Status: Being implemented as part of Phase 1.16. See phase-1/1.16-notifications.md for full spec.
Phase 1.16 Coverage:
Original Idea: Update email notification system to be community-centric rather than district-centric, reflecting the expanded community model.
Implementation Considerations:
Current State:
Cp::CommunityMailer exists with join_request emails onlyPriority: High — critical for community engagement and retention
Target Phase: Phase 2 (alongside Events submission) or Phase 3 (with Discussion Boards)
Dependencies:
Added: December 8, 2025 (Phase 1.4 planning)
Idea: For verified champions (those with BUID linked), show their CRM-imported affinities from alumni_affinities and allow bulk add to their cp_affinities profile.
Flow:
alumni_affinities for their BUIDcp_affinitiesBenefits:
Priority: Medium — nice engagement boost, but self-selection works fine for MVP
Target: Phase 2 (post-MVP)
Before starting any sub-phase, the Sub-Phase Planning Checkpoint (see AGENTS.md) includes a backlog review:
Last updated: January 2026 (Phase restructure — added Feature Backlog section for post-MVP items)