Interview AI is a full-stack web app that generates personalized interview preparation reports from a target job description and a candidate resume/profile. It uses a React frontend, an Express/MongoDB backend, and Google Gemini to create technical questions, behavioral questions, skill-gap analysis, a day-wise preparation roadmap, and a tailored resume PDF.
- User registration, login, logout, and cookie-based authentication
- AI-generated interview reports based on resume, self-description, and job description
- Match score for the target role
- Technical and behavioral interview questions with answer guidance
- Skill-gap analysis with severity levels
- Day-wise preparation roadmap
- Recent interview report history
- AI-generated tailored resume PDF download
Frontend
- React
- Vite
- React Router
- Axios
- Sass
Backend
- Node.js
- Express
- MongoDB with Mongoose
- JWT authentication
- Multer file uploads
- Google GenAI SDK
- Puppeteer for PDF generation
.
+-- Backend
| +-- server.js
| +-- package.json
| +-- src
| +-- app.js
| +-- config
| +-- controllers
| +-- middlewares
| +-- models
| +-- routes
| +-- services
+-- Frontend
+-- package.json
+-- index.html
+-- src
+-- App.jsx
+-- app.routes.jsx
+-- features
+-- style.scss
- Node.js
- MongoDB database connection string
- Google GenAI API key
Create a .env file inside the Backend folder:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
GOOGLE_GENAI_API_KEY=your_google_genai_api_keyInstall backend dependencies:
cd Backend
npm installInstall frontend dependencies:
cd ../Frontend
npm installStart the backend server:
cd Backend
npm run devThe backend runs on:
http://localhost:3000
Start the frontend development server:
cd Frontend
npm run devThe frontend runs on:
http://localhost:5173
- Register or log in.
- Paste the target job description.
- Upload a resume PDF and/or enter a short self-description.
- Generate the interview strategy.
- Review the match score, interview questions, skill gaps, and preparation roadmap.
- Download a tailored resume PDF for the selected interview report.
POST /api/auth/register
POST /api/auth/login
GET /api/auth/logout
GET /api/auth/get-me
POST /api/interview/
GET /api/interview/
GET /api/interview/report/:interviewId
POST /api/interview/resume/pdf/:interviewReportId
- The frontend expects the backend to be available at
http://localhost:3000. - The backend CORS config allows requests from
http://localhost:5173. - Resume parsing currently uses PDF parsing on the backend, so PDF uploads are the safest supported format.