Project 8 of the GenAI Developer Roadmap 2026. An adaptive mock interview system with question generation, heuristic answer evaluation, session management, and progress tracking analytics.
Question Bank → Session Manager → Adaptive Engine
↓ ↓ ↓
Templates & Answer Submit → Difficulty
Generator Evaluation → Adjustment
Follow-ups Topic Focus
↓
Analytics & Reports
(Stats, Progress, Export)
Core models, question templates, and heuristic evaluation engine.
| Module | Purpose |
|---|---|
src/models/enums.py |
Difficulty, QuestionType, Role, AnswerRating, SessionStatus |
src/models/questions.py |
Question, QuestionBank (filter/search/serialize) |
src/models/answers.py |
Answer, EvaluationCriterion, AnswerEvaluation |
src/questions/templates.py |
17 curated templates: behavioral (4), technical (6), system design (3), coding (2), situational (2) |
src/questions/generator.py |
QuestionGenerator with filter, select, custom creation, follow-up generation |
src/evaluation/criteria.py |
Per-type evaluation criteria (relevance, completeness, clarity, STAR format, accuracy, etc.) |
src/evaluation/evaluator.py |
AnswerEvaluator with 14 heuristic scoring functions + optional LLM enhancement |
src/evaluation/feedback.py |
FeedbackFormatter with score bars, strengths/improvements, summary |
src/llm/client.py |
Multi-provider LLM client (OpenAI/Anthropic) with fallback |
Session management, conversation tracking, and adaptive difficulty.
| Module | Purpose |
|---|---|
src/session/models.py |
InterviewTurn, InterviewSession (status, scoring, duration tracking) |
src/session/manager.py |
SessionManager: create, submit answers, follow-ups, save/load JSON |
src/session/adaptive.py |
AdaptiveEngine: difficulty promotion/demotion, weak topic/type detection, performance trend |
src/session/conversation.py |
ConversationManager: message history, transcript formatting, serialization |
Performance statistics, progress tracking, and report generation.
| Module | Purpose |
|---|---|
src/analytics/stats.py |
PerformanceStats: averages, std dev, passing rate, breakdowns by difficulty/type/topic |
src/analytics/progress.py |
ProgressTracker: score timeline, improvement rate, moving average, topic mastery, streaks |
src/analytics/report.py |
ReportGenerator: summary report, session report, JSON export |
- No API keys required: All evaluation uses heuristic scoring (keyword overlap, STAR format detection, complexity analysis markers). LLM client is optional enhancement
- Adaptive difficulty: Promotes on avg >= 7.5, demotes on avg <= 4.0, with topic and question-type weakness detection
- 14 scoring heuristics: relevance, completeness, clarity, depth, structure, examples, STAR format, accuracy, correctness, complexity analysis, scalability, tradeoffs, practicality, leadership
- Deterministic selection: Seed-based question selection for reproducible sessions
- JSON persistence: Sessions save/load to disk for continuity
17 curated interview templates across 5 question types:
| Type | Count | Topics |
|---|---|---|
| Behavioral | 4 | teamwork, learning, growth, decision making |
| Technical | 6 | OS, distributed systems, data structures, databases, API design, SOLID |
| System Design | 3 | URL shortener, chat app, rate limiter |
| Coding | 2 | two sum, LRU cache |
| Situational | 2 | tech decisions, incident response |
8 supported roles: Software Engineer, Frontend, Backend, Data Engineer, ML Engineer, DevOps, Product Manager, Data Scientist.
# List available questions
python main.py list-questions --role software_engineer
# Start an interview session
python main.py start --role software_engineer --difficulty medium --questions 5
# View available topics
python main.py topics
# Generate performance report
python main.py report --input sessions.json --output report.json
# View statistics
python main.py statsWeek 1 — Question Bank & Evaluation: 143 tests passed
Week 2 — Sessions & Adaptive Flow: 89 tests passed
Week 3 — Analytics & Progress: 63 tests passed
──────────────────────────────────────────────────────
Total: 295 tests passed
All settings via environment variables (see src/config/settings.py):
| Variable | Default | Purpose |
|---|---|---|
DEFAULT_DIFFICULTY |
medium | Starting difficulty level |
QUESTIONS_PER_SESSION |
5 | Default questions per session |
MAX_FOLLOW_UPS |
2 | Max follow-up questions per turn |
ANSWER_MIN_LENGTH |
20 | Minimum answer length (chars) |
PASSING_SCORE |
6.0 | Score threshold for "passing" |
MAX_SCORE |
10.0 | Maximum possible score |
EVAL_TEMPERATURE |
0.3 | LLM evaluation temperature |