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.
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.
| 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 |
- React 19 (with Vite)
- Tailwind CSS 4
- Framer Motion β Animations
- Recharts β Data visualization
- React Router β Navigation
- Node.js + Express.js
- MongoDB + Mongoose
- Firebase β Authentication
- Python + Flask
- scikit-learn β ML capabilities
- NumPy β Numerical computing
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
- Node.js 18+ β Download
- Python 3.9+ β Download
- MongoDB (optional) β Download or use MongoDB Atlas
cd SmartAllocate
npm installnpm run devOpens at http://localhost:5173
cd backend
npm install
npm run devRuns at http://localhost:5000
cd ml-service
pip install -r requirements.txt
python app.pyRuns at http://localhost:5001
cd ml-service
python train.pyThe 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) |
Total Score = (Skill Score Γ 0.5) + (Availability Score Γ 0.3) + (Location Score Γ 0.2)
Returns the top 3 best matches for any given task.
| 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 |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tasks |
List all tasks |
| POST | /api/tasks |
Create task |
| PUT | /api/tasks/:id |
Update task |
| 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 |
| Method | Endpoint | Description |
|---|---|---|
| POST | /match |
Find top 3 matches |
| POST | /score |
Score a specific pair |
| GET | /health |
Health check |
| GET | /stats |
Model configuration |
npm run build
# Deploy dist/ folder to Vercel# Push backend/ to a Git repo
# Connect to Render and set environment variables# Containerize with Docker and deploy to Cloud Run- Create free cluster at mongodb.com/atlas
- Update
MONGODB_URIin backend.env
MIT License β Free for personal and commercial use.
Made with π for Social Impact
SmartAllocate β Matching the right volunteers to the right tasks