An interactive platform that uses AI to conduct coding interviews, providing real-time feedback and evaluation through a multi-agent architecture.
- Multi-agent AI system with specialized agents:
- Interviewer Agent - Conducts the interview and communicates with the user
- Code Evaluator Agent - Evaluates code submissions
- Final Evaluator Agent - Provides comprehensive candidate assessment
- Coordinator Agent - Orchestrates the interview process and agent communication
- Real-time code editor with syntax highlighting
- Interactive chat interface
- Multiple programming language support
- Adaptive difficulty levels
- Comprehensive interview feedback
- Session persistence
- Python with FastAPI
- LangChain for AI interaction
- Postgres Supabase for prod/ SQLite database for local dev
- Chroma vector store
- OpenAI compatible endpoint(incl. Ollama on local dev)
- React with TypeScript
- Material-UI for components
- Monaco Editor for code editing
- React Router for navigation
- Axios for API calls
The platform is built with a specialized multi-agent architecture:
-
Interviewer Agent:
- Conducts the interview directly with the candidate
- Handles introductions, technical questions, and problem presentation
- Only agent that communicates with the user
-
Code Evaluator Agent:
- Specializes in evaluating code submissions
- Analyzes code for correctness, efficiency, and style
- Provides structured feedback on submissions
-
Final Evaluator Agent:
- Provides comprehensive assessment of the candidate
- Evaluates technical skills, problem-solving ability, and communication
- Makes hiring recommendations
-
Coordinator Agent:
- Orchestrates the entire interview process
- Manages communication between specialized agents
- Maintains context and ensures smooth transitions between interview stages
This architecture provides a seamless and natural interview experience while leveraging specialized capabilities of each agent behind the scenes.
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
- Copy .env.example to .env
- Add your OpenAI API key and other configurations
- Start the backend server:
uvicorn app.main:app --reloadThe backend server will run on http://localhost:8000
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend application will run on http://localhost:3000
Once the backend is running, visit http://localhost:8000/docs for complete API documentation.
- POST /api/v1/interviews/sessions - Create new interview session
- POST /api/v1/interviews/sessions/{session_id}/respond - Send candidate response
- POST /api/v1/interviews/sessions/{session_id}/code - Submit code for evaluation
- GET /api/v1/interviews/sessions/{session_id}/final-evaluation - Get final evaluation
- User starts a new interview session by selecting role and difficulty
- Interviewer Agent conducts initial introduction
- Technical discussion phase with adaptive questions
- Coding challenge presentation
- Code Evaluator Agent assesses code submissions
- Final Evaluator Agent provides comprehensive evaluation
.
├── backend/
│ ├── app/
│ │ ├── agent/
│ │ │ ├── base_agent.py
│ │ │ ├── interviewer_agent.py
│ │ │ ├── evaluator_agent.py
│ │ │ ├── final_evaluator_agent.py
│ │ │ ├── coordinator_agent.py
│ │ │ └── prompts.py
│ │ ├── core/
│ │ │ ├── config.py
│ │ │ └── database.py
│ │ ├── models/
│ │ │ └── interview.py
│ │ ├── routers/
│ │ │ └── interview.py
│ │ └── main.py
│ ├── requirements.txt
│ └── .env
├── frontend/
│ ├── public/
│ │ ├── index.html
│ │ └── manifest.json
│ ├── src/
│ │ ├── components/
│ │ │ ├── ChatInterface.tsx
│ │ │ └── CodeEditor.tsx
│ │ ├── pages/
│ │ │ ├── HomePage.tsx
│ │ │ └── InterviewPage.tsx
│ │ ├── services/
│ │ │ └── api.ts
│ │ ├── App.tsx
│ │ ├── index.tsx
│ │ └── index.css
│ ├── package.json
│ └── tsconfig.json
└── README.md
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT License - feel free to use this project for any purpose.
For support or questions, please open an issue in the repository.