--- title: AI Interview Mentor emoji: 🎯 colorFrom: indigo colorTo: purple sdk: docker pinned: false --- # AI Interview Mentor **Live at → https://adesh01-ai-interview-mentor.hf.space** An AI-powered mock interview platform for students and instructors. Instructors upload question banks, students take adaptive AI interviews and receive scored feedback. ## Demo Credentials | Role | Email | Password | |---|---|---| | Instructor | adeshboudh16@gmail.com | Adesh@123 | | Student | adesh@gmail.com | adesh@123 | ## Features - **Instructor portal** — create batches, invite students via class code, manage topics, upload question banks via CSV, lock/unlock topics - **Student interviews** — AI asks up to 5 questions per session, adapts with follow-up questions on shallow answers, randomised question order each time - **Scored reports** — LLM judge evaluates the full Q&A transcript and produces a score (0–100), summary, and improvement tips - **Gemini + Groq fallback** — Gemini 2.0 Flash as primary LLM, Groq Llama 3.3 70B as automatic fallback - **Persistent sessions** — LangGraph + PostgreSQL checkpointing resumes interrupted interviews ## How It Works 1. Instructor signs up, creates a batch, and shares the class code 2. Instructor uploads a CSV question bank and unlocks topics for interviews 3. Student signs up with the class code and picks a topic to interview on 4. AI conducts up to 5 turns — asking, evaluating, and probing deeper on weak answers 5. Interview ends with an inline score and summary; full history saved to the dashboard ## Tech Stack | Layer | Technology | | -------- | ---------------------------------------------------------- | | Frontend | React 19, TypeScript, Tailwind CSS v3, Zustand | | Backend | FastAPI, LangGraph, asyncpg | | Database | NeonDB (PostgreSQL + JSONB) | | LLM | Gemini 2.0 Flash (primary) / Groq Llama 3.3 70B (fallback) | | Auth | Custom JWT (HS256, 15 min access + 7 day refresh) | | Deploy | Docker on Hugging Face Spaces (port 7860) | ## Environment Variables Set these as secrets in HF Spaces → Settings → Variables and secrets: | Variable | Description | | ---------------- | ---------------------------------------------------------------------------------------- | | `NEON_DB_URL` | NeonDB PostgreSQL connection string | | `JWT_SECRET` | Random secret, min 32 chars (`python -c "import secrets; print(secrets.token_hex(32))"`) | | `GEMINI_API_KEY` | Google AI Studio API key | | `GROQ_API_KEY` | Groq API key (fallback LLM) | | `APP_URL` | Deployed Space URL, e.g. `https://adesh01-ai-interview-mentor.hf.space` | ## Local Development ```bash make install # install all backend + frontend deps make schema # apply DB schema (run once on fresh DB) make dev # start backend on :7860 with auto-reload make frontend # start frontend dev server on :5173 make test # run pytest suite ``` ## Docker ```bash make build # build frontend + Docker image make docker-run # run container with .env on localhost:7860 # Reset DB and re-apply schema (wipes all data + checkpoints) make clean-db ``` > **CSV upload** — use the Instructor portal → Upload page. Format: `question_text,difficulty` (difficulty: easy / medium / hard). A sample file is at `docs/question_bank/linear_regression.csv`. --- ## Future Scope The current version is a working MVP. A full-scale production version would include: ### 1. Text-to-Speech & Speech-to-Text Replace the text chat with a real voice interview experience. The AI interviewer speaks questions aloud (TTS via ElevenLabs or Google Cloud TTS), and students respond by speaking (STT via Whisper or Google Speech-to-Text). This makes the interview feel closer to an actual job interview and removes typing as a bottleneck for non-native speakers. ### 2. Camera Monitoring Integrate webcam monitoring using computer vision (MediaPipe or AWS Rekognition) to detect: - Eye movement and gaze direction (focus/distraction signals) - Facial expressions (confidence, hesitation) - Tab-switching or browser focus loss Results feed into the report as a "behaviour score" alongside the content score. ### 3. Dynamic Report Generation at Scale The current report is a single LLM call on a 5-turn transcript. At scale this would become: - A multi-agent report pipeline — one agent scores content, one scores communication, one compares against role benchmarks - Historical trend charts (score over multiple attempts) - Peer percentile ranking within a batch - Instructor analytics aggregated across hundreds of students ### 4. Code Editor Support For technical interviews (DSA, system design), embed an in-browser code editor (Monaco Editor / CodeMirror) with: - Live code execution (sandboxed via Piston API or Judge0) - AI reviewing both the verbal explanation and the submitted code - Support for 20+ languages with syntax highlighting and test case runner ### 5. Multi-Domain Scaling The current question bank is CSV-uploaded per topic. At scale this becomes a curated, versioned question library across domains: - **Software Engineering** — Java, Python, Go, DevOps, Kubernetes, AWS - **Data Science** — ML, Statistics, SQL, Spark - **Management** — Product Management, Business Analysis, Finance - AI-generated question variations to prevent question leakage between students --- ## Scaling to Industry Level — Cost Estimate | Component | Current (MVP) | Industry Scale (10k DAU) | | ------------------ | ----------------------- | ------------------------------------------------------------ | | Hosting | HF Spaces (free) | AWS ECS / GCP Cloud Run — ~$300–800/mo | | Database | NeonDB free tier | NeonDB Business / RDS PostgreSQL — ~$200–500/mo | | LLM (interviews) | Gemini free / Groq free | Gemini Flash API at scale — ~$0.075/1M tokens → ~$150–400/mo | | LLM (reports) | Same | GPT-4o or Claude Sonnet for judge calls — ~$100–300/mo | | TTS/STT | — | ElevenLabs + Whisper API — ~$200–600/mo | | Camera AI | — | AWS Rekognition or custom CV model — ~$100–300/mo | | CDN / Storage | — | CloudFront + S3 for recordings — ~$50–150/mo | | **Total estimate** | **~$0** | **~$1,100–3,050/mo** | **Key scaling decisions:** - Move from a single Docker container to microservices — interview engine, report engine, and media processing run independently and scale separately - Use a message queue (Redis / SQS) between the interview API and the LLM workers to handle burst traffic without dropping requests - Separate read replicas for analytics queries so instructor dashboards don't compete with live interview sessions - Rate-limit LLM calls per student to control cost — a hard budget cap per institution is essential at B2B scale