Transition The Warrior Veteran Network
Non-Profit Mentorship & Resource Directory Platform
Non-profit web platform supporting military veterans in career transition. Includes resource directories, mentorship pipelines, event registration, and community support tools built to connect veterans with the right people and resources quickly.
Architecture & System Design
A scoring-based matching engine pairs veterans with mentors based on industry, location, and availability. Resources are indexed for fast tagged search, and event registration enforces capacity limits with a waitlist queue.
- Scoring-based mentor matching algorithm weighing industry, location, and availability
- Full-text tagged search across the resource directory for fast discoverability
- Capacity-aware event registration with automatic waitlist promotion
- Automated email digest pipeline for community updates
Engineering Challenges
Matching Veterans With Relevant Mentors
Manually pairing veterans with mentors didn't scale and often produced mismatches in industry or availability.
Built a scoring-based matching algorithm ranking mentors by industry fit, location proximity, and open mentoring slots.
Mentor match relevance improved significantly based on post-match satisfaction feedback.
Resource Directory Discoverability
As the resource directory grew past 200 entries, veterans struggled to find relevant support services.
Implemented tagged, full-text indexed search with category faceting across the directory.
Resource findability improved, reducing manual support requests to admins.
Event Capacity Management
Popular events risked overbooking without a reliable way to cap registrations.
Built capacity-aware registration with an automatic waitlist queue that promotes attendees as spots free up.
Zero overbooking incidents recorded across 50+ hosted events.
Core Features
Mentor Matching Engine
Scoring-based algorithm pairing veterans with mentors by industry, location, and availability.
Clean Code
1<?php23namespace App\Services;45use App\Models\Veteran;6use App\Models\Mentor;78class MentorMatchingService9{10 public function findBestMatch(Veteran $veteran): ?Mentor11 {12 return Mentor::where('is_active', true)13 ->where('industry', $veteran->target_industry)14 ->get()15 ->sortByDesc(fn (Mentor $mentor) => $this->score($mentor, $veteran))16 ->first();17 }1819 private function score(Mentor $mentor, Veteran $veteran): int20 {21 $score = 0;22 $score += $mentor->industry === $veteran->target_industry ? 40 : 0;23 $score += $mentor->location === $veteran->location ? 20 : 0;24 $score += min($mentor->available_slots, 5) * 8;2526 return $score;27 }28}