A resume-personalized mock interview platform built with Streamlit, spaCy, and Google Gemini.
- Resume-based profile extraction (spaCy + keyword analysis)
- Interview modes: HR / behavioral, technical, or mixed
- Optional job description (JD) with dynamic role-fit analysis
- JD-driven questions when a job description is provided
- Instant answer scoring with STAR coaching for behavioral answers
- Weak-area drill sessions with combined main + drill reports
- Progress dashboard with charts, narrative insights, and PDF export
- Session history with report regeneration for legacy sessions
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -r requirements.txt
copy .env.example .env # Windows — use cp on macOS/Linux
# Add your GEMINI_API_KEY to .env
streamlit run main.pyThe spaCy English model (en_core_web_sm) is installed automatically from requirements.txt — you do not need to run python -m spacy download separately.
| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY |
Yes | Google Gemini API key |
DATABASE_URL |
No | Defaults to SQLite locally |
GEMINI_MODEL |
No | Primary model (default: gemini-2.5-flash-lite) |
GEMINI_MODEL_FALLBACKS |
No | Comma-separated fallback models |
See .env.example for a full template.
| Environment | Database | Configuration |
|---|---|---|
| Local development (default) | SQLite | DATABASE_URL=sqlite:///./ai_interviewer.db |
| Production / deployment | PostgreSQL | DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/dbname |
No application code changes are required. SQLAlchemy handles both backends. Tables are created automatically on first run.
- Used when
DATABASE_URLis unset or points to SQLite - Data stored in
ai_interviewer.dbin the project folder - Best for development and single-user local use
Use PostgreSQL when deploying to Streamlit Cloud or any shared server.
main.py Home — upload resume, JD, session settings
pages/1_Interview.py Live Q&A session
pages/2_Results.py Session summary + drill launch
pages/3_Report.py Full report + PDF (loads from DB)
pages/4_History.py Past sessions
pages/5_Progress.py Charts, narrative, progress PDF
app_state.py Session state and interview lifecycle
services/ Business logic (scoring, JD, PDF, charts)
services/report_loader.py Rebuilds legacy + combined drill reports from DB
models/ SQLAlchemy schema
db/repository.py Database access layer
config.py Environment configuration
Open source for educational and portfolio use.