The backend is a FastAPI service that manages authentication, profile/preferences, interview session orchestration, AI-based question/evaluation generation, speech-to-text processing, and analytics endpoints.
- FastAPI (modular routers)
- Pydantic models and schema validation
- DynamoDB abstraction layer (
aws_client) with in-memory fallback patterns - AWS Bedrock and fallback providers for content/evaluation generation
- STT adapter for audio transcription
src/main.py: app bootstrap, middleware, router registrationsrc/auth/*: auth and consent routes/securitysrc/profile/routes.py: preferences, preparation, suggested interviewsrc/session_engine/*: session lifecycle, adaptive question flow, state transitionssrc/ai_evaluator/*: rubric prompts, scoring, structured feedbacksrc/stt_adapter/service.py: audio transcription pipelinesrc/analytics/routes.py: progress/insights/leaderboard
POST /api/v1/sessionscreate interview sessionPOST /api/v1/sessions/{session_id}/startstart session + first questionPOST /api/v1/sessions/{session_id}/questions/nextgenerate next adaptive questionPOST /api/v1/sessions/{session_id}/questions/{question_id}/answersubmit answer (text/audio)POST /api/v1/sessions/{session_id}/completecomplete and summarize sessionGET /api/v1/sessions/{session_id}/summaryfetch final summaryGET /api/v1/analytics/progressand/insights
- Create session with mode + starting difficulty.
- Start session and transition state from
INITtoASK_QUESTION. - Generate first question (Bedrock/content generator fallback).
- Accept answer input (text or transcribed audio).
- Evaluate answer using rubric-based AI evaluator.
- Update adaptive difficulty and produce next question.
- Complete session and generate summary/action plan.
High-level system workflow used by backend and frontend together:
The following screens are powered by backend session/evaluation/analytics APIs:
- Client sends authenticated request.
- Auth/security dependency resolves current user.
- Route handler validates request payload and session ownership.
- Service layer invokes interview engine / AI evaluator / STT adapter.
- Data layer reads/writes session, questions, and evaluations.
- Structured response returned to client for next UI state.
cd server
pip install -r requirements.txt
uvicorn src.main:app --reload --port 8000



