Skip to content

AI-powered platform that recommends scholarships, exams, and olympiads based on student profiles using machine learning.

License

Notifications You must be signed in to change notification settings

somyadipghosh/MeritMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Typing SVG

πŸ“‘ Table of Contents


✨ Features

πŸŽ“ Smart Scholarship Recommendations
Neural ranking with rule-based fallback β€” personalized to each student's profile
πŸ“ Intelligent Exam Matching
Eligibility filtering + suitability scoring + neural blending for exam recommendations
πŸ” Semantic Search
Search scholarships by meaning, not just keywords
⚑ Pre-trained Models Included
Trained artefacts (.keras) and preprocessors (.pkl) ship with the repo β€” no retraining needed
πŸ“Š Real-time Stats Dashboard
Live scholarship + exam statistics via combined API endpoints

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Diversion 2k26                               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Frontend (React+Vite)  β”‚         Backend (FastAPI+Uvicorn)        β”‚
β”‚   http://localhost:5173  β”‚         http://localhost:8000            β”‚
β”‚                          β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  Pages           β”‚    β”‚   β”‚  Model Service                 β”‚    β”‚
β”‚  β”‚  β”œβ”€ Home         β”‚    β”‚   β”‚  β”œβ”€ Scholarship Recommender    β”‚    β”‚
β”‚  β”‚  β”œβ”€ Scholarships │────┼──▢│  β”œβ”€ Exam Recommender          β”‚    β”‚
β”‚  β”‚  β”œβ”€ Exams        β”‚    β”‚   β”‚  β”œβ”€ Text Matcher               β”‚    β”‚
β”‚  β”‚  β”œβ”€ Olympiads    β”‚    β”‚   β”‚  └─ Classifier                 β”‚    β”‚
β”‚  β”‚  └─ Dashboard    β”‚    β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚                  β”‚                      β”‚
β”‚                          β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚   /api/* ────────────────┼──▢│  Saved Models (.keras)         β”‚    β”‚
β”‚                          β”‚   β”‚  Saved Preprocessors (.pkl)     β”‚    β”‚
β”‚                          β”‚   β”‚  Data Files (JSON / CSV)        β”‚    β”‚
β”‚                          β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Layer Technology
Frontend React 19, Vite 7, Tailwind CSS 4, React Router, Axios
Backend FastAPI, Uvicorn, Pydantic
ML / Data TensorFlow / Keras, scikit-learn, pandas, NumPy
Dev Tooling ESLint, PostCSS, Vite HMR

πŸ“ Repository Structure

Click to expand full tree
Diversion2k26/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app.py               ← FastAPI server (port 8000)
β”‚   β”œβ”€β”€ model_service.py     ← Loads models & handles inference
β”‚   └── requirements.txt
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/           ← Route-level page components
β”‚   β”‚   β”œβ”€β”€ components/      ← Shared UI components
β”‚   β”‚   └── services/api.js  ← Axios API client
β”‚   β”œβ”€β”€ vite.config.js       ← /api proxy β†’ localhost:8000
β”‚   └── package.json
β”œβ”€β”€ model/
β”‚   β”œβ”€β”€ train_models.py      ← Full training pipeline
β”‚   β”œβ”€β”€ quickstart.py        ← Quick train shortcut
β”‚   β”œβ”€β”€ saved_models/        ← Pre-trained .keras files
β”‚   └── saved_preprocessors/ ← Serialized .pkl preprocessors
β”œβ”€β”€ data/                    ← Scholarship & exam datasets
β”œβ”€β”€ verify_system.py         ← Project health checker
└── README.md

πŸš€ Quick Start

Prerequisites: Python 3.9+ Β· Node.js 18+ Β· npm 9+

1️⃣ Clone the repo

git clone https://github.com/somyadipghosh/Diversion2k26_private.git
cd Diversion2k26

2️⃣ Start the backend

cd backend
pip install -r requirements.txt
python app.py
URL Description
http://localhost:8000 API base
http://localhost:8000/docs Swagger / Interactive docs
http://localhost:8000/health Health check

3️⃣ Start the frontend

cd frontend
npm install
npm run dev

Open http://localhost:5173 in your browser.

Vite automatically proxies all /api/* requests from the frontend to http://localhost:8000.


πŸ”€ User Flows

πŸŽ“ Scholarship Flow
User visits /scholarships or /all-scholarships
        ↓
Frontend sends profile β†’ POST /api/recommend
        ↓
Backend model service:
  β”œβ”€ [Model loaded]  β†’ Neural recommender scoring
  └─ [Fallback]      β†’ Heuristic rule-based scoring
        ↓
Frontend displays ranked scholarships with match score
πŸ“ Exam Flow
User visits /exams
        ↓
Frontend sends student profile β†’ POST /api/exams/recommend
        ↓
Backend exam pipeline:
  β”œβ”€ Step 1: Eligibility filtering
  β”œβ”€ Step 2: Rule-based suitability scoring
  └─ Step 3: Neural score blending (if model available)
        ↓
Frontend displays ranked exams + score breakdown

πŸ“‘ API Reference

Core Endpoints
Method Endpoint Description
GET / Service metadata
GET /health Health status (scholarship + exam systems)
GET /api/combined-stats Aggregated stats
Scholarship Endpoints
Method Endpoint Description
POST /api/recommend Personalized scholarship recommendations
POST /api/search Semantic scholarship search
GET /api/search/{query} Search (GET variant)
POST /api/classify Scholarship text classification
GET /api/stats Scholarship statistics
GET /api/categories All scholarship categories
GET /api/scholarships/all Paginated scholarship list
Exam Endpoints
Method Endpoint Description
POST /api/exams/recommend Personalized exam recommendations
GET /api/exams/all Paginated exam list with filters
GET /api/exams/stats Exam statistics

πŸ“– Full request/response schemas live in the interactive Swagger docs when the backend is running.


🧠 Model Training

Only needed if you want to retrain models from scratch. Pre-trained artefacts are already in the repo.

cd model
pip install -r requirements.txt

# Quick start (recommended)
python quickstart.py

# Full pipeline
python train_models.py
Training output directories
model/
β”œβ”€β”€ saved_models/        ← .keras model files
β”œβ”€β”€ saved_preprocessors/ ← .pkl preprocessors
β”œβ”€β”€ training_logs/       ← JSON training summary
└── plots/               ← Training curves

πŸ” Verification

Run the built-in project health checker from the repo root:

python verify_system.py

πŸ’‘ Development Tips

Tip Detail
Backend hot-reload Uvicorn runs with reload=True β€” save a file, see changes instantly
Frontend HMR Vite Hot Module Replacement keeps the browser in sync
API not reachable? Check backend is on 8000, frontend on 5173, and proxy config in frontend/vite.config.js
Auth pages /auth and /dashboard are demo-level UI β€” no real auth service is wired up yet

🀝 Contributing

Contributions are welcome! πŸŽ‰

1. Fork the repository
2. Create your feature branch  β†’  git checkout -b feature/your-feature
3. Commit your changes         β†’  git commit -m "feat: add your feature"
4. Push to the branch          β†’  git push origin feature/your-feature
5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License.


Built with ❀️ for Diversion 2k26

About

AI-powered platform that recommends scholarships, exams, and olympiads based on student profiles using machine learning.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors