Skip to content

Latest commit

Β 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 AI Interview Simulator β€” Django Full Stack

An AI-style interview simulation platform built with Django.

No external AI API is required β€” the application uses a built-in NLP-style scoring engine to evaluate interview answers based on keyword coverage, structure, clarity, and specificity.

🌐 Live Demo

Live Application: InterviewAI

Note: The free Render instance may take a few seconds to wake up after inactivity.


✨ Features

  • βœ… User Registration & Login

  • βœ… Domain & Experience-based User Profiles

  • βœ… 5+ Career Domains:

    • Software Development
    • Data Science
    • Product Management
    • Marketing
    • HR
  • βœ… 3 Difficulty Levels:

    • Easy
    • Medium
    • Hard
  • βœ… Built-in AI-style Scoring Engine

  • βœ… Keyword Coverage Analysis

  • βœ… Answer Structure & Clarity Analysis

  • βœ… Specificity & Example Detection

  • βœ… Instant Feedback

  • βœ… Ideal Answer Guidance

  • βœ… Interview Session History

  • βœ… Progress Tracking

  • βœ… Performance Dashboard

  • βœ… Django Admin Panel for Managing Questions

  • βœ… Responsive Frontend


πŸ› οΈ Tech Stack

  • Backend: Python, Django
  • Database: SQLite
  • Frontend: HTML, CSS, JavaScript
  • Authentication: Django Authentication
  • Static Files: WhiteNoise
  • Deployment: Render
  • Application Server: Gunicorn

πŸš€ Setup

1. Clone the Repository

git clone git@github.com:Ravikalakoti/InterviewAI.git
cd InterviewAI

2. Create a Virtual Environment

python -m venv env

Activate the virtual environment:

macOS / Linux:

source env/bin/activate

Windows:

env\Scripts\activate

3. Install Dependencies

pip install -r requirements.txt

4. Run Database Migrations

python manage.py migrate

5. Load Sample Interview Questions

python manage.py loaddata interview/fixtures/questions.json

6. Start the Development Server

python manage.py runserver

Open the application:

http://127.0.0.1:8000/

πŸ” Admin Panel

The Django Admin Panel is available at:

http://127.0.0.1:8000/admin/

Create an administrator account using:

python manage.py createsuperuser

After logging in, interview questions can be managed from:

Admin β†’ Questions

New questions can be added without modifying the application code.


πŸ“Š Scoring Algorithm

The scoring engine is implemented in:

interview/ai_engine.py

Each interview answer is evaluated using multiple factors.

1. Keyword Coverage β€” 40%

Checks whether the answer contains relevant domain-specific keywords.

2. Answer Length & Structure β€” 20%

Evaluates whether the answer has an appropriate length and basic structure.

3. Clarity Indicators β€” 20%

Checks for structure and transition words that improve answer clarity.

4. Specificity β€” 20%

Looks for concrete examples, numbers, metrics, and specific details.

Score

Each question receives a score from 0–10.

The final interview score is calculated using the average score across the completed questions.


πŸ“ Project Structure

InterviewAI/
β”œβ”€β”€ core/                    # Django project settings & URLs
β”œβ”€β”€ accounts/                # Authentication & user profiles
β”œβ”€β”€ interview/               # Interview logic & scoring
β”‚   β”œβ”€β”€ ai_engine.py         # Built-in scoring engine
β”‚   β”œβ”€β”€ fixtures/            # Sample interview questions
β”‚   └── models.py            # Interview models
β”œβ”€β”€ templates/               # HTML templates
β”œβ”€β”€ static/
β”‚   └── css/                 # Application styling
β”œβ”€β”€ build.sh                 # Render deployment build script
β”œβ”€β”€ manage.py
β”œβ”€β”€ requirements.txt
└── README.md

☁️ Deployment

The application is deployed using Render.

Build Command

pip install -r requirements.txt && ./build.sh

Start Command

gunicorn core.wsgi:application

Build Script

The build.sh script performs static file collection and database migrations:

#!/usr/bin/env bash
set -o errexit

python manage.py collectstatic --no-input
python manage.py migrate

Static Files

Django static files are collected using:

python manage.py collectstatic --no-input

WhiteNoise is used to serve static files in production.


🀝 Contributing

Contributions are welcome!

Please follow the workflow below when contributing to the project.

1. Fork the Repository

Create your own fork of the project.

2. Clone Your Fork

git clone <your-fork-url>
cd InterviewAI

3. Create a Feature Branch

Create a separate branch for your feature or bug fix.

git checkout -b feature/your-feature-name

For example:

git checkout -b feature/improve-scoring

4. Make Your Changes

Develop and test your changes locally.

5. Commit Your Changes

git add .
git commit -m "Improve interview scoring"

6. Push Your Feature Branch

git push origin feature/improve-scoring

7. Create a Pull Request

Open a Pull Request from your feature branch to the project's develop branch.

Example:

feature/improve-scoring β†’ develop

Please include:

  • What you changed
  • Why the change was needed
  • Testing details
  • Screenshots, if applicable

8. Review & Merge

The contribution will be reviewed before being merged into develop.

The develop branch is used for development and testing.

Once changes have been tested and are ready for production, they can be merged:

develop β†’ main

The main branch represents the stable production version of the application.


πŸ”„ Branching Strategy

The project follows a simple feature-based Git workflow:

feature/*
    ↓
   dev
    ↓
   main
    ↓
 Render
  • feature/* β€” Individual features and bug fixes
  • dev β€” Development and testing
  • main β€” Stable production branch

Contributors should create their own feature branch and submit a Pull Request to dev.


πŸ‘¨β€πŸ’» Author

Ravi Singh Kalakoti

Django / Python Backend Developer

GitHub: Ravikalakoti

About

AI-powered interview practice platform built with Django

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages