Skip to content
← All projectsNext: ScopeAI
Agents · Own product — 2026

ApexFlow Interviewer

An AI interview platform in active development, for candidates practising and recruiters running real interviews. An AI voice agent joins the same LiveKit video room as the candidate, asks questions generated from the resume and job description, follows up in real time, runs a sandboxed coding round and produces an explainable, scored report. The architecture and an 11-phase roadmap are defined; work is under way on the live room and the voice pipeline.

In developmentArchitecture and foundations in place; no production launch
Role
Founder, architect and developer
Timeline
Started January 2026, ongoing
Stack
Next.js · Go · FastAPI · LiveKit · GPT-4o · Deepgram · ElevenLabs · GKE
ApexFlow Interviewer
01 ProblemFirst-round interviews are slow, inconsistent and hard to scale, and candidates have few realistic ways to practise.
02 ApproachAn AI voice agent joins the video room as a participant and runs a speech-to-text, LLM and text-to-speech loop.
03 TechnologyNext.js, Go, FastAPI, LiveKit, GPT-4o, Deepgram, ElevenLabs, Judge0, Supabase, GKE, Cloud Run, Cloudflare.
04 OutcomeIn development: architecture, stack and roadmap defined, foundations set up, live room and agent in progress.

01 — Problem

Automating an interview isn't a CRUD problem. It needs stable real-time video for up to an hour across poor networks and firewalls, an AI that listens, thinks and speaks back within seconds and handles interruptions, questions built from unstructured resumes, safe execution of candidate code, scoring that can be explained, and consent and retention rules for recordings under GDPR and CCPA.

02 — Approach

01The interviewer is a room participantThe AI joins the same LiveKit room as the candidate rather than running a separate call, so there is one place to record, time and control the session, and both share the same media infrastructure.
02A streaming voice loopPipecat with LiveKit Agents runs Deepgram speech-to-text, GPT-4o and ElevenLabs text-to-speech with buffering, turn-taking and interruption handling. The requirement is a reply within 5 seconds of the candidate finishing.
03Untrusted code runs somewhere elseCandidates code in a Monaco editor; submissions run in a self-hosted Judge0 sandbox against hidden tests, never on the API servers. The AI then asks about the solution out loud.
04Infrastructure staged on purposeServices move from Docker Compose to Cloud Run to GKE, one step at a time. Go and Kubernetes are new to me, so each stage lowers risk while the platform grows.

03 — Architecture

How the system fits together, in two views.

The interview voice loopIntegration in progress
Candidatecamera · mic · screenLiveKit roomself-hosted SFUDeepgramspeech to textEgressserver recordingGPT-4ofollow-upsElevenLabstext to speech
The candidate and the agent share one room. Speech flows through transcription, the model and synthesis, then back into the room; Egress records the session server-side, so a browser blip doesn't break the recording.
Planned service splitArchitecture decided, January 2026
Next.js appGo core APIPython AILiveKitJudge0Supabase
A Go core API handles auth, sessions, room tokens and code-execution requests; Python services generate questions and scores. LiveKit and Judge0 run on GKE, with Supabase for data and Cloudflare at the edge.

04 — Decisions

  1. D1LiveKit instead of raw WebRTCOver: Peer-to-peer WebRTC, Agora, Twilio Video, DailyServer-side rooms, token auth, built-in recording, participant events and reconnection, plus an AI agent can join as a participant. Raw WebRTC gives no server-side control.
  2. D2Self-host LiveKit on GKEOver: Managed video servicesTechnical control, cost, and data residency for GDPR: media stays on the team's own infrastructure.Trade-offMore operational work and Kubernetes skills needed, accepted because learning Kubernetes is also a goal.
  3. D3An SFU, not an MCUA selective forwarding unit forwards streams without mixing them, using far less server CPU; for one candidate and one agent the overhead is small.
  4. D4Go core, Python AIGo for a fast, concurrent core API; Python for the AI libraries and the voice-agent ecosystem.
  5. D5Judge0 for candidate codeBuilding a safe multi-language sandbox is a large security task; Judge0 already does it, with test-case support.

05 — Technology

Frontend
Next.js App Router, TypeScript, Tailwind, shadcn/ui, Zustand, React Query, Monaco
Real-time media
LiveKit (self-hosted SFU on GKE), LiveKit React SDK, Egress recording
Voice pipeline
LiveKit Agents, Pipecat, Deepgram, GPT-4o, ElevenLabs
Backend
Go core API, Python FastAPI AI services
Code execution
Judge0, self-hosted
Data
Supabase (Postgres, Auth, Storage, Realtime), Prisma, Redis
Infrastructure
Docker, Cloud Run, GKE Autopilot, Helm, Cloudflare, Vercel

06 — Outcome

Own product · 2026
phases in the planned roadmap
100+concurrent interviews — a design target
<500 msmedia latency — a design target
<5 sAI voice reply — a design target

07 — Status

Done
  • Requirements and user stories with acceptance criteria
  • Stack and architecture finalised (January 2026)
  • 11-phase, roughly 17-week roadmap
  • GCP, Supabase, Cloudflare and OpenAI set up; Docker dev environment
In progress
  • Live interview room with stable connection handling
  • Deepgram + GPT-4o + ElevenLabs agent via Pipecat
Planned
  • Live coding round with hidden tests
  • Scoring and candidate reports
  • Recruiter dashboard, branding and team review
  • Production hardening and launch

08 — My role

Owner and developer of a self-directed product, deliberately learning Go and Kubernetes by building it.

  • Requirements baseline and MVP+ scope
  • Technology stack and architecture
  • Media infrastructure decisions: LiveKit, self-hosted on GKE
  • Cloud and local foundations
  • Live interview room and voice-agent integration (in progress)
Next project · 08ScopeAIAn AI 'technical co-founder' that turns a raw idea into analysis, research, a stack, a roadmap and documents. Currently product design, architecture and a Next.js foundation.