Matching Algorithm

The matching algorithm is the engine that connects students with appropriate providers based on their needs, provider capabilities, and various scoring factors.

Overview

When a student needs to be matched:

  1. Student completes intake questionnaire
  2. Matching algorithm analyzes requirements
  3. Available providers are scored and ranked
  4. Top matches become proposals
  5. Proposals sent to recommended providers

Matching Triggers

Matching runs when:

  • Student completes intake questionnaire
  • Admin requests re-matching
  • Relationship declines and alternate needed
  • Provider capacity changes (future consideration)

Input Data

From Student

The matching algorithm uses:

  • Service type - Tutoring vs. advising
  • Exam codes - Which exams (for tutoring)
  • Specialty codes - Which areas (for advising)
  • Region - Geographic preference
  • Schedule preferences - Availability patterns
  • Preferred provider - If specified

From Provider

Provider matching data includes:

  • Capabilities - Exam codes and specialty codes
  • Region - Location
  • Availability - Current capacity
  • Active relationships - Current workload

Scoring Factors

The algorithm calculates a match score based on weighted factors.

Capability Match

Primary filter - Provider must have relevant capability:

For tutoring:

  • Provider's exam codes must include student's target exam
  • No partial matches (must be exact)

For advising:

  • Provider's specialty codes must include student's need
  • May allow related specialties

Score impact: Pass/fail filter, then skill level may add points

Region Scoring

Geographic alignment:

Match TypeScore
Same regionHigh
Adjacent regionMedium
Different regionLow
No preferenceNeutral

Region matters more for some services than others.

Availability Scoring

Provider capacity affects ranking:

CapacityScore Impact
High availabilityPositive
Some availabilityNeutral
Limited availabilitySlight negative
No availabilityExcluded

Ensures busy providers don't get overloaded.

Load Balancing

Current workload considered:

  • Providers with fewer active clients may score higher
  • Prevents concentration on popular providers
  • Ensures broader utilization of provider pool

Preferred Provider

If student specified a preference:

  • Named provider gets significant bonus
  • Still must meet capability requirements
  • Other providers still ranked as alternates

Ranking Process

  1. Filter - Remove providers who don't meet requirements
  2. Score - Calculate composite score for each remaining provider
  3. Rank - Order by descending score
  4. Select - Take top N for proposals

Example Scoring

Provider A:
  Capability match: +100 (has exam code)
  Same region: +50
  High availability: +20
  Low current load: +10
  Total: 180

Provider B:
  Capability match: +100 (has exam code)
  Different region: +10
  Some availability: +0
  Medium current load: +5
  Total: 115

Provider C:
  Capability match: 0 (missing exam code)
  EXCLUDED

Result: Provider A ranked first, Provider B second.

Tutoring Matching

Specific to tutoring services:

Exam Code Filtering

  • Student specifies target exam (MCAT, USMLE, etc.)
  • Providers tagged with exam codes
  • Only providers with matching code considered

Subject Specialization

Within an exam, some providers specialize:

  • Content review
  • Test strategies
  • Practice problems
  • Full-length tests

May be factored if student has specific needs.

Advising Matching

Specific to advising services:

Specialty Code Filtering

  • Student specifies advising area
  • Providers tagged with specialties
  • Only providers with relevant specialty considered

Common Specialties

  • Medical school applications
  • Residency matching
  • Career planning
  • Research guidance

Cross-Specialty Consideration

Some advisors have multiple specialties, making them suitable for students with complex needs.

Proposal Generation

After ranking:

Number of Proposals

Typically, the top 1-3 providers receive proposals:

  • Primary recommendation (highest score)
  • Alternates (next highest scores)

Proposal Contents

Each proposal includes:

  • Student summary
  • Service type
  • Requested hours
  • Match rationale (for admin view)

Sequential vs. Parallel

Proposals may be sent:

  • Sequential - Wait for decline before sending to next
  • Parallel - Send to multiple simultaneously

Configuration determines behavior.

Provider Response

After proposals are sent:

Acceptance

  • Provider accepts
  • Relationship moves to "Paired"
  • Other proposals (if any) cancelled

Decline

  • Provider declines
  • Next alternate receives proposal (if sequential)
  • Or student re-enters matching pool

Timeout

  • No response within period
  • Treated as decline
  • Auto-escalation to next provider

Manual Matching

Admins can bypass the algorithm:

Direct Assignment

  1. Admin selects student
  2. Admin selects provider
  3. Relationship created directly
  4. No scoring involved

Use Cases

  • Specific student request
  • Provider recommendation
  • Algorithm unavailable
  • Special circumstances

Improving Match Quality

Provider Data

Better matching requires:

  • Complete capability profiles
  • Accurate availability
  • Up-to-date regions
  • Proper capacity settings

Student Data

Matching accuracy depends on:

  • Complete intake questionnaires
  • Clear service type selection
  • Honest preferences
  • Accurate contact info

Algorithm Tuning

Admins may adjust:

  • Score weights for different factors
  • Number of proposals generated
  • Timeout periods
  • Regional definitions

Troubleshooting

No Matches Found

Possible causes:

  • No providers with required capability
  • All providers at capacity
  • Filters too restrictive

Solutions:

  • Add provider capabilities
  • Increase provider capacity
  • Review student requirements

Poor Match Quality

Possible causes:

  • Incomplete provider profiles
  • Vague student requirements
  • Scoring weights misaligned

Solutions:

  • Audit provider data
  • Improve intake questions
  • Adjust scoring factors

Was this page helpful?