A cutting-edge, AI-powered web application for mock interviews, enabling users to practice job interviews with AI-generated questions and receive detailed video analysis. Built using Google Vertex AI (Gemini-2.0-flash) and FastAPI, it offers realistic question generation, speech-to-text transcription, and performance feedback—ideal for job seekers and interview prep.
- Upload job description to generate tailored interview questions
- Record video responses with question overlays on canvas
- AI-driven video analysis with transcription, scoring, and feedback
- Analyzes body language, communication, and response clarity
- Responsive UI with dark/light mode support
- View session history and analytics in dashboard
- Secure storage with MongoDB Atlas
🖥️ Frontend | ⚙️ Backend | 🤖 AI & Storage |
---|---|---|
React.js | FastAPI | Google Vertex AI |
Ant Design (UI Library) | Uvicorn (ASGI) | Gemini-2.0-flash |
Axios (API Calls) | Python 3.12+ | MongoDB Atlas |
React Toastify | Pydantic |
git clone https://github.com/narender-rk10/ai-mock-interview.git
cd ai-mock-interview
cd backend
pip install requirements.txt
Create a .env
file and add in backend file:
MONGODB_URI=
SECRET_KEY=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
S3_BUCKET_NAME=
GEMINI_API_KEY=
GOOGLE_CLOUD_PROJECT=
Create folder credentials inside app\services and add your google credentials json file
Run the server:
uvicorn app.main:app --reload
Create a .env
file and add in frontend:
REACT_APP_API_URL=http://localhost:8000
cd frontend
npm install
npm start
Access at http://localhost:3000
.
-
POST
/interview/generate-questions
- Input:
job_description
,difficulty
,num_questions
- Output: List of questions, session ID
- Input:
-
POST
/interview/upload-video
- Input:
file
(video),session_id
- Output: Analysis results
- Input:
/frontend # React + Ant Design UI
/backend # FastAPI + Vertex AI + MongoDB
/screenshots # UI screenshots
Pull requests are welcome! For major changes, open an issue to discuss. Ensure code follows project style and includes tests.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.