Skip to main content
Hero Light

Welcome to Interview Simulator

Interview Simulator is an intelligent interview preparation platform that helps job seekers practice interviews with AI-powered feedback and CV optimization suggestions. Built with Flask and powered by Google Gemini and OpenRouter, it delivers realistic mock interviews tailored to your background and target role.

Quick start

Get up and running in 5 minutes with your first mock interview

Installation

Set up locally or deploy with Docker

Architecture

Understand the layered design and AI provider pattern

API reference

Explore endpoints and integration options

Key features

Document analysis

Upload your CV in PDF, DOCX, or TXT format alongside the job description. The platform extracts text using pdfplumber and python-docx to build a complete picture of your experience.
from utils.document_parser import DocumentParser

# Extract text from any supported document format
text = DocumentParser.extract_text('resume.pdf')

AI-powered interviews

Engage in realistic conversations with adaptive questioning from multiple AI providers. The system supports Google Gemini and OpenRouter with a pluggable provider pattern.
from client.ai_client import AIClient

# Generate contextual interview questions
question = ai_client.generate_first_question(
    cv_text=cv_text,
    job_desc=job_description,
    job_title="Senior Software Engineer",
    company_name="TechCorp"
)

Smart feedback

Receive detailed performance analysis including:
  • Performance score (1-10)
  • Strengths you demonstrated
  • Areas for improvement
  • CV optimization recommendations

Progress tracking

Monitor your interview sessions with up to 8 questions per session. Resume incomplete sessions anytime with persistent conversation history.

How it works

1

Create session

Start by entering the job title and company name you’re preparing for
2

Upload documents

Upload your CV and paste the job description
3

Interview practice

Answer 8 AI-generated questions that adapt to your responses
4

Get feedback

Review comprehensive analysis with actionable insights

Tech stack

Backend
  • Flask 3.1 for lightweight web framework
  • SQLAlchemy ORM with SQLite database
  • Tenacity for retry logic and reliability
AI integration
  • Google Gemini and OpenRouter APIs
  • Provider pattern for easy switching
  • Exponential backoff for API resilience
Frontend
  • HTMX for dynamic interactions without complex JavaScript
  • Jinja2 server-side templating
  • Progressive enhancement approach
Document processing
  • pdfplumber for PDF extraction
  • python-docx for Word documents
  • Graceful error handling for corrupted files

Design principles

Layered architecture

The application follows a clean separation of concerns:
  • Services handle business logic and orchestration
  • Repositories abstract database operations
  • Routes manage HTTP requests and responses

Provider pattern

The AIProvider protocol allows seamless switching between AI services:
class AIProvider(Protocol):
    def generate_text(self, prompt: str) -> str: ...
Currently supports Gemini and OpenRouter with easy extensibility.

Session-based state

Flask sessions track user interview sessions without requiring authentication, keeping the MVP simple and accessible.

Get started

Ready to practice your interviews? Head over to the quickstart guide to run your first mock interview in minutes.

View on GitHub

Check out the source code and contribute

Build docs developers (and LLMs) love