Skip to content

F01 -- Volunteer Matching & Retention Engine

Matches volunteers to campaign tasks based on skills, availability, and location. Tracks engagement metrics to identify at-risk volunteers and improve retention over time.

Key Features

  • Volunteer management: Full CRUD for volunteer profiles including skills, availability (JSON), location (GeoJSON), tags, and bio.
  • Task management: Create and manage campaign tasks with required skills, date ranges, location, and volunteer capacity limits.
  • Skill-based matching: Composite scoring algorithm that ranks volunteers for a given task based on skill overlap and availability.
  • Churn detection: Identifies volunteers with high churn scores (>0.7) who may be disengaging.
  • Assignment tracking: Assigns volunteers to tasks with duplicate and capacity checks.
  • LLM-powered messaging: Drafts personalized outreach, retention, and thank-you messages for volunteers using context from their profile and task details.

Server Functions

FunctionEndpointDescription
create_volunteervolunteer-matching/create-volunteerCreate a new volunteer profile
update_volunteervolunteer-matching/update-volunteerUpdate an existing volunteer
list_volunteersvolunteer-matching/list-volunteersList with search, status, and skill filters
get_volunteervolunteer-matching/get-volunteerFetch a single volunteer by ID
get_at_risk_volunteersvolunteer-matching/at-risk-volunteersList volunteers with churn_score > 0.7
create_taskvolunteer-matching/create-taskCreate a new campaign task
list_tasksvolunteer-matching/list-tasksList tasks with status and search filters
get_taskvolunteer-matching/get-taskFetch a single task by ID
match_taskvolunteer-matching/match-taskFind best-matching volunteers for a task
assign_volunteervolunteer-matching/assign-volunteerAssign a volunteer to a task
draft_messagevolunteer-matching/draft-messageGenerate a personalized volunteer message

Matching Algorithm

The volunteer-task matching uses a composite score:

score = 0.6 * skills_overlap + 0.4 * availability_score
  • Skills overlap: Count of matching skills divided by the number of required skills
  • Availability score: 1.0 if the volunteer status is active, 0.5 otherwise

Results are sorted by composite score descending. Already-assigned volunteers are excluded.

UI Components

  • Volunteers list page (/volunteers): Searchable, filterable table of all volunteers with status badges and churn indicators.
  • Volunteer detail page (/volunteers/:id): Full profile view with skills, availability, assignment history, and message drafting.
  • Tasks list page (/tasks): Task listing with status filters and assigned volunteer counts.
  • Task detail page (/tasks/:id): Task details with matching volunteer suggestions and one-click assignment.

Database Tables

  • volunteers -- volunteer profiles with skills (text[]), availability (jsonb), churn_score
  • tasks -- campaign tasks with required_skills (text[]), date ranges, capacity
  • assignments -- volunteer-to-task assignments with status tracking