Someone just dropped a small, honest experiment: an AI job interview practice app where a 3B model plays the interviewer. It’s from u/Paulsimon751 on r/PromptEngineering, and you can try the demo yourself at https://interview.raintype.com.
What’s new
You can practice in a plain text chat or switch to a spoken conversation. The brain behind the interviewer is Llama 3.2 (3B), running locally through Ollama. No big hosted model is doing the questioning. The author built it to see how far a small local model can go in an interactive app, and says they were genuinely surprised by the result. They also call it an experimental demo, not a professional coaching service. I like that framing.
Why does this matter? A 3B model fits on a modest laptop, even one without a serious GPU. That means no per-token bill, no rate limits, and no sending your practice answers to a server just to get a follow-up question. For a job interview drill, where you might repeat the same session ten times in a row, that is real leverage. Mock interviews are also a forgiving use case. The interviewer doesn’t need to be a genius. It needs to ask a sensible next question and stay in role.
The twist
The app splits the work. The interview logic stays on the small local model. The voice side uses GPT Live for speech recognition and spoken output, so voice audio goes to OpenAI. Text chat is the local-only path. Voice is the hybrid path.
That split is the smart part. A 3B model is good enough to ask follow-up questions, but speech in and speech out is a different job, and renting that piece is a sane trade. Good speech recognition has to handle accents, background noise, and half-swallowed words. Natural-sounding speech output is its own heavy lift. Trying to squeeze all of that into the same tiny model would make the whole thing worse. Use the small model where it’s strong and rent the rest.
One thing to keep in mind if you copy the idea: tell users plainly which mode sends audio to a third party. The author does exactly that in the post. Put it right next to the voice toggle, not buried in a footer. People practicing for a job interview may say real details about their past employers, so they deserve to know before they hit the mic button.
Mini-workflow to build your own version 🛠️
- Install Ollama and pull a small model like Llama 3.2 3B. Run a quick test in the terminal first, so you know how fast it answers on your hardware.
- Write a system prompt that sets the role: interviewer, one question at a time, short replies, stays in character. Add the job title and seniority level as variables so the same app can run a junior designer interview or a senior engineer interview.
- Wire up a text chat first. Get the conversation loop feeling right before touching audio. Keep the last several turns in context so the interviewer can refer back to what the candidate said earlier.
- Add a voice layer as a separate component for speech-to-text and text-to-speech, so you can swap it later. If a fully local option becomes good enough, you only replace one module and the interview logic stays untouched.
- Label clearly what runs locally and what leaves the machine. 🎙️
Pro tips
- Small models drift. Keep the interviewer’s replies short and re-state the role in the system prompt, so a 3B model doesn’t wander off into coaching mode or start answering for the candidate. If drift still creeps in after a few turns, a cheap fix is to re-inject a one-line role reminder every few messages.
- One commenter asked the question I’d test first: what happens when people ramble or give messy, half-finished answers? Small models can get lost there. Try a prompt rule like “if the answer is unclear, ask one short clarifying question instead of moving on.” Then test it with your worst rambling answer. Paste in a three-minute stream of consciousness and see whether the interviewer stays calm or loses the thread.
- Voice exposes awkwardness fast. Pauses, interruptions, and filler words are where the conversation design really gets tested, so listen for those. A “um, let me think” should not trigger a new question. Try adding a short silence buffer before the model responds, and see how much more human the exchange feels.
- Vary the question style. Mix behavioral prompts (“tell me about a time you disagreed with a teammate”) with situational ones, and tell the model to pick one type per turn. Otherwise a small model tends to repeat the same pattern.
Call to action ⚓
Try the demo and leave the author honest feedback. They asked two things: do the questions feel useful, and where does the conversation or voice experience get awkward? And if you’re building your own side project with a local model, drop it in the comments. I’d like to see what a 3B model can carry. 🚀
Experimenting with Local LLMs: AI-Powered Job Interview Practice App
by u/Paulsimon751 in PromptEngineering