InternOdyssey is an intelligent resume matching platform that uses a hybrid approach combining AI and rule-based fairness mechanisms to connect the right candidates with the right opportunities. The system employs natural language processing and semantic matching to go beyond traditional keyword-based approaches, ensuring more meaningful connections between candidates and internship opportunities.
- Embeddings-Based Semantic Matching: Implemented Sentence Transformer (all-MiniLM-L6-v2) for deep semantic understanding of resumes and job descriptions
- Multi-Dimensional Analysis: Created vector space representations capturing skills, projects, achievements, and objectives in unified embeddings
- Semantic Skill Alignment: Developed algorithm to match conceptually similar skills despite different phrasing (e.g., "chatbot development" → "LLM fine-tuning")
- Hybrid AI + Rule-Based Scoring System: Combined semantic matching (30%) with skill-based matching (50%), location factors (10%), and fresher status (10%)
- Social Inclusion Mechanisms: Engineered bonus scoring for candidates from rural areas (+0.1) and reserved categories (+0.05-0.1)
- Quota-Aware Selection Algorithm: Built configurable quota system for Rural/SC/ST candidates, balancing diversity and merit
- Cloud-Ready Architecture: Optimized for deployment on Kaggle/Cloud GPU environments with <100MB model footprint
- High-Performance Processing: Implemented batch embedding generation for rapid processing of thousands of resumes
- Real-Time Capabilities: Integrated Ngrok for exposing services, enabling near real-time candidate selection
- Certificate Verification System: Designed and implemented authentication layer to validate educational and skill certificates
- Transparency Mechanisms: Built explainable scoring system providing detailed score breakdown for each candidate match
- Responsive Dashboard: Created intuitive interface with React and TailwindCSS for both resume upload and custom internship entry
- Interactive Visualization: Developed dynamic candidate tables with sorting and filtering capabilities
- Data Export Functionality: Implemented one-click CSV export for match results
Follow these steps to run the full system (Python backend via Kaggle, Node.js backend, and the React frontend). Commands shown are PowerShell-friendly.
- Start the Python backend service (Kaggle notebook)
- Open the Kaggle notebook: https://www.kaggle.com/code/prabakaransb/internodyssey-kaggle
- Run all cells in the notebook. The notebook starts a Python service and exposes it using ngrok; wait a few minutes until you see the ngrok public URL output in the notebook.
- Start the Node.js backend (local)
Open a terminal (PowerShell) and run:
cd backend
node index.jsNotes:
- Ensure Node.js (>=14) and npm are installed. If you prefer, use
npm run startif you add an npm script. - If the Python Kaggle service exposed a public ngrok URL, update any frontend or backend configuration to point to that URL if cross-origin requests are required.
- Start the frontend development server
Open a new terminal (PowerShell) and run:
cd frontend
npm install # run once to install dependencies
npm run devThe Vite dev server will print a local address (for example http://localhost:5173). Open that address in your browser to use the app. If your frontend needs to call the Python/ngrok backend, use the public ngrok URL produced by the Kaggle notebook or configure a proxy.
- Troubleshooting & tips
- If you see CORS errors, either configure CORS on the backend (Node or Python) or use the ngrok public URL for both services so requests come from the same origin.
- If the Node backend needs environment variables, create a
.envfile inbackend/(example: PORT=3000) and load them with a package likedotenv. - To stop services: Ctrl+C in the terminal where they run. For Kaggle-hosted notebooks, stop the running notebook / kernel.
- Optional: local-only mode (no Kaggle/ngrok)
- If you'd rather run the Python service locally, ensure you have Python and required packages installed. See
py/bc.pyfor processing helpers. You may need to adapt the notebook startup code into a local script and run it with Python.
If you want, I can:
- Add a small
scripts/start-all.ps1PowerShell script to start both backends and the frontend for local development. - Add a short
backend/README.mdwith environment variable examples.
- Scale: Capable of processing thousands of resumes in minutes
- Accuracy: Significantly improved match quality over keyword-based systems
- Fairness: Balanced merit with inclusivity through configurable quota system
- Transparency: Provided clear explanations for candidate selection decisions