Skip to content

About

AI-powered IoT-based mock interview system for automated interview simulation, response evaluation, performance analysis, and personalized feedback.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IntelliPrep – AI-Powered IoT-Based Mock Interview System

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.

Key Highlights

  • 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

Features

  • 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

Requirements

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 --version

Clone the repository

git clone https://github.com/PratikM15/IntelliPrep-AI_Powered_MockInterview_System.git
cd IntelliPrep-AI_Powered_MockInterview_System

Backend setup

The backend must be started from the backend directory because its imports and question paths use that directory as the working directory.

Windows PowerShell

  1. 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 .env

Edit 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.py

The 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.

Frontend setup

Open a second terminal at the repository root:

cd frontend
npm install
Copy-Item .env.example .env

Edit 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-versatile

Start Vite:

npm run dev

Open 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.

Optional AI providers

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.

Validation

Run frontend checks from frontend/:

npm run lint
npm run build

Run the backend data and API checks from backend/:

python test_rule_api.py
python test_endpoint_responses.py
python test_api_endpoints.py

The endpoint scripts validate local data and route behavior. They do not replace a full integration test against a running server and configured external services.

Production deployment

The simplest free-tier arrangement is Vercel for the frontend and Render for the backend.

Deploy the backend to Render

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.

Deploy the frontend to Vercel

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.

Security

  • .env files are ignored by Git; never commit real credentials.
  • Rotate any key that has accidentally been committed or shared.
  • Use a unique, long EMAIL_TOKEN_SECRET in 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.

Troubleshooting

Frontend cannot reach the backend

Confirm that:

  1. The Flask server is running.
  2. VITE_API_BASE_URL points to the backend URL without a trailing slash.
  3. The browser console does not show a CORS or mixed-content error.
  4. The frontend was rebuilt after changing .env.

Camera or microphone is blocked

Use localhost during development or HTTPS in production. Browser media permissions generally do not work on an ordinary HTTP deployment.

Models fail to load

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.

Related documentation

  • CAMERA_TRACKING_GUIDE.md - camera tracking setup
  • CAMERA_TRACKING_TROUBLESHOOTING.md - camera troubleshooting
  • ESP32_SETUP_GUIDE.md - ESP32 sensor setup in frontend/

About

AI-powered IoT-based mock interview system for automated interview simulation, response evaluation, performance analysis, and personalized feedback.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages