alumni_lookup

Phase 2: Community Leadership

Status: Complete (2.1-2.4)
Estimated Effort: 4-6 weeks
Prerequisites: Phase 1 Complete (Community Foundation 1.12-1.14)

Related Documents:


Completion Summary (Sub-Phases 2.1-2.4)

Completed: January 2026

What Was Implemented

Phase 2.1: Model Refactor ✅

Phase 2.2: Admin CL Assignment Interface ✅

Phase 2.3: Lookup Portal Permission System ✅

Phase 2.4: Action Items Notification System ✅

Files Created

Test Results

Scope Adjustments


Table of Contents

  1. Overview
  2. Why This Phase Exists
  3. Terminology
  4. Sub-Phases
  5. Data Model Changes
  6. Definition of Success
  7. Tests to Create
  8. Documentation Updates

1. Overview

Phase 2 establishes the Community Leadership infrastructure — enabling Champions to serve as Community Leaders (CLs) for any community type (district, college, major, affinity, industry, or custom).

What This Phase Delivers

Feature Description
CL Role Assignment Admin interface to assign Champions as Community Leaders
CL Portal Features Moderation queue, community management, member insights
CL-Staff Communication Channel for CLs to communicate with Engagement Team
Model Refactor `ClcAssignment` links to `Community` instead of `Region`

Why Before Discussion Boards?

Community Leaders need to be in place before user-generated content (Phase 3: Discussion Boards) goes live. This ensures:


2. Why This Phase Exists

From JOBS-TO-BE-DONE.md:

Job L1: Know My Community’s Champions

“When I’m leading Champions in my community, I want to see who’s active and engaged, so I can coordinate effectively and welcome new members.”

Job L4: Keep Discussions On-Track

“When discussions go off-topic or problematic content appears, I want to moderate effectively, so I can maintain a welcoming community.”

The Missing Piece

Phase 1 built the Community infrastructure (types, membership, suggestions). But there’s no formal role for leading a community. Champions can join communities, but nobody is empowered to:

Phase 2 creates this leadership layer.


3. Terminology

Term Definition Usage
CL Community Leader Singular: “The CL for Nashville District”
Community Leaders Multiple CLs Plural: “Community Leaders in the Southeast”
CLC Community Leadership Council Collective: “The CLC meets monthly”
Community Any group type district, college, major, affinity, industry, custom

⚠️ Terminology Rules


4. Sub-Phases

Sub-Phase 2.1: Model Refactor

Goal: Update `ClcAssignment` to link to `Community` instead of `Region`.

Current State: ```ruby

app/models/cp/clc_assignment.rb (CURRENT)

belongs_to :region # ❌ Links to Region belongs_to :champion, class_name: “Cp::Champion” ```

Target State: ```ruby

app/models/cp/clc_assignment.rb (AFTER)

belongs_to :community, class_name: “Cp::Community” belongs_to :champion, class_name: “Cp::Champion”

Additional fields:

- assigned_at: datetime (auto-set on create)

- assigned_by_id: references (User who assigned)

```

Deliverables:

Deferred:


Sub-Phase 2.2: Admin CL Assignment Interface ✅

Goal: Enable Lookup Portal admins to assign Champions as Community Leaders.

Location: Lookup Portal → Champion Admin → Community Leaders

UI Features Implemented:

Deferred:

Wireframe: ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ Community Leadership Assignments │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ [+ Assign New CL] │ │ │ │ Filter: [All Communities ▼] [All Roles ▼] [Search…] │ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ Nashville District │ │ │ │ ├─ Jane Smith (Leader) — Assigned 2024-01-15 │ │ │ │ ├─ John Doe (Co-Leader) — Assigned 2024-03-22 │ │ │ │ └─ [Add CL] │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ College of Music │ │ │ │ ├─ Sarah Johnson (Leader) — Assigned 2024-02-10 │ │ │ │ └─ [Add CL] │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ Communities without CLs: [View 47 communities →] │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ```

Deliverables:


Sub-Phase 2.3: CL Portal Features ✅

Note: CL Portal Features (Leadership Dashboard, Moderation Queue, Member Management) were implemented alongside Phase 3 Discussion Boards. See DISCUSSION_MODERATION.md for implementation details.

Goal: Give Community Leaders tools to manage their communities within the Champion Portal.

New Section: “My Leadership” in Champion Portal navigation

Features:

2.3.1 Community Dashboard (per community they lead)

2.3.2 Member Management

2.3.3 Moderation Queue (Phase 3 readiness)

Wireframe (CL Dashboard): ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ My Leadership │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ 🏙️ Nashville District [Leader] │ │ │ │ │ │ │ │ 127 Members • 12 joined this month • 89% verified │ │ │ │ │ │ │ │ [View Members] [Welcome New] [Community Settings] │ │ │ │ │ │ │ │ ⏳ Moderation Queue: Nothing to review │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ 🎵 Music Business Major [Co-Leader] │ │ │ │ │ │ │ │ 45 Members • 3 joined this month • 100% verified │ │ │ │ │ │ │ │ [View Members] [Welcome New] │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ```

Deliverables:


Sub-Phase 2.4: CL-Staff Communication ✅

Note: Implemented as Support Threads via Cp::SupportThreadsController. See Phase 3.5 for moderation escalation integration.

Goal: Give Community Leaders a direct channel to the Engagement Team.

Use Cases:

Implementation Options:

Option A: Dedicated Message Thread

Option B: Support Form

Recommendation: Start with Option A for simplicity. Upgrade to Option B if volume warrants.

Deliverables:


5. Data Model Changes

Modified Tables

`cp_clc_assignments` (existing, modified)

Column Type Change
`id` bigint
`champion_id` bigint FK
`region_id` bigint FK REMOVED
`community_id` bigint FK NEW
`role` integer (enum) NEW (0: leader, 1: co_leader, 2: moderator)
`assigned_at` datetime NEW
`assigned_by_id` bigint FK NEW (references `users`)
`created_at` datetime
`updated_at` datetime

Model Associations

```ruby

app/models/cp/clc_assignment.rb

class Cp::ClcAssignment < ApplicationRecord belongs_to :champion, class_name: “Cp::Champion” belongs_to :community, class_name: “Cp::Community” belongs_to :assigned_by, class_name: “User”, optional: true

enum role: { leader: 0, co_leader: 1, moderator: 2 }

validates :champion_id, uniqueness: { scope: :community_id }

scope :leaders, -> { where(role: [:leader, :co_leader]) } scope :for_community, ->(community) { where(community: community) } end

app/models/cp/community.rb (additions)

class Cp::Community < ApplicationRecord has_many :clc_assignments, dependent: :destroy has_many :community_leaders, through: :clc_assignments, source: :champion

def has_leadership? clc_assignments.exists? end

def primary_leader clc_assignments.leaders.order(:assigned_at).first&.champion end end

app/models/cp/champion.rb (additions)

class Cp::Champion < ApplicationRecord has_many :clc_assignments, dependent: :destroy has_many :led_communities, through: :clc_assignments, source: :community

def community_leader? clc_assignments.exists? end

def leads?(community) clc_assignments.where(community: community).exists? end end ```


6. Definition of Success

Functional Acceptance Criteria

Non-Functional Criteria


7. Tests to Create

Model Tests

Controller Tests

Integration Tests


8. Documentation Updates

After completing Phase 2:


Questions to Resolve

Question Status Notes
Multiple CLs per community? ✅ Yes Co-leadership supported
CL assignment UI location? ✅ Lookup Portal Champion Admin section
CL-Staff communication method? TBD Option A (message thread) vs Option B (form)
Existing Region assignments? TBD Data migration strategy needed

Document Purpose
../../JOBS-TO-BE-DONE.md Jobs L1-L4 (CLC needs)
../../development/DESIGN-GUIDELINES.md UI patterns
../phase-1/1.12-community-foundation.md Community model foundation
../phase-3/README.md Discussion Boards (depends on this phase)

This phase creates the leadership infrastructure required for Phase 3 (Discussion Boards) and beyond.