A simple mock interview application that uses LiveKit for real-time voice conversations during technical interviews.
- Landing Page: Submit a LeetCode-style coding question
- Live Interview: Real-time voice conversation with AI interviewer
- Code Editor: Write your solution while discussing your approach
- Simple Setup: Minimal dependencies, powered by LiveKit
npm install- Sign up for a free account at LiveKit Cloud
- Create a new project
- Copy your API Key, API Secret, and WebSocket URL
- Create a
.env.localfile:
cp .env.example .env.local- Edit
.env.localwith your LiveKit credentials:
LIVEKIT_API_KEY=your_api_key_here
LIVEKIT_API_SECRET=your_api_secret_here
NEXT_PUBLIC_LIVEKIT_URL=wss://your-project.livekit.cloudThe AI interviewer runs as a separate Python service:
-
Install Python dependencies (requires Python 3.11+):
cd agent pip install -e .
-
Configure API keys in
agent/.env.local:# Already has LiveKit credentials ASSEMBLYAI_API_KEY=your_assemblyai_key_here OPENAI_API_KEY=your_openai_key_here CARTESIA_API_KEY=your_cartesia_key_here
-
Get API keys:
- AssemblyAI - Speech-to-text
- OpenAI - GPT-4 mini for conversation
- Cartesia - Text-to-speech
Terminal 1 - Web App:
npm run devTerminal 2 - AI Agent:
cd agent
python agent.py devOpen http://localhost:3000 in your browser.
-
Enter Question: On the landing page, enter a coding question (e.g., "Write a function to find the longest palindromic substring")
-
Start Interview: Click "Start Interview" to enter the interview room
-
Enable Microphone: Allow microphone access when prompted
-
Code & Talk: Write your solution in the code editor while discussing your approach out loud
-
AI Interaction: The LiveKit room enables voice communication (you'll need to implement the AI agent separately using LiveKit's Agent Framework)
- Next.js 15 - React framework with App Router
- TypeScript - Type safety
- Tailwind CSS - Styling
- LiveKit - Real-time voice communication
- @livekit/components-react - Pre-built LiveKit UI components
jask/
├── app/
│ ├── api/
│ │ └── livekit-token/ # Token generation endpoint
│ ├── interview/ # Interview room page
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx # Landing page
├── agent/
│ ├── agent.py # LiveKit AI agent
│ ├── pyproject.toml # Python dependencies
│ └── .env.local # Agent API keys
├── .env.example
├── .env.local
├── package.json
└── README.md
The AI interviewer (JASK) automatically joins interview rooms and:
- Greets the candidate and asks about their background
- Listens to the candidate's voice explanations
- Provides guidance and hints without giving away the solution
- Evaluates problem-solving skills and technical communication
- Uses AssemblyAI for speech recognition
- Uses OpenAI GPT-4 for intelligent responses
- Uses Cartesia for natural-sounding voice output
MIT