← All work

InterviewPracticeAI

Voice interview practice: a Next.js app, a Node voice gateway running the turn-taking loop, and a Python "ear" doing VAD, end-of-turn detection and transcription on the GPU.

September 2026ShippedSource on GitHub ↗

An AI interviewer you practise with out loud. The hard part is not the model, it is the interviewer policy: never moving on from a short answer, only advancing after the reaction was actually heard, capping follow-ups, stitching long answers that arrive in segments, and replaying a question when the candidate says "no, you continue".

The system is three services sharing one typed wire protocol: a Next.js web app, a Node WebSocket voice gateway that owns the model and TTS loop, and a Python ear on the GPU. The gateway's policy is tested end to end with a scripted model and ear, including reconnect and resume at the first unanswered question.

Hard parts

  • Interviewer turn-taking policy tested end to end with a scripted model and ear
  • Resuming an interview at the first unanswered question after a reconnect
  • Same-origin proxying of WebSocket traffic so a single tunnel exposes the whole app

More work