IntelliPrep is an intelligent mock interview platform that combines Artificial Intelligence, Machine Learning, Computer Vision, Speech Analysis, and IoT to simulate real-world interview environments.
The system generates domain-specific interview questions, evaluates candidate responses, analyzes behavioral indicators such as posture, eye movement and voice confidence, and provides performance insights and personalized feedback.
- AI-assisted interview question generation and answer evaluation
- Technical and HR interview practice
- Voice confidence analysis
- Real-time posture and eye-movement analysis
- ESP32-based stress monitoring
- Performance scoring and feedback
- Supabase authentication and interview history
- React + Flask full-stack architecture
- Technical interview practice with topic and difficulty selection
- Rule-based question and answer evaluation
- AI-assisted answer feedback through optional providers
- Supabase authentication, session history, and badges
- Voice confidence analysis
- Posture and eye-movement analysis from camera frames
- Optional ESP32 stress sensor integration
Install the following before starting:
- Git
- Node.js 20.19+ or Node.js 22.12+
- npm
- Python 3.11 recommended
- A working C/C++ build environment may be required by some machine-learning dependencies
- A Supabase project for hosted authentication and database features
Node and Python versions can be checked with:
node --version
npm --version
python --versiongit clone https://github.com/PratikM15/IntelliPrep-AI_Powered_MockInterview_System.git
cd IntelliPrep-AI_Powered_MockInterview_SystemThe backend must be started from the backend directory because its imports and question paths use that directory as the working directory.
- Follow the schema and policy instructions in
DATABASE_SETUP.md.
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt
Copy-Item .env.example .envEdit backend/.env with real values. At minimum, set a strong EMAIL_TOKEN_SECRET if email verification or password recovery is enabled:
DATABASE_SETUP.md: Supabase schema and database setup
RESEND_API_KEY=re_your_real_resend_key
RESEND_FROM_EMAIL=your_verified_sender@example.com
Start the development server:
```powershell
python app.pyThe API runs at http://localhost:5000. Test its health endpoint:
Invoke-RestMethod http://localhost:5000/Expected response:
{"status":"Backend running"}The committed model files are in data/ and are referenced by backend/config.py. Do not delete them unless you provide replacement model files and update the configuration.
Open a second terminal at the repository root:
cd frontend
npm install
Copy-Item .env.example .envEdit frontend/.env:
VITE_API_BASE_URL=http://localhost:5000
VITE_HARDCODE_EMAIL_VERIFICATION=false
VITE_GEMINI_API_KEY=YOUR_GEMINI_API_KEY
VITE_OPENROUTER_API_KEY=YOUR_OPENROUTER_API_KEY
VITE_OPENROUTER_MODEL=openrouter/free
VITE_GROQ_API_KEY=YOUR_GROQ_API_KEY
VITE_GROQ_MODEL=llama-3.3-70b-versatileStart Vite:
npm run devOpen the URL printed by Vite, normally http://localhost:5173.
The browser must be allowed to access the camera and microphone. Production deployments need HTTPS for these browser permissions.
The frontend supports optional Gemini, OpenRouter, and Groq integrations. Add only the providers you intend to use. These VITE_* values are bundled into browser JavaScript, so use provider keys with appropriate browser restrictions and spending limits. Do not place server-only secrets in the frontend environment.
Run frontend checks from frontend/:
npm run lint
npm run buildRun the backend data and API checks from backend/:
python test_rule_api.py
python test_endpoint_responses.py
python test_api_endpoints.pyThe endpoint scripts validate local data and route behavior. They do not replace a full integration test against a running server and configured external services.
The simplest free-tier arrangement is Vercel for the frontend and Render for the backend.
Create a Render Web Service connected to this repository:
- Root directory:
backend - Build command:
pip install -r requirements.txt - Start command:
gunicorn --bind 0.0.0.0:$PORT app:app
Add these Render environment variables:
RESEND_API_KEY=your_real_resend_key
RESEND_FROM_EMAIL=your_verified_sender@example.com
EMAIL_TOKEN_SECRET=your_long_random_secret
EMAIL_TOKEN_TTL_SECONDS=3600
Copy the resulting backend URL, for example https://your-app.onrender.com.
Free backend instances may sleep when idle. TensorFlow and model loading can also require more memory than a small free instance provides. If the service runs out of memory, use a larger instance or move the model API to a machine-learning hosting service.
Create a Vercel project connected to this repository:
- Root directory:
frontend - Build command:
npm run build - Output directory:
dist
Add the frontend environment variables from frontend/.env.example, changing:
VITE_API_BASE_URL=https://your-app.onrender.com
Also update the Supabase Auth URL allowlist with the deployed callback URL:
https://your-frontend.vercel.app/auth/callback
After deployment, open the Vercel URL and test login, question loading, answer evaluation, and camera/microphone permissions.
.envfiles are ignored by Git; never commit real credentials.- Rotate any key that has accidentally been committed or shared.
- Use a unique, long
EMAIL_TOKEN_SECRETin production. - Restrict API keys and configure provider spending limits.
- Do not expose Supabase service-role keys in frontend code.
- Do not enable Flask debug mode in production; use Gunicorn as shown above.
Confirm that:
- The Flask server is running.
VITE_API_BASE_URLpoints to the backend URL without a trailing slash.- The browser console does not show a CORS or mixed-content error.
- The frontend was rebuilt after changing
.env.
Use localhost during development or HTTPS in production. Browser media permissions generally do not work on an ordinary HTTP deployment.
Confirm that the files in data/ exist and that the backend is started from backend/. Check backend/config.py if model locations have been changed.
CAMERA_TRACKING_GUIDE.md- camera tracking setupCAMERA_TRACKING_TROUBLESHOOTING.md- camera troubleshootingESP32_SETUP_GUIDE.md- ESP32 sensor setup infrontend/