InterviewPilot is a full-stack MERN application that automates the complete interview lifecycle β from AI-generated questions to live coding rounds to detailed performance reports β and integrates natively with CareerSync, a job aggregation platform I built. Together, they form a production-grade, cross-platform hiring ecosystem built by a single developer.
π Live Demo Β Β·Β π½ Demo Video Β Β·Β π CareerSync (Sibling Project)
Most job platforms stop at the application stage. InterviewPilot picks up exactly where they leave off.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAREERSYNC (Platform 1) β
β Students browse jobs β Apply β Company shortlists candidate β
β β β
β Company clicks "Start Interview Process" π β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β REST API call (shared API secret)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INTERVIEWPILOT (Platform 2) β
β β
β π§ Invite email sent to student automatically β
β π€ Gemini AI generates role-specific questions from resume β
β π¬ Student completes HR + Technical rounds β
β π» Student solves live coding problem (Monaco Editor + Judge0) β
β π AI generates full performance report with roadmap β
β β β
β Score sent back to CareerSync automatically β
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β REST API callback
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAREERSYNC β Recruiter sees score on applicant panel β
β "Overall Score: 82/100 Β· View Full Report β" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
No human interviewer needed. No scheduling. No coordination. Fully automated.
- Google Gemini API generates personalized interview questions based on the candidate's actual resume and target role
- Gemini evaluates every answer in real time and returns a score (0β10) + constructive feedback
- After completion, Gemini produces a full performance report with strengths, weaknesses, and a personalized improvement roadmap
- Multi-key rotation pattern prevents rate limiting across concurrent sessions
- In-browser Monaco Editor (the same engine that powers VS Code)
- Supports JavaScript, Python, and C++
- Code is compiled and executed against hidden test cases via Judge0 API
- AI reviews the submitted code independently and gives code-quality feedback
- Socket.IO powers live updates β recruiters see candidate progress in real time as they answer each question
- No refresh needed:
session:startedβsession:progressβsession:completedevents stream live - Compare multiple candidates side-by-side with a built-in comparison view
- Shared
JWT_SECRETmeans a token from CareerSync is valid on InterviewPilot β zero re-authentication - Students enter the interview via a one-time invite link (no account creation required)
- After interview completes, scores are automatically pushed back to CareerSync via a secure callback API
- Both platforms communicate using a shared
INTERVIEWPILOT_API_SECRETβ not exposed to the client
- Downloadable PDF interview reports generated server-side with PDFKit
- Recruiters can download and share reports with hiring managers
| Technology | Purpose |
|---|---|
| React 19 + Vite | UI framework + build tool |
| Tailwind CSS | Utility-first styling |
| Framer Motion | Page transitions + micro-animations |
| Monaco Editor | In-browser VS Code-style code editor |
| Recharts | Score radar charts + analytics |
| Socket.IO Client | Real-time session updates |
| React Router v6 | Client-side routing |
| Technology | Purpose |
|---|---|
| Node.js + Express.js | REST API server |
| MongoDB + Mongoose | Database + ODM |
| Socket.IO | Real-time bidirectional events |
| JSON Web Tokens | Auth (shared secret with CareerSync) |
| Google Gemini API | Question generation + answer evaluation + report generation |
| Judge0 API | Remote code execution + test case evaluation |
| Resend API | Transactional invite emails |
| PDFKit | Server-side PDF report generation |
| pdf-parse | Resume PDF text extraction |
InterviewPilot/
βββ client/ # React + Vite frontend
β βββ src/
β βββ components/
β β βββ common/ # Navbar, Sidebar, Modal, Loader
β β βββ interview/ # QuestionCard, AnswerInput, Timer
β β βββ coding/ # CodeEditor, TestCasePanel, LanguageSelector
β β βββ report/ # ScoreCard, RadarChart, RoadmapSection
β β βββ recruiter/ # CandidateRow, CompareTable, StatusBadge
β βββ pages/ # 13 pages covering all user flows
β βββ context/ # AuthContext, InterviewContext
β βββ hooks/ # useSocket, useInterview
β βββ utils/ # axios instance, socket singleton
β
βββ server/ # Node.js + Express backend
βββ models/ # User, InterviewSession, PracticeSession
βββ routes/ # auth, interviews, recruiter, practice, careersync
βββ controllers/ # Business logic for each route group
βββ services/ # gemini, judge0, email, report, socket services
βββ middleware/ # JWT auth, API secret verification
βββ utils/ # Token generator, Gemini key rotator
InterviewPilot has three distinct auth flows by design:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. CareerSync Invite Flow (Most common) β
β Student receives email β clicks /interview/join/TOKEN β
β NO login required β invite token is the credential β
β Single-use, 48-hour expiry β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 2. Practice Mode (Standalone student) β
β Student registers/logs in on InterviewPilot β
β Standard JWT auth β /practice, /dashboard β
β Same JWT_SECRET as CareerSync = zero friction β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 3. Recruiter Login β
β Recruiter logs in at /recruiter/login β
β JWT with role: 'recruiter' β /recruiter/dashboard β
β Live Socket.IO room per session β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Node.js v18+
- MongoDB (local) or MongoDB Atlas account
- Google Gemini API key(s)
- Judge0 RapidAPI key
- Resend API key
git clone https://github.com/itsmrajguru/InterviewPilot.git
cd InterviewPilotcd server
npm install
cp .env.example .env
# Fill in your values in .env
npm run devcd client
npm install
# .env already present β update VITE_API_BASE_URL if needed
npm run devPORT=8000
MONGO_URI=mongodb://127.0.0.1:27017/InterviewPilot
JWT_SECRET=your_shared_jwt_secret
JWT_REFRESH_SECRET=your_refresh_secret
RESEND_API_KEY=re_your_key
FROM_EMAIL="InterviewPilot <hr@yourdomain.com>"
GEMINI_API_KEY_1=your_key_1
GEMINI_API_KEY_2=your_key_2
GEMINI_API_KEY_3=your_key_3
JUDGE0_API_KEY=your_rapidapi_key
JUDGE0_API_HOST=judge0-ce.p.rapidapi.com
INTERVIEWPILOT_API_SECRET=your_shared_secret_with_careersync
CAREERSYNC_BACKEND_URL=https://careersync-backend.onrender.com
CLIENT_URL=http://localhost:5173This project is part of a 3-project portfolio ecosystem:
| Project | Description | Status |
|---|---|---|
| CareerSync | Full-stack job aggregation platform (Internshala-style) | β Live |
| GuruAI | AI career consultant chatbot, integrated into CareerSync | β Live |
| InterviewPilot | AI interview platform, bridges with CareerSync | π§ In Development |
Mangesh Rajguru β Third-year Computer Engineering student from Pune, India.
Building production-grade full-stack systems independently β from database design and AI integration to real-time features and cross-platform API architecture.
InterviewPilot is built with β€οΈ as part of the CareerSync ecosystem.
If this project impressed you β the other two are live and deployed. Check them out.