This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend.
Interview Mitraha is a little interview-practice companion I built with a friend in India in mind. The days before an interview can make even a simple “Tell me about yourself” feel heavy. I wanted to give my friend a calmer place to rehearse—without an audience, a score, or another expensive subscription.
You choose the role you’re preparing for, and Mitraha opens with one gentle question. From there, you can type or speak in English, Hindi, or Hinglish. If you use voice, you get to review the transcript before sending it. Mitraha follows up like a patient practice pal, helping you find your own words instead of handing you a script to memorize.
I haven’t handed it to my friend for feedback yet, so I don’t have a reaction to quote. That real-world tryout is still ahead of me.
There isn’t a hosted demo: I wanted the model and interview practice to run on the learner’s own computer. After installing Ollama and Node.js, the first run downloads Gemma (about 3.3 GB). Then start the app in PowerShell:
.\Start-Interview-Mitra.ps1
Open http://127.0.0.1:4173/ and choose a role. The repository’s README has the complete setup guide.
Repository: github.com/acceptedsoul-11/Interview-Mitraha
A friendly, local-first interview practice partner powered by Gemma.
Interview Mitraha gives a friend preparing for their next opportunity a low-pressure place to rehearse answers. It opens with one warm-up question, lets them type or speak a reply, and keeps the practice conversation on their own computer with Gemma 3 running through Ollama.
The name combines Mitra (friend) with the Sanskrit form Mitraḥ (मित्रः). The interface is designed to feel like a supportive practice pal: no scores, no accent ratings, and no claim that an AI can decide whether someone is ready for a job.
The project includes Windows start/stop scripts, setup notes, the test suite, and a GitHub Actions workflow.
The UI is plain HTML, CSS, and JavaScript. A small Node.js server runs on loopback and sends each checked, bounded conversation to Ollama on the same computer. Ollama runs the open-weight gemma3:4b model; it writes the opening question and the follow-up replies. There is no hosted model API in the conversation path.
flowchart LR
A[Browser: type or review a transcript] -->|127.0.0.1| B[Node.js: validate and bound messages]
B -->|local Ollama API| C[Gemma 3 4B]
C --> B --> A
I kept the app small on purpose: no account, no conversation database, and no runtime npm dependencies. The nine automated HTTP tests run with Node’s built-in test runner and a local mock Ollama endpoint. I also tried a typed answer against the real local Gemma model.
Voice has one important caveat. Speech recognition comes from the browser: some browsers process it on-device, while others may send audio to their configured speech service. Mitraha makes that boundary visible and lets you review the transcript; pressing Send sends the text to local Gemma. Browser speech synthesis can read Gemma’s answer aloud when available.
Interview answers often include personal stories. With local Gemma, typed answers and model inference stay on the learner’s computer. There’s no cloud model account, and no per-answer API bill. Once the model has been downloaded, typed practice can work offline.
Open weights also give the learner room to change the experience. They can inspect or edit the prompt that gives Mitraha its patient tone, or swap to a smaller compatible Gemma model if their computer has less memory. A closed API could provide good answers, but it wouldn’t give the same control over the model and the path the conversation takes.
I don’t want to overstate the privacy story: voice transcription depends on the browser’s implementation, and local inference still needs capable hardware and electricity. I’d rather say exactly where the boundary is than make a blanket “everything is private” claim.