Canonical sources: Portal philosophy, posture, and language live in
/docs/planning/champion-portal/source/README.md.
Use these sources (includingCHRIST_CENTERED__IDENTITY_STATEMENT.md) when writing specs or user-facing copy. Prefer quoting/paraphrasing over inventing new language.
Status: ✅ Complete
Date: 2025-07-14 (review) · 2026-02-16 (implementation) · 2026-02-16 (wrapped)
Scope: Full audit of Champion Portal user-facing text against the 20 canonical source documents
Method: Automated grep + manual review of all CP controllers (38), view directories (37), mailers (10), helpers (9), config files (4), and JS controllers
Every user-facing surface of the Champion Portal was searched against the principles established in the canonical source documents at /docs/planning/champion-portal/source/.
| Surface | Count | Method |
|---|---|---|
| CP controllers | 38 files in app/controllers/cp/ |
Flash messages, redirect notices, error copy |
| CP view directories | 37 dirs in app/views/cp/ |
Headings, labels, empty states, CTAs, body copy |
| Mailers | 10 mailer classes (7 CP-namespaced + 3 root) | Subject lines, body copy, footer text |
| Email templates | 19+ templates in app/views/cp/*_mailer/ |
Full text audit |
| Helpers | 9 files in app/helpers/cp/ |
Display strings returned to views |
| Config YAML | faq.yml, welcome_packs.yml, career_resources.yml, primary_contacts.yml |
User-facing strings |
| JS controllers | app/javascript/controllers/ |
Alert/confirm messages, UI strings |
| Seeded content | docs/seeded_questions_100.yml, rake tasks |
System-generated posts |
All 20 files in /docs/planning/champion-portal/source/:
| # | Filename | Short label |
|---|---|---|
| 1 | CHRIST_CENTERED__IDENTITY_STATEMENT.md |
IDENTITY |
| 2 | CHRIST_CENTERED__PORTAL_IMPLICATIONS.md |
IMPLICATIONS |
| 3 | ALUMNI_CHAMPIONS__VERBAL_STYLE_GUIDE.md |
VERBAL |
| 4 | ALUMNI_CHAMPIONS__ONBOARDING_PHILOSHOPY.md |
ONBOARDING |
| 5 | ALUMNI_CHAMPIONS__OVERVIEW.md |
OVERVIEW |
| 6 | ALUMNI_CHAMPIONS__ROLES_FRAMEWORK.md |
ROLES |
| 7 | FOUNDATIONS__CORE_ALUMNI_NARRATIVE.md |
NARRATIVE |
| 8 | FOUNDATIONS__CREATION_FALL_REDEMPTION_RECREATION_ARC.md |
ARC |
| 9 | FOUNDATIONS__ENGAGEMENT_ECOSYSTEM_MODEL.md |
ECOSYSTEM |
| 10 | FOUNDATIONS__HOPE_BEYOND_THE_TOWER_LIFESTAGE_RHYTHM.md |
LIFESTAGE |
| 11 | HOPE_TRANSFORMS__GIVING_PHILOSOPHY.md |
GIVING |
| 12 | HOPE_TRANSFORMS__OVERVIEW.md |
HT-OVERVIEW |
| 13 | HOPE_TRANSFORMS__PILLARS.md |
HT-PILLARS |
| 14 | HOPE_TRANSFORMS__FUNDING_PROIRITIES.md |
HT-FUNDING |
| 15 | COMMUNICATIONS__PORTAL_PURPOSE_AND_POSTURE.md |
POSTURE |
| 16 | COMMUNICATIONS__INVITATIONS_AND_CTAS.md |
INVITATIONS |
| 17 | COMMUNICATIONS__PERSONALIZATION_AND_SEGMENTATION.md |
PERSONALIZATION |
| 18 | COMMUNICATIONS__MEASUREMENT_FOR_PORTAL_MESSAGING.md |
MEASUREMENT |
Plus README.md (index) and SOURCES_CHANGELOG.md (version history).
| Source | Non-negotiable Principle | |——–|————————–| | IDENTITY | Everyone has dignity. Unleash hospitality. Hope that endures. The Christ-centered identity is expressed through radical welcome, not labels. | | IMPLICATIONS | Use: “dignity”, “belonging”, “hospitality”, “hope in action”, “character and calling.” Avoid: doctrine debates, insider/outsider language, overt theological labels that create exclusion. | | VERBAL | “Invitational, never recruiters.” Say the main point first. Short sentences. Avoid: “We need you”, “Apply/qualify/earn”, guilt/urgency. | | GIVING | “Generosity is formation, not merely financial.” “Stories before numbers.” “Gratitude, not guilt.” | | NARRATIVE | Belonging → transition → rebuilding. “You still belong.” Normalize re-entry. | | ONBOARDING | First impression = warmth and belonging, not tasks. Identity-first, not feature-first. |
Guiding principle for all Phase 12 implementation: This portal is for all Belmont alumni, not exclusively those who self-identify as “Champions.” By showing up, every alum is already a Champion. The language must reflect this.
The hybrid approach:
alumnichampions.com — but the portal experience should feel like an alumni community that celebrates Champions, not an exclusive Champion club.Vocabulary guidance for this phase:
| Context | Use | Avoid |
|---|---|---|
| Pre-registration / external | “alumni,” “Bruins,” “your community” | “Champion Portal,” “become a Champion” |
| Post-login / internal | “Champion” (as celebration), “Bruin” | “user,” “member” (except in moderation/admin) |
| Email footers / system messages | “your Belmont alumni community” | “the Alumni Champions system/platform” |
| Gatekeeping moments | Warm explanation + redirect | “You don’t qualify,” “You must be…” |
| Controller | Domain | User-Facing Text? |
|---|---|---|
dashboard_controller.rb |
Home/dashboard | Flash messages |
landing_controller.rb |
Public landing page | — (view-driven) |
registrations_controller.rb |
Sign-up | Flash messages |
sessions_controller.rb |
Sign-in | Flash messages |
confirmations_controller.rb |
Email confirmations | Flash messages |
passwords_controller.rb |
Password reset | Flash messages |
profile_controller.rb |
Profile edit | Flash messages |
profile_wizard_controller.rb |
Onboarding wizard | Flash messages |
verification_controller.rb |
Identity verification | Flash messages |
directory_controller.rb |
Champion directory | — |
boards_controller.rb |
Discussion boards | Flash messages |
board_comments_controller.rb |
Board comments | Flash messages |
replies_controller.rb |
Comment replies | Flash messages |
news_controller.rb |
Community news | Flash messages |
events_controller.rb |
Events | Flash messages |
communities_controller.rb |
Communities | Flash messages |
community_suggestions_controller.rb |
Community suggestions | Flash messages |
message_threads_controller.rb |
Messaging | Flash messages |
messages_controller.rb |
Message compose | Flash messages |
contacts_controller.rb |
Contact list | Flash messages |
invites_controller.rb |
Champion invites | Flash messages |
blocks_controller.rb |
User blocking | Flash messages |
photo_albums_controller.rb |
Photo albums | Flash messages |
photos_controller.rb |
Photo management | Flash messages |
reactions_controller.rb |
Content reactions | — (turbo) |
notifications_controller.rb |
Notifications | — |
notification_preferences_controller.rb |
Notification settings | Flash messages |
settings_controller.rb |
Account settings | Flash messages |
help_controller.rb |
Help/FAQ | — |
careers_controller.rb |
Career resources | — (view-driven) |
leadership_controller.rb |
Community leadership | Flash messages |
moderation_controller.rb |
Content moderation | Flash messages |
support_threads_controller.rb |
Support requests | Flash messages |
push_subscriptions_controller.rb |
Push notifications | — |
roadmap_controller.rb |
Development roadmap | — |
omniauth_callbacks_controller.rb |
OAuth callbacks | Flash messages |
unlocks_controller.rb |
Account unlock | Flash messages |
application_controller.rb |
Base controller | Helper methods |
Key user-facing directories with substantial copy:
landing/ — Public landing page (hero, pillars, testimonials, CTAs)registrations/ — Sign-up formsessions/ — Sign-in formdashboard/ — Home dashboard (welcome, content cards, empty states)profile_wizard/ — 20-step onboarding wizardprofile/ — Profile view/editdirectory/ — Champion directory searchboards/ — Discussion boardsnews/ — Community newsevents/ — Events listing/detailcommunities/ — Community explore/join/detailcareers/ — Career resourceshelp/ — FAQ pagesettings/ — Account settingschampion_mailer/ — Champion-related email templatesnotification_mailer/ — Notification email templatescommunity_mailer/ — Community email templatesmoderation_mailer/ — Moderation email templatessupport_threads/ — Support ticket flowshared/ — Shared partials (nav, footer, cards)| Mailer | Templates | Facing |
|---|---|---|
Cp::ChampionMailer |
invite, confirmation_instructions | External |
Cp::NotificationMailer |
digest (daily/weekly), verification_pending, verification_approved, welcome, support_reply, leadership_promotion | External |
Cp::CommunityMailer |
join_request_admin, welcome, request_update, membership_update | External + Admin |
Cp::SupportThreadMailer |
new_thread, staff_reply | External + Admin |
Cp::FeedbackMailer |
beta_feedback | Admin |
Cp::ModerationMailer |
auto_hidden, escalated | Admin |
Cp::AdminNotificationMailer |
new_signup, weekly_summary | Admin |
VerificationMailer |
— | External |
InviteMailer |
— | External |
ApplicationMailer |
— | Base |
| File | Content | Lines |
|---|---|---|
config/faq.yml |
11 FAQ categories + onboarding tooltips | ~237 |
config/welcome_packs.yml |
Community welcome message templates | ~237 |
config/career_resources.yml |
Career resource links | — |
config/primary_contacts.yml |
Staff contact info | — |
| Level | Meaning |
|---|---|
| CRITICAL | Core source-doc principle entirely absent from portal |
| HIGH | Key touchpoint (landing, onboarding, peak moments) violates a named principle |
| MEDIUM | Vocabulary or tone mismatch in secondary surfaces |
| LOW | Minor wording improvement or missed opportunity |
| STRUCTURAL | Architectural pattern that makes alignment harder |
Current state: The portal’s tone is warm but generic — it could belong to any alumni platform. The distinctive posture that flows from Belmont’s Christ-centered identity (radical hospitality, dignity for every person, belonging without qualification, hope-centered language) is not yet woven into the portal’s voice.
Source violated: IDENTITY_STATEMENT (“All people have dignity”, “Unleash hospitality”), IMPLICATIONS (use “dignity”, “belonging”, “hospitality”, “hope in action”, “character and calling”)
Important nuance: The goal is NOT to add overt theological labels (“Christ-centered” in the footer, faith language in CTAs). That risks making non-Christian alumni feel unwelcome — the opposite of the source docs’ intent. Instead, the Christ-centered identity should be expressed through how people are treated: unconditional welcome, radical hospitality, language that communicates “you have dignity and you belong here, period.” Everyone should feel welcome, especially those who don’t share the faith tradition.
Recommendation: Let the identity come through in posture, not labels:
Anti-pattern: Do NOT add explicit theological language to footers, CTAs, headings, or prominent UI elements. That creates an insider/outsider dynamic the sources explicitly reject.
Files to update (through other findings):
config/faq.yml — update “What is Alumni Champions?” answer to reflect values-grounded (not theology-labeled) identityCurrent state: Primary CTA on landing page and careers page uses transactional “Sign Up — It’s Free.”
Source violated: VERBAL (“Invitational, never recruiters”), ONBOARDING (identity-first)
Recommendation: Replace with invitational CTA per INVITATIONS source. Examples:
Files to update:
app/views/cp/landing/show.html.erbapp/views/cp/careers/show.html.erbCurrent state: Registration page heading says “Become a Champion.”
Source violated: VERBAL (“Avoid: Apply/qualify/earn”). “Become” implies earning status.
Recommendation: Replace with identity-affirming language. Examples:
Files to update:
app/views/cp/registrations/new.html.erbCurrent state: Profile completion page says “We use your ZIP code to assign you to a recruitment district.”
Source violated: VERBAL (“Invitational, never recruiters”). “Recruitment” is the exact posture the sources reject.
Recommendation: Replace “recruitment district” with “your local community” or “your Bruin community.” Examples:
Files to update:
app/views/cp/profile/complete.html.erbCurrent state: Communities controller responds with “You don’t currently qualify for this community.”
Source violated: VERBAL (“Avoid: Apply/qualify/earn”), IMPLICATIONS (avoid insider/outsider language)
Recommendation: Replace with warm, explanatory language:
Files to update:
app/controllers/cp/communities_controller.rb (around line 231)Current state: 4 support thread mailer templates use “system” in footer text.
Source violated: VERBAL (relational tone), IMPLICATIONS (avoid product language)
Recommendation: Replace “system” with “community” or remove entirely:
Files to update:
app/views/cp/support_threads/new_thread_notification.html.erbapp/views/cp/support_threads/new_thread_notification.text.erbapp/views/cp/support_threads/staff_reply_notification.html.erbapp/views/cp/support_threads/staff_reply_notification.text.erbCurrent state: “Anonymous User” in feedback mailer templates; “Block User” in discussion board actions; “from X users” in moderation views.
Source violated: VERBAL — Champions are champions, not “users.”
Recommendation: Replace all user-facing instances of “user” with “champion”, “person”, or “member”:
Files to update:
app/views/cp/feedback_mailer/beta_feedback.text.erbapp/views/cp/feedback_mailer/beta_feedback.html.erbapp/views/cp/boards/_content_actions.html.erbapp/views/cp/moderation/_moderation_item.html.erbCurrent state: Careers page uses “Platforms” in heading and “networking” 7 times. CTA: “Join the Bruin Network.”
Source violated: VERBAL (warm/relational, not corporate), IMPLICATIONS (community > network)
Recommendation: Replace “platforms” with “resources” and “networking” with “connecting” or “community”:
Files to update:
app/views/cp/careers/show.html.erbCurrent state: Communities explore page mixes “network” and “community” terminology inconsistently.
Source violated: IMPLICATIONS, NARRATIVE (belonging > networking)
Recommendation: Standardize on “community” throughout. Reserve “network” only for external platform references (e.g., LinkedIn).
Files to update:
app/views/cp/communities/explore.html.erbCurrent state: Sign-in page asks “New to Champion Portal?” — treating the portal as a product.
Source violated: IMPLICATIONS (community, not product)
Recommendation: Replace with relational framing:
Files to update:
app/views/cp/sessions/new.html.erbCurrent state: Welcome email subject line uses product name.
Source violated: ONBOARDING (warmth/belonging), IMPLICATIONS (community > product)
Recommendation: Replace with relational subject:
Files to update:
app/mailers/cp/notification_mailer.rbCurrent state: Welcome pack templates say “You’re now part of the alumni network” and “Professional networking with alumni in your industry.”
Source violated: IMPLICATIONS, NARRATIVE
Recommendation: Replace “network” with “community”:
Files to update:
config/welcome_packs.ymlCurrent state: FAQ copy references “the portal” repeatedly as a product noun (“navigate the portal”, “your experience on the portal”).
Source violated: IMPLICATIONS (community, not product), VERBAL
Recommendation: Replace “the portal” with “Alumni Champions” or “the community” in FAQ copy. Reserve “portal” for technical contexts only.
Files to update:
config/faq.ymlCurrent state: Multiple controllers use gatekeeping language:
invites_controller.rb)leadership_controller.rb)photo_albums_controller.rb)Source violated: VERBAL (“Invitational, never recruiters”), IMPLICATIONS (avoid insider/outsider framing)
Recommendation: Soften gatekeeping messages:
Files to update:
app/controllers/cp/invites_controller.rbapp/controllers/cp/leadership_controller.rbapp/controllers/cp/photo_albums_controller.rbCurrent state: Landing page hero says “Your people are waiting” (good) but pillars are entirely feature-driven: “Connect with Bruins”, “Host & Attend Events”, “Share Stories.” No reference to belonging, formation, calling, character, dignity, or hope.
Source violated: NARRATIVE (belonging-first), IMPLICATIONS (dignity, hospitality, belonging language), ONBOARDING (identity-first)
Recommendation: Shift pillars from features to identity, and let warmth/hospitality carry the voice:
Anti-pattern: Do NOT add “A Christ-centered community” as a prominent heading. Express the identity through hospitality and belonging, not labels.
Files to update:
app/views/cp/landing/show.html.erbCurrent state: Confirmation email lists 4 tasks (Confirm → Complete Profile → Connect → Show Up). Closes with “Go Bruins! 🐻”. No belonging, formation, or identity framing.
Source violated: ONBOARDING (“First impression must communicate warmth and belonging, not tasks”)
Recommendation: Lead with belonging, then guide. Per NARRATIVE (“You still belong”):
Files to update:
app/views/cp/champion_mailer/confirmation_instructions.html.erbCurrent state: “🎉 You’re Verified!” followed by a feature list (Find Champions, Send Messages, Join Communities, Discover Events). This is a peak emotional moment used for feature promotion.
Source violated: ONBOARDING, NARRATIVE (“You still belong”)
Recommendation: Use this moment to affirm identity per NARRATIVE:
Files to update:
app/views/cp/notification_mailer/verification_approved_notification.html.erbCurrent state: Invite email describes Champions as “engaged Belmont graduates who: Connect, Host, Share, Stay connected.” Pure feature list with no belonging/identity framing.
Source violated: ONBOARDING (identity-first), NARRATIVE (“You still belong”)
Recommendation: Rewrite invite body per INVITATIONS source:
Files to update:
app/views/cp/champion_mailer/invite.html.erbCurrent state: 20-step profile wizard drives profile completion. Uses “recruitment district.” No identity/formation framing between steps.
Source violated: ONBOARDING (identity-first), VERBAL (avoid “recruitment”)
Recommendation: Add brief identity-grounding interstitials between wizard sections:
Files to update:
app/views/cp/profile_wizard/ (multiple step templates)📋 Phase 11 scope: This finding is the subject of Phase 11: Champion Role Dashboard Card. The recommendations below served as input for that spec.
Current state: Champion roles (Community Builder, Digital Ambassador, Connection Advisor, Giving Advocate) appear only in the quiz/wizard flow and profile badges. They are NOT referenced in dashboard, empty states, suggestion cards, notifications, or mailers.
Source violated: ROLES (roles are identities that shape ongoing experience), ECOSYSTEM (roles guide participation)
Recommendation: Weave role identity into ongoing touchpoints:
Files to update:
app/views/cp/dashboard/show.html.erbapp/views/cp/shared/ (empty state partials)Current state: Majority of empty states follow “No [content type] yet” pattern: “No discussions yet”, “No news posts yet”, “No upcoming events”, “No communities yet”, “No messages yet”, “No members yet”, “No comments yet”, “No photos in this album”, “No communities available”, “No members to display”, “No contacts yet.”
Source violated: VERBAL (warm, invitational), DESIGN-GUIDELINES §5.5 (“Every empty state invites action”)
Recommendation: Rewrite each empty state with warmth + CTA per INVITATIONS:
Files to update:
app/views/cp/dashboard/show.html.erbapp/views/cp/boards/index.html.erbapp/views/cp/news/index.html.erbapp/views/cp/events/index.html.erbapp/views/cp/communities/explore.html.erbapp/views/cp/messages/index.html.erbapp/views/cp/photo_albums/show.html.erbapp/views/cp/leadership/ templatesapp/views/cp/contacts/ templatesCurrent state: Only 1 match for generosity/giving across all CP views (careers page: “give back to fellow Bruins”). The Giving Philosophy source doc’s entire framework is absent.
Source violated: GIVING (“Generosity is formation, not merely financial”; “Stories before numbers”; “Gratitude, not guilt”)
Recommendation: Add giving-philosophy language where contribution is referenced:
GIVING source language exclusivelyFiles to update:
app/views/cp/careers/show.html.erb (existing “give back” reference)Current state: The following phrases from IMPLICATIONS appear zero times in user-facing copy: “unleash hospitality”, “hope in action”, “character and calling”, “wisdom”, “dignity” (in source-doc context).
Source violated: IMPLICATIONS (these are specifically listed as language TO use)
Recommendation: Incorporate guardrail phrases into appropriate surfaces:
Files to update:
app/views/cp/landing/show.html.erbconfig/faq.ymlapp/views/cp/profile_wizard/ (completion step)Current state: 80+ flash messages across CP controllers use functional language: “Changes saved successfully”, “Signed in successfully”, “Password updated!”, “Your comment has been posted.” Even key moments (first login, first post, first community join) use the same transactional tone.
Source violated: VERBAL (warm tone)
Recommendation: Upgrade flash messages at milestone moments with warmth:
Files to update:
app/controllers/cp/sessions_controller.rbapp/controllers/cp/boards_controller.rbapp/controllers/cp/communities_controller.rbCurrent state: All CP user-facing text is hardcoded in views, controllers, config YAMLs, and service objects. config/locales/ contains only devise.en.yml and en.yml. No centralized copy management.
Source violated: Not a direct source violation, but a structural barrier to implementing alignment improvements at scale.
Recommendation: Consider creating a config/locales/cp.en.yml for centralizing user-facing Champion Portal copy. This would:
Files to create:
config/locales/cp.en.yml (new)Priority: LOW — implement alongside other alignment work, not as a standalone task.
How well does each source document’s core message appear in the portal?
| Source Document | Core Message | Portal Coverage | Gap Severity |
|---|---|---|---|
IDENTITY_STATEMENT |
Christ-centered identity expressed through hospitality & dignity | WEAK — tone is warm but generic; distinctive hospitality/dignity posture absent | CRITICAL |
PORTAL_IMPLICATIONS |
Guardrail phrases & hospitality language | ABSENT — none of the recommended phrases (“dignity”, “hospitality”, “belonging”, “character and calling”) appear | CRITICAL |
VERBAL_STYLE_GUIDE |
Invitational tone, avoid recruitment | PARTIAL — warm in places, but “recruit”, “qualify”, “become” still present | HIGH |
ONBOARDING_PHILOSHOPY |
Identity-first, belonging-first | WEAK — onboarding is task/feature-first at every touchpoint | HIGH |
CORE_ALUMNI_NARRATIVE |
“You still belong”, formation arc | WEAK — “Your people are waiting” is close, but narrative arc absent | HIGH |
GIVING_PHILOSOPHY |
Generosity as formation | ABSENT — one passing mention | HIGH |
ROLES_FRAMEWORK |
Roles shape ongoing experience | PARTIAL — roles exist but confined to quiz/badge | MEDIUM |
ENGAGEMENT_ECOSYSTEM_MODEL |
Ecosystem participation model | PARTIAL — activity tracking exists, language doesn’t reflect model | MEDIUM |
INVITATIONS_AND_CTAS |
Invitational CTA patterns | WEAK — CTAs are transactional | MEDIUM |
PORTAL_PURPOSE_AND_POSTURE |
Community posture | PARTIAL — warm in dashboard, corporate elsewhere | MEDIUM |
HOPE_BEYOND_THE_TOWER_LIFESTAGE_RHYTHM |
Lifestage-aware engagement | WEAK — lifestage not reflected in UX | LOW |
CREATION_FALL_REDEMPTION_RECREATION_ARC |
Theological narrative arc | NOT EXPECTED in UI — background doc | — |
PERSONALIZATION_AND_SEGMENTATION |
Personalized messaging | PARTIAL — community-based personalization exists | LOW |
MEASUREMENT_FOR_PORTAL_MESSAGING |
Messaging effectiveness | NOT EXPECTED in UI — analytics doc | — |
HOPE_TRANSFORMS__OVERVIEW |
Campaign context | NOT EXPECTED in UI — background doc | — |
HOPE_TRANSFORMS__PILLARS |
Campaign pillars | ABSENT from portal surfaces | LOW |
HOPE_TRANSFORMS__FUNDING_PROIRITIES |
Funding context | NOT EXPECTED in UI — background doc | — |
ALUMNI_CHAMPIONS__OVERVIEW |
Program overview | PARTIAL — program described functionally, not missionally | MEDIUM |
These findings address the most fundamental source-alignment gaps:
| # | Finding | Impact | Effort |
|---|---|---|---|
| L-01 | Express identity through hospitality/dignity/belonging | Defines portal identity | Medium |
| O-01 | Landing page identity grounding | First impression for every visitor | Medium |
| O-02 | Confirmation email — belonging-first | First email every champion receives | Low |
| O-03 | Verification email — peak moment | Highest-emotion touchpoint | Low |
| O-04 | Invite email — identity framing | Every invite sent | Low |
| L-02 | Replace “Sign Up — It’s Free” CTA | Primary conversion touchpoint | Low |
| L-03 | Replace “Become a Champion” | Registration heading | Low |
| L-04 | Replace “recruitment district” | Profile completion | Low |
| L-05 | Replace “You don’t qualify” | Community gatekeeping | Low |
| F-01 | Weave roles into ongoing experience | Ongoing engagement | High |
| F-02 | Rewrite 20+ empty states | Every content area | Medium |
| # | Finding | Impact | Effort |
|---|---|---|---|
| L-06 | Replace “system” in mailer footers | Email tone | Low |
| L-07 | Replace “User” with “Champion/person” | Consistent identity | Low |
| L-08 | Careers page vocabulary | Career resources section | Low |
| L-09 | “Network” → “Community” standardization | Community explore | Low |
| L-10 | Sign-in page product language | Sign-in experience | Low |
| L-11 | Welcome email subject line | First email subject | Low |
| L-12 | Welcome packs “network” language | Community welcome | Low |
| L-13 | FAQ “portal” → “community” | Help/FAQ content | Medium |
| F-03 | Add generosity-as-formation language | Contribution framing | Low |
| F-04 | Incorporate guardrail phrases | Source-prescribed vocabulary | Medium |
| F-05 | Warm flash messages at milestones | Ongoing experience | Medium |
| O-05 | Wizard identity interstitials | Onboarding flow | Medium |
| # | Finding | Impact | Effort |
|---|---|---|---|
| F-06 | Create CP i18n file | Future alignment maintainability | High |
| L-14 | Soften gatekeeping messages | Access-denied experiences | Low |
Completed: 2026-02-16 · Tests: 3316 runs, 0 failures, 0 errors
| Tier | Findings | Files Changed | Test Fixes |
|---|---|---|---|
| Tier 1 (Quick Wins) | L-02, L-03, L-04, L-05, L-06, L-07, L-10, L-11, L-12 | 15 app files, 3 test files | 8 |
| Tier 2 (Email Overhaul) | O-02, O-03, O-04 | 6 email templates, 1 test file | 1 |
| Tier 3 Wave A (Vocab + Gatekeeping) | L-09, L-13, L-14 | 6 app files, 2 test files | 2 |
| Tier 3 Wave B (Empty States) | F-02 | 8 app files, 2 test files | 2 |
| Tier 3 Wave C (Flash Messages) | F-05 | 3 app files, 2 test files | 3 |
| Tier 3 Wave D (Landing Page) | O-01 | 1 app file, 1 test file | 1 |
| Tier 3 Wave E (Wizard) | O-05 | 2 app files | 0 |
| Finding | Reason | Target |
|---|---|---|
| F-01 | Roles woven into experience — scoped to Phase 11 | Phase 11 scope |
| F-03 | Generosity-as-formation language — future content work | Future |
| F-04 | Source guardrail phrases — partially addressed via other findings | Future |
| F-06 | i18n infrastructure — user deferred explicitly | Future |
| L-08 | Careers networking vocabulary — user approved current | Kept as-is |
This document is a review and recommendation document only. No application code was modified. Implementation of these recommendations should be tracked as future work items, potentially as Phase 12 sub-phases or backlog items.