Skip to content

tsejavhaa/InterviewCopilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InterviewCopilot

InterviewCopilot is a local AI-powered interview coach built with Flask. It helps job candidates practice real interview questions by generating spoken-style model answers tailored to a saved profile and target role.

Presentation Demo

Features

  • Save a candidate profile with skills, experience, projects, target role, and additional context
  • Generate spoken interview answers from OpenAI or DeepSeek LLM providers
  • Stream answers in real time via server-sent events
  • Pre-generate answers for faster playback
  • Store interview history in a local SQLite database
  • Review past questions, AI answers, and notes in the history view
  • Hot-swap provider/model configuration without restarting the server
  • Health checks and generation logging included

Requirements

  • Python 3.11+
  • pip installed
  • OpenAI or DeepSeek API key

Installation

cd InterviewCopilot
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Configuration

Create a .env file in the project root with at least one provider API key:

OPENAI_API_KEY=your_openai_api_key
# or
DEEPSEEK_API_KEY=your_deepseek_api_key

Optional environment variables:

  • LLM_PROVIDER: openai or deepseek (default: deepseek)
  • LLM_MODEL: model name to use for the selected provider
    • OpenAI: gpt-5.4-mini
    • DeepSeek: deepseek-v4-flash, deepseek-v4-pro
  • PORT: web server port (default: 8080)

Example .env:

OPENAI_API_KEY=sk-...
LLM_PROVIDER=openai
LLM_MODEL=gpt-5.4-mini
PORT=8080

Run the app

python app.py

Then open:

http://localhost:8080

Access from other devices with ngrok

If you want to use the app from another device such as a phone or tablet, start ngrok after the Flask server is running:

ngrok http 8080

Then open the forwarding URL shown by ngrok in your mobile browser.

App behavior

  • The app automatically initializes interviews.db on first run.
  • Logs are written to logs/generation.log.
  • Frontend templates are served from the template/ folder.

Useful API endpoints

  • GET /api/profile — retrieve saved profile data
  • POST /api/profile — update profile data
  • GET /api/llm-config — view active provider/model settings
  • POST /api/llm-config — change provider/model at runtime
  • POST /api/generate-answer — request a generated answer
  • POST /api/prepare-answer — pre-generate answer for a question
  • GET /api/llm-health — check provider/model health and latency
  • GET /api/interviews — list saved interview sessions
  • POST /api/save-interview — save an interview session record
  • DELETE /api/delete-interview/<id> — remove a saved interview

Notes

  • The app keeps a short in-memory history of recent Q&A to improve answer variation.
  • interviews.db stores profile snapshots alongside each saved interview.
  • If the active LLM provider fails, the app can fall back to the configured OpenAI model.

License

This repository does not include a license file. Add a license if you plan to share or publish the project.

About

AI-powered interview coach built with Flask. Practice real interview questions with personalized, spoken-style answers from OpenAI or DeepSeek LLMs.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors