This project provides a robust backend service for conducting AI-led interviews. It handles the full lifecycle of an interview, from managing a question bank and setting up sessions to collecting and scoring candidate answers using NLP. It's built with Django and Django REST Framework, with optional support for asynchronous processing (Celery) and real-time interactions (Django Channels).
- Interview Session Management:
- Create new interview sessions for candidates, either by selecting specific questions or generating a random set.
- Start, retrieve, advance to the next question, and mark sessions as complete.
- Retrieve detailed results for completed sessions, including individual answer scores and an overall average.
- Question Bank:
- CRUD (Create, Read, Update, Delete) operations for interview questions.
- Each question includes its text and a list of
expected_keywordsused for answer evaluation.
- Answer Collection:
- API endpoints for candidates to submit their answers to specific questions within an active session.
- NLP Answer Scoring:
- Implements a simple, keyword-based matching algorithm to score answers against the
expected_keywordsof a question. The score reflects the overlap between the candidate's answer and the expected terms.
- Implements a simple, keyword-based matching algorithm to score answers against the
- Asynchronous Evaluation (Celery & Redis):
- Offloads potentially time-consuming NLP processing to background tasks using Celery, improving API responsiveness.
- Real-time Updates (Django Channels & WebSockets):
- Provides live feedback on answer evaluation results and session progress to connected clients via WebSockets.
- Backend Framework: Django, Django REST Framework
- Database: SQLite
- Async Task Queue: Celery + Redis (optional)
- NLP Evaluation: Simple keyword matching (extensible to spaCy / OpenAI API)
- Real-time: Django Channels + Redis (optional)
- Containerization: Docker, Docker Compose
- Environment Management:
django-environ - Web Server: Gunicorn (WSGI), Uvicorn (ASGI for Channels)
- Testing: Pytest,
pytest-django