The Resume Ranking System parses, analyzes, and ranks resumes against company hiring criteria. The system has migrated from a legacy Node.js/Mongoose REST API to a Python FastAPI service integrated with Supabase (PostgreSQL).
The system consists of three main components:
- Frontend: A React-based Single Page Application (SPA) styled with Tailwind CSS and enhanced with Framer Motion animations.
- Backend Engine: A Python-based FastAPI application serving asynchronous HTTP requests. It processes NLP tasks natively, avoiding the overhead of external OS sub-processes.
- Database: Supabase PostgreSQL for relational tracking of companies, resume data, and computed rankings.
Candidates can upload resumes in .pdf or .docx format. The backend extracts text, runs the evaluation models, and returns the processing result.
Displays criteria (such as minimum CPI, preferred technologies, and core subjects) for engineering companies, sourced from the BTech_Companies_NLP dataset.
Once analyzed, candidates can view their parsed resume details (Education, Experience, Project Keywords) along with a ranked leaderboard matching them with active companies based on score alignment.
In earlier versions, rendering the analysis dashboard triggered over 300 sequential database queries. This was resolved by implementing bulk fetches using Supabase .in_() filters. The /api/resumes/{uid} endpoint resolves ranked company metadata in a single batch query, reducing response times from seconds to milliseconds.
Previously, spaCy operations ran in an independent Node.js child-process shell per upload. Moving the REST API to Python allows the models to be loaded and cached in RAM on boot, eliminating initialization latency for subsequent uploads.
Run the frontend and backend services in separate terminal sessions.
cd client
npm startThe frontend runs on http://localhost:3000.
cd server
python -m venv venv
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
# source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 5000The backend runs on http://127.0.0.1:5000.
Ensure the server/.env file is configured with your SUPABASE_URL and SUPABASE_SERVICE_KEY.
| Name | Role | Contributions |
|---|---|---|
| Aditya Onam (@AdityaOnam) | Model Designer | - Led the development of the weighted scoring algorithm - Implemented the core ranking system architecture - Generated data for model training |
| Aditya Gupta (@code-epic-adi) | Data Engineer | - Implemented resume data extraction and preprocessing - Developed the PDF text extraction system - Implemented data validation and cleaning processes - Generated data for model training |
| Varada Patel | NLP Engineer | - Developed the skill extraction system - Implemented text similarity analysis - Enhanced keyword extraction using TF-IDF - Optimized NLP processing performance |
| Kushal Kesherwani (@Krishal23) | Deployment Engineer | - Developed the React.js frontend - Implemented the real-time ranking dashboard - Created responsive UI components - Integrated NLP components with the Node.js backend - Integrated MongoDB for efficient data storage |



