Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

92 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✈️ InterviewPilot

AI-Powered Interview Platform β€” End-to-End Interview Automation

React Vite Node.js Express MongoDB Google Gemini Socket.IO


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)


🧠 The Big Idea β€” Cross-Platform Hiring Ecosystem

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.


⚑ Feature Highlights

πŸ€– AI-Driven Interview Engine

  • 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

πŸ’» Live Coding Round

  • 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

πŸ“‘ Real-Time Recruiter Dashboard

  • 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:completed events stream live
  • Compare multiple candidates side-by-side with a built-in comparison view

πŸ”— CareerSync Integration (Cross-Platform)

  • Shared JWT_SECRET means 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

πŸ“„ PDF Reports

  • Downloadable PDF interview reports generated server-side with PDFKit
  • Recruiters can download and share reports with hiring managers

πŸ›  Tech Stack

Frontend

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

Backend

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

πŸ—‚ Project Structure

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

πŸ” Authentication Architecture

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                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB (local) or MongoDB Atlas account
  • Google Gemini API key(s)
  • Judge0 RapidAPI key
  • Resend API key

1. Clone the repository

git clone https://github.com/itsmrajguru/InterviewPilot.git
cd InterviewPilot

2. Set up the backend

cd server
npm install
cp .env.example .env
# Fill in your values in .env
npm run dev

3. Set up the frontend

cd client
npm install
# .env already present β€” update VITE_API_BASE_URL if needed
npm run dev

Environment Variables (server .env)

PORT=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:5173

🀝 Related Projects

This 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

πŸ‘¨β€πŸ’» About the Developer

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.

GitHub LinkedIn


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.

About

InterviewPilot is the AI-powered interview platform of the CareerSync ecosystem. It conducts role-specific technical interviews, generates dynamic AI questions, tracks candidate performance, manages interview workflows, and securely returns evaluation results to CareerSync.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages