| title | Predictiv Jee Backend |
|---|---|
| emoji | 🚀 |
| colorFrom | blue |
| colorTo | indigo |
| sdk | docker |
| pinned | false |
Predictiv-JEE is a full-stack, data-driven web application designed to help engineering aspirants in India predict their college admission chances. By leveraging 8 years of historical JoSAA/CSAB cutoff data (430,000+ rows), the platform uses Machine Learning to accurately predict future cutoffs and categorize colleges into Safe, Target, and Reach buckets based on a student's unique rank and demographic profile.
- Implemented split Random Forest Regressors (one for IITs, one for NIT/IIIT/GFTIs) to handle the fundamentally different rank scales of the Advanced vs. Mains exams.
- Engineered rigorous data pre-processing: purged "Opening Rank" to prevent inference-time data leakage, handled NaN inconsistencies, and standardized demographic strings across 8 years of scattered institutional data.
- Refactored the core data-loading engine to use Apache Parquet (PyArrow) instead of CSVs.
- This compressed the data size by ~90%, preserved strict column data types, and reduced the Pandas boot-up load time from seconds to milliseconds.
- Built a deeply optimized FastAPI server that pre-loads all serialized models (
.pkl), encoders, and Parquet data into RAM globally on boot. - When a user requests recommendations, the API dynamically filters the database, vectorizes the candidates, and performs batch ML predictions instantly.
- Built a modern, responsive UI using React, Vite, and Tailwind CSS.
- Dynamic Probability Engine: Developed a custom mathematical algorithm that translates ML cutoff margins into visual admission percentages (0-99%), rendered via interactive SVG progress rings.
- Historical Trend Charts: Integrated Recharts to plot 8-year historical closing rank trends per branch, beautifully overlaying the ML's future prediction.
Our Dual Random Forest models are strictly evaluated against actual historical cutoffs to ensure high precision in predictions.
This visualization demonstrates the correlation between the model's predictions and actual historical closing ranks. A tight alignment along the red dashed line indicates high accuracy. The IIT model shows exceptional precision, while the NIT+ model gracefully handles a much wider, noisier distribution of ranks.

The residual distribution measures prediction error (Actual - Predicted). Both models feature a sharp peak exactly at zero, confirming that the models are unbiased and do not systematically over-predict or under-predict.

By grouping prediction errors by admission year, I validate the model's stability over time. The models maintain strong consistency, correctly adapting to shifting admission patterns year over year.

----------------------------------------
IIT MODEL METRICS
----------------------------------------
Mean Absolute Error (MAE): 91.62 ranks
R-squared (R²): 0.9971
----------------------------------------
NIT/IIIT/GFTI MODEL METRICS
----------------------------------------
Mean Absolute Error (MAE): 1828.53 ranks
R-squared (R²): 0.9583
- Frontend: React.js, Vite, Tailwind CSS (v4), Recharts
- Backend API: Python, FastAPI, Uvicorn, Pydantic
- Machine Learning: Scikit-Learn, Pandas, NumPy
- Data Engineering: Apache Parquet
- Deployment: Dockerized architecture ready for PaaS/Cloud integration.
# Clone the repository
git clone https://github.com/MRupam202005/predictiv-jee.git
cd predictiv-jee
# Create and activate a virtual environment
python -m venv .venv
# Windows: .venv\Scripts\activate
# Mac/Linux: source .venv/bin/activate
# Install backend dependencies
pip install -r requirements.txt
# Boot the API server
uvicorn main:app --reloadThe API is now running at http://127.0.0.1:8000
# Open a new terminal instance
cd predictiv-jee/frontend
# Install Node dependencies
npm install
# Start the development server
npm run devThe Application is now live at http://localhost:5173