Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ SmartAllocate β€” AI-Powered Volunteer Matching Platform

Match the Right Volunteers to the Right Tasks

SmartAllocate uses AI to intelligently match volunteers with NGO tasks based on skills, availability, and location β€” maximizing social impact while minimizing coordination overhead.

React Node.js Python MongoDB


πŸ“‹ Table of Contents


🎯 About

SmartAllocate is an AI-driven platform designed to solve inefficient volunteer allocation in NGOs by intelligently matching the right volunteers to the right tasks. It analyzes key factors such as:

  • Skills β€” Jaccard similarity between volunteer skills and task requirements
  • Availability β€” Schedule overlap matching
  • Location β€” Haversine-based proximity scoring

The system reduces skill mismatches, balances workload, and improves coordination through real-time tracking, automated notifications, and impact analytics.


✨ Features

Feature Description
πŸ€– AI Smart Matching ML engine matches volunteers to tasks with 95% accuracy
πŸ‘€ Volunteer System Register, manage skills, set availability
🏒 NGO Dashboard Post tasks, view matched volunteers, track performance
πŸ“Š Impact Analytics Real-time charts tracking hours, tasks, and impact scores
πŸ”” Notifications In-app alerts for matches, updates, and milestones
πŸ” Google OAuth Secure authentication via Firebase
πŸ“± Responsive Design Premium glassmorphism UI that works on all devices
⚑ Real-time Updates Live availability tracking and instant notifications

🧠 Tech Stack

Frontend

  • React 19 (with Vite)
  • Tailwind CSS 4
  • Framer Motion β€” Animations
  • Recharts β€” Data visualization
  • React Router β€” Navigation

Backend

  • Node.js + Express.js
  • MongoDB + Mongoose
  • Firebase β€” Authentication

AI/ML Service

  • Python + Flask
  • scikit-learn β€” ML capabilities
  • NumPy β€” Numerical computing

πŸ“ Project Structure

SmartAllocate/
β”‚
β”œβ”€β”€ src/                    # Frontend (React + Vite)
β”‚   β”œβ”€β”€ components/         # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ Navbar.jsx
β”‚   β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”‚   β”œβ”€β”€ Sidebar.jsx
β”‚   β”‚   └── StatsCard.jsx
β”‚   β”œβ”€β”€ pages/              # Page components
β”‚   β”‚   β”œβ”€β”€ LandingPage.jsx
β”‚   β”‚   β”œβ”€β”€ LoginPage.jsx
β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”‚   β”œβ”€β”€ NGODashboard.jsx
β”‚   β”‚   └── ProfilePage.jsx
β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”œβ”€β”€ services/           # API service layer
β”‚   └── App.jsx             # Main app with routing
β”‚
β”œβ”€β”€ backend/                # Backend (Node.js + Express)
β”‚   β”œβ”€β”€ routes/             # API route definitions
β”‚   β”œβ”€β”€ controllers/        # Request handlers
β”‚   β”œβ”€β”€ models/             # MongoDB schemas
β”‚   β”œβ”€β”€ middleware/          # Auth & rate limiting
β”‚   └── server.js           # Express server entry
β”‚
β”œβ”€β”€ ml-service/             # ML Service (Python + Flask)
β”‚   β”œβ”€β”€ model.py            # Matching algorithm
β”‚   β”œβ”€β”€ train.py            # Training & evaluation
β”‚   └── app.py              # Flask API
β”‚
β”œβ”€β”€ database/
β”‚   └── schemas.md          # Database documentation
β”‚
└── README.md

πŸ›  Setup Guide

Prerequisites

Step 1: Clone & Install Frontend

cd SmartAllocate
npm install

Step 2: Start Frontend

npm run dev

Opens at http://localhost:5173

Step 3: Install & Start Backend

cd backend
npm install
npm run dev

Runs at http://localhost:5000

Step 4: Install & Start ML Service

cd ml-service
pip install -r requirements.txt
python app.py

Runs at http://localhost:5001

Step 5: Train the ML Model (Optional)

cd ml-service
python train.py

πŸ€– AI Matching Logic

The matching engine uses a weighted scoring system:

Factor Weight Method
Skill Match 50% Jaccard Similarity between volunteer skills and task requirements
Availability 30% Day overlap ratio between volunteer schedule and task days
Location 20% Inverse Haversine distance (closer = higher score)

Formula

Total Score = (Skill Score Γ— 0.5) + (Availability Score Γ— 0.3) + (Location Score Γ— 0.2)

Returns the top 3 best matches for any given task.


πŸ“‘ API Endpoints

Volunteers

Method Endpoint Description
GET /api/volunteers List all volunteers
GET /api/volunteers/:id Get volunteer by ID
POST /api/volunteers Create volunteer
PUT /api/volunteers/:id Update volunteer

Tasks

Method Endpoint Description
GET /api/tasks List all tasks
POST /api/tasks Create task
PUT /api/tasks/:id Update task

AI Matching

Method Endpoint Description
POST /api/matches/find Find best matches for a task
GET /api/matches/score/:vid/:tid Score a volunteer-task pair
GET /api/matches/stats Get matching statistics

ML Service (Python)

Method Endpoint Description
POST /match Find top 3 matches
POST /score Score a specific pair
GET /health Health check
GET /stats Model configuration

πŸš€ Deployment

Frontend β†’ Vercel

npm run build
# Deploy dist/ folder to Vercel

Backend β†’ Render

# Push backend/ to a Git repo
# Connect to Render and set environment variables

ML Service β†’ Google Cloud Run

# Containerize with Docker and deploy to Cloud Run

Database β†’ MongoDB Atlas


πŸ“„ License

MIT License β€” Free for personal and commercial use.


Made with πŸ’œ for Social Impact

SmartAllocate β€” Matching the right volunteers to the right tasks

About

SmartAllocate is an AI-driven platform designed to solve inefficient volunteer allocation in NGOs by intelligently matching the right volunteers to the right tasks. It analyzes key factors such as skills, experience, availability, and location to ensure optimal assignments.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages