Inspiration
Interviews are broken on both sides. Candidates spend weeks preparing with generic question lists that don't replicate the pressure of a live conversation. Recruiters burn hundreds of hours on repetitive screening calls, often relying on gut feeling over structured evaluation. And the people who suffer most are those without privilege: first-generation professionals, international candidates, career changers, and students in underserved communities who simply don't have access to quality mock interview practice.
Career coaching costs \$100–300 per session. Networking-based mock interviews require connections most people don't have. University career centers only serve enrolled students. I realized that if an AI could be the interviewer, not a chatbot that types questions, but a voice-based agent that talks, listens, reacts naturally, and evaluates structured criteria, I could democratize interview preparation for everyone with a browser and a microphone.
That insight, combined with the release of Amazon Nova 2 Sonic (AWS's real-time bidirectional audio streaming model), gave me the technical foundation to build something that genuinely feels like sitting across from a real interviewer.
What it does
Interviewed is a dual-purpose AI interview platform that serves both candidates and recruiters:
For Candidates
- Practice with a realistic AI interviewer - speak naturally through your microphone and get real-time voice responses powered by Amazon Nova 2 Sonic
- Resume-tailored questions - upload your resume and the AI personalizes every question to your background, experience, and target role
- Solo or panel mode - practice one-on-one, or face a 3-person AI panel where each interviewer has a distinct voice, personality, and area of expertise (Engineering Manager, Product Manager, Junior Developer)
- Live code challenges - when the role involves coding, the AI delivers a
[CODE_CHALLENGE]and a Monaco-based code editor opens in-browser for real-time problem solving - AI-scored feedback - after the interview, Amazon Nova 2 Lite analyzes your transcript across 5 dimensions: communication, technical depth, problem-solving, confidence, and relevance, with per-question breakdowns
For Recruiters (hire.interviewed.space)
- Create job campaigns - post a job listing with role details and requirements
- Bulk invite candidates - paste in email addresses and send expiring invite links in one click via automated SMTP emails
- Asynchronous screening - candidates complete the AI interview on their own schedule, eliminating back-and-forth scheduling
- Live pipeline view - see all candidates ranked by AI scores, color-coded by performance, with detailed evaluation reports and per-question analysis
- Data-driven hiring - compare candidates side-by-side on structured criteria instead of gut feeling
How we built it
Backend: FastAPI + Amazon Nova 2 Sonic
The backend is a Python FastAPI application with a WebSocket-based real-time interview engine:
- Amazon Nova 2 Sonic handles real-time, bidirectional audio streaming. Audio flows in both directions simultaneously. The AI can listen while speaking, detect barge-in (interruptions), and respond with natural pacing. No awkward delays, no client-side VAD needed.
InterviewConnectionManager(~750 lines) manages the full lifecycle of each interview session: WebSocket connection, Nova Sonic stream initialization, audio routing, conversation history tracking, auto-reconnect with history replay, panelist switching, and code challenge delivery.InterviewNovaSonicwraps the AWS Bedrock SDK to handle session setup, system prompt construction, persona/voice selection, and response processing.- Persona system: each session randomly selects from 8+ interviewer personas (James, Sarah, Priya, Raj, Emily, etc.), each with a distinct voice ID, gender-matched name, and personality style ("warm and encouraging," "direct and analytical"). Panel interviews use a fixed trio with distinct voices.
- Supabase (PostgreSQL) stores users, sessions, messages, scores, recruiter data, jobs, and invites, accessed asynchronously through SQLAlchemy + asyncpg.
- Amazon Nova 2 Lite generates structured scoring by analyzing the full conversation transcript after the interview concludes.
- SMTP email service sends branded interview invitation emails with unique, expiring links.
Frontend: Next.js 16 + Framer Motion
The frontend is a Next.js 16 app (Turbopack) with:
- Real-time audio interface: WebSocket client streams microphone audio to the backend and plays back AI responses in real-time
- Live code editor: Monaco editor with real-time code sharing over WebSocket when the AI issues a coding challenge
- Animated landing page: framer-motion powered homepage with scroll-triggered animations, glassmorphism, and a dual-product showcase
- Recruiter portal: subdomain-routed via Next.js middleware (
hire.interviewed.space→/hire/*), with job management, candidate pipeline, and detailed evaluation views - Dark theme with custom fonts (DM Sans, Syne, JetBrains Mono), cyan (
#00D4FF) primary accent for candidates and green (#00D492) for the recruiter experience
Deployment
- Backend deployed to AWS EC2 via GitHub Actions CI/CD, managed by PM2
- Database on Supabase (managed PostgreSQL)
- Frontend on Vercel with subdomain routing for the recruiter portal
System Architecture
Database Relationship
Challenges we ran into
1. Nova Sonic Session Management
Nova Sonic sessions have idle timeouts and context limits. Early on, interviews would silently die mid-conversation when the candidate paused too long. I had to build a transparent auto-reconnect system: when a timeout is detected, the backend automatically creates a fresh Nova Sonic session, replays the trimmed conversation history (last 4 messages, truncated to 1KB each to avoid the "Chat history is over max limit" error), and injects a resume-trigger so the AI picks up exactly where it left off. The candidate never notices anything happened.
2. Panel Interview Handoffs
Building multi-panel interviews was the hardest feature. Each panelist needs their own Nova Sonic session with a unique voice, persona, and system prompt. When one panelist finishes, I close their stream, initialize a new one, replay the full conversation history so the new panelist has context, and trigger them to introduce themselves. Getting the timing right (avoiding audio gaps, duplicate greetings, and context loss) took extensive iteration.
3. Barge-In Handling
Nova Sonic's barge-in detection (where the candidate interrupts the AI mid-sentence) is powerful but tricky. When a barge-in happens, you need to discard the partial AI response from the transcript buffer, or you end up with duplicate/incomplete content when history is replayed later. I had to carefully manage transcript state to handle interruptions gracefully.
4. Subdomain Routing
Running the recruiter portal on a hire. subdomain within the same Next.js app required careful middleware configuration. A subtle bug showed up where static assets like /hire-logo.svg were being caught by the middleware's /hire path redirect because the filename started with "hire." I had to add file-extension detection to the middleware to exclude static assets from route-level redirects.
Accomplishments that we're proud of
- The "I forgot I was talking to an AI" moment: during testing, users consistently lost track of the fact that they were speaking to an AI within 30 seconds. That's when I knew the technology was working.
- True panel interviews with distinct voices: three AI interviewers, each with their own voice, personality, and line of questioning, handing off seamlessly. Nothing else on the market does this.
- End-to-end recruiter workflow: a recruiter can go from creating a job to reviewing scored candidates in under 10 minutes, with zero integrations or ATS setup.
- Live code evaluation during voice interviews: the AI can issue coding challenges mid-conversation, the candidate solves them in a real editor, and the AI discusses the solution, all within the same session.
- Auto-reconnect that's truly invisible: transparent session recovery with full context preservation that candidates never notice.
What we learned
- Voice variety matters more than expected. When I launched with a single voice, testers said it felt "like talking to Siri." Adding persona rotation with different voices, greeting styles, and questioning approaches completely transformed the experience.
- Session management is everything. Building on a real-time streaming API means you own the complexity of connection lifecycle, timeouts, reconnection, and state synchronization. There's no "retry the request" fallback. You have to get it right.
- Server-side turn detection is a game changer. Nova Sonic's automatic endpointing eliminated the need for fragile client-side voice activity detection. Conversations feel dramatically more natural because the AI knows when you've finished speaking.
- Structured scoring unlocks recruiter adoption. Recruiters don't care about AI technology. They care about comparing candidates consistently. The 5-dimension scoring framework gave them something spreadsheet-compatible and actionable.
- Bidirectional streaming changes what's possible. The difference between request-response AI and true bidirectional streaming is the difference between a chatbot and a conversation partner. Nova Sonic's architecture is what makes the interview feel real.
What's next for Interviewed
- Video Analysis: tracking eye movement to catch possibilities of cheating, providing candidate reputation score to recruiters so that they have an idea of how reputable the candidate is.
- Backups of audio and video: Storing backups of candidates' interview which recruiters can see and verify the legitimacy of top candidates before moving ahead with them. Flagged candidates will be verified and will score negative reputation points.
- Expanded language support: leveraging Nova Sonic's multilingual capabilities to let candidates practice in their native language
- Industry-specific question banks: tailored interview prompts for healthcare, finance, education, and public sector roles
- Deeper analytics: detecting filler words, speaking pace, and confidence patterns across multiple sessions to show improvement over time
- ATS integrations: so recruiters can push scored candidates directly into Greenhouse, Lever, or their existing hiring workflow
- University partnerships: making Interviewed available to career services offices as a scalable, always-available mock interview tool for students
Log in or sign up for Devpost to join the conversation.