Full review: README.md
Date: 2025-07-14 (review) · 2026-02-16 (implemented & wrapped)
Status: ✅ Complete
Scope: Champion Portal user-facing text vs. 20 canonical source documents
Surfaces audited: 38 controllers · 37 view directories · 10 mailers · 9 helpers · 4 config files
The Champion Portal is well-built and friendly — but it reads like a well-executed alumni product, not the Christ-centered, formation-grounded community the source documents envision. The distinctive voice exists comprehensively in the source docs but has not yet been translated into the user-facing codebase.
All Phase 12 implementation applies an additional lens: this portal is for all Belmont alumni, not exclusively self-identified “Champions.” By showing up, every alum is already a Champion. External-facing surfaces (landing, registration, emails) lead with “alumni” and “Bruins.” Internal surfaces (dashboard, communities) celebrate members as Champions — recognition, not a title to earn. See the full framing in README.md § Inclusivity & Identity Framing.
Critical gaps:
| Rank | ID | Change | Impact | Effort | Source Doc |
|---|---|---|---|---|---|
| 1 | L-02 | Replace “Sign Up — It’s Free” with invitational CTA | High — primary conversion touchpoint | Low — string replacement | VERBAL, INVITATIONS |
| 2 | L-04 | Replace “recruitment district” with “your local community” | High — violates core “never recruiters” principle | Low — string replacement | VERBAL |
| 3 | O-02 | Rewrite confirmation email: belonging-first, not task list | High — first email every champion receives | Low — template rewrite | ONBOARDING, NARRATIVE |
| 4 | O-03 | Rewrite verification email: affirm identity at peak moment | High — highest-emotion touchpoint | Low — template rewrite | ONBOARDING, NARRATIVE |
| 5 | L-03 | Replace “Become a Champion” with welcoming heading | High — registration page heading | Low — string replacement | VERBAL |
| 6 | L-05 | Replace “You don’t qualify” with warm explanation | High — gatekeeping language | Low — string replacement | VERBAL, IMPLICATIONS |
| 7 | O-01 | Add identity grounding to landing page | Critical — first impression for every visitor | Medium — copy + layout | IDENTITY, IMPLICATIONS, ONBOARDING |
| 8 | L-01 | Express Christ-centered identity through hospitality, dignity, and belonging — not overt labels | Critical — defines portal identity | Medium — woven through other findings | IDENTITY, IMPLICATIONS |
| 9 | F-02 | Rewrite 20+ empty states with warmth + CTAs | High — every content area affected | Medium — 20+ locations | VERBAL, INVITATIONS |
| 10 | F-01 | Weave champion roles into ongoing experience | High — transforms role from badge to identity | High — dashboard, notifications, empty states | ROLES, ECOSYSTEM |
| Category | Count | CRITICAL | HIGH | MEDIUM | LOW | STRUCTURAL |
|---|---|---|---|---|---|---|
| Language (L-) | 14 | 1 | 4 | 7 | 1 | 1 |
| Onboarding (O-) | 5 | 0 | 4 | 1 | 0 | 0 |
| Functionality (F-) | 6 | 0 | 2 | 3 | 0 | 1 |
| Total | 25 | 1 | 10 | 11 | 1 | 2 |
These 9 changes are simple string replacements that immediately improve source alignment:
| ID | Current Text | Recommended Text | File(s) |
|---|---|---|---|
| L-02 | “Sign Up — It’s Free” | “You’re Invited” / “Join Your Fellow Bruins” | landing, careers views |
| L-03 | “Become a Champion” | “Welcome Home, Bruin” | registrations/new |
| L-04 | “recruitment district” | “your local Bruin community” | profile/complete |
| L-05 | “You don’t currently qualify” | Warm, explanatory alternative | communities_controller |
| L-06 | “the … system” | “your … community” | 4 support_thread_mailer templates |
| L-07 | “User” → “Champion/person” | “Champion”, “person”, “member” | feedback_mailer, boards, moderation |
| L-10 | “New to Champion Portal?” | “New to Belmont Alumni Champions?” | sessions/new |
| L-11 | “Welcome to the Champion Portal!” | “Welcome Home, Bruin! 💙” | notification_mailer subject |
| L-12 | “alumni network” in welcome packs | “alumni community” | config/welcome_packs.yml |
| Coverage Level | Source Documents |
|---|---|
| ABSENT (zero presence) | IDENTITY_STATEMENT (hospitality/dignity posture), PORTAL_IMPLICATIONS (guardrail phrases), GIVING_PHILOSOPHY |
| WEAK (partially addressed) | ONBOARDING_PHILOSHOPY, CORE_ALUMNI_NARRATIVE, INVITATIONS_AND_CTAS |
| PARTIAL (some presence) | VERBAL_STYLE_GUIDE, ROLES_FRAMEWORK, PORTAL_PURPOSE_AND_POSTURE, ENGAGEMENT_ECOSYSTEM_MODEL |
| Background (not expected in UI) | CREATION_FALL_REDEMPTION_RECREATION_ARC, MEASUREMENT, HT_OVERVIEW, HT_FUNDING |
All 3 tiers implemented across 7 waves. 20 of 25 findings addressed; 5 explicitly deferred.
| Wave | Scope | Files | Test Fixes |
|---|---|---|---|
| Tier 1 | 9 quick-win string replacements | 15 app + 3 test | 8 |
| Tier 2 | 3 email template rewrites | 6 templates + 1 test | 1 |
| Wave A | Vocabulary + gatekeeping softening | 6 app + 2 test | 2 |
| Wave B | 15 empty states rewritten | 8 app + 2 test | 2 |
| Wave C | 8 flash messages warmed | 3 app + 2 test | 3 |
| Wave D | Landing pillars → Belong / Gather / Inspire | 1 app + 1 test | 1 |
| Wave E | Wizard copy refinement | 2 app | 0 |