Arpita Singh 打造 Rehearse,一款語音優先、本地優先的 AI 面試教練
I Built Rehearse to Sell: A Voice-First, Local-First AI Interview Coach
Arpita Singh 打造 Rehearse,一款以語音互動和本地優先為特色的 AI 面試教練。它會以語音打斷冗長回答、追問細節並按 10 分制評分,也會按 Marketing、Nursing 或 Sales 調整語氣和問題。
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
I built Rehearse, a voice-first and local-first AI interviewer.
You know how you read a list of "Top 50 Interview Questions," think "I could answer that," and then completely freeze when you actually have to speak out loud? That is the exact problem this solves.
ChatGPT doesn't help here. If you ask it to practice with you, it gives you a giant essay, says "Great job!", and never pushes back. A real interview is a conversation. Rehearse actually talks to you (using voice), cuts you off if you ramble, and forces you to answer the hard follow-up questions. At the end, it grades you out of 10 and tells you how a better candidate would have answered.
I didn't want this to just be for software engineers. You can type "Marketing," "Nursing," or "Sales," and the AI changes its tone and questions to match that field. And if you pick "Stress Test" mode, it acts like a genuinely hostile interviewer.
Demo
Code
How I Built It
The stack is FastAPI, HTMX, and Gemma. I used the browser's built-in microphone and text-to-speech so it works instantly without saving audio files to a server.
The hardest part wasn't the code, it was stopping the AI from being too nice. I had to write a very strict set of rules for the prompt. It is explicitly banned from saying things like "Great answer" or "I understand." If you say "we built a system," it is instructed to interrupt you and ask, "What did you specifically do?"
I also ran into a hilarious bug. Gemma on Google's API is a "thinking" model. Instead of just asking the question, it would write out its entire internal thought process: "Wait, the prompt says no meta-text. Let's try asking this..."
Because my app reads the text out loud, it was literally speaking the AI's internal self-doubt to the user. I had to write a Python script that scans the AI's output bottom-up, ignores the monologue, and grabs only the final question.
Why Does Open Innovation Matter?
Interviewing is vulnerable. You are anxious, alone, and talking to a screen. If this used a closed API, it would mean sending your awkward voice recordings to a giant tech company's server.
Because it uses open-source AI, this app can run 100% locally. If you run it with Ollama, nothing leaves your laptop.
To make the app demoable as a live link (since free hosting can't run a 4GB model), I built a fallback: it tries the local Ollama server first, and if you don't have it running, it uses the Google API. This local-first setup is only possible because open models are finally small enough to run on normal laptops.
Bonus: My First User
I tested this on a friend preparing for MBA interviews.
She typed in a real consulting job description. Her first answer was a rambling 3-minute story about a college project. The AI instantly interrupted her (in voice) and asked, "You mentioned an increase in engagement. What was the specific metric before and after?" She froze, laughed, and said, "Wow, this is actually stressful."
Would she pay for it? She said she wouldn't pay monthly, but she would happily pay $5 for a "7-day sprint" pass right before placement season.
What did she ask for next? She wanted to upload her resume so the AI could ask questions about her specific internships. (Adding that to the roadmap for improvement).
Prize Categories
- Best Use of Gemma — Gemma 3 4B via local Ollama, with a Google AI Studio Gemma fallback.
- Best Use of Render — FastAPI app deployed on Render using the cloud inference fallback.
來源:DEV Community · dev.to