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