Hacktoberfest 2026 Weekend Challenge: Build for a Friend · Oct 2026
The Offline Interrogator
A local-first AI mock interviewer running on open-weight Gemma.
- TypeScript
- React
- Express
- Ollama + Gemma
- MongoDB Atlas
- Docker
Overview
Pick DSA, behavioral or system design, answer one question at a time, ask for hints, and get a strict rubric-based report card. Difficulty adapts to your answers and topic history surfaces weak spots across sessions. All reasoning runs locally.
The problem
Interview practice tools usually depend on paid cloud models and send your answers to a third party. A friend preparing for interviews needed something private, free to run and honest about weak spots.
Architecture
- React + Vite client with timer, hints and report card
- Express API running a deterministic interview loop
- Mastra tools for question, hint, scoring and storage
- Ollama serving Gemma 3 4B locally
- MongoDB Atlas (optional) for sessions, turns and question bank
Key engineering decisions
Deterministic loop, model-executed tools
Express controls the sequence of question, score, adapt and next question. Mastra executes the registered tools, so no second model is needed just to decide which tool to call.
Never fabricate a score
Overall scores are computed from five rubric scores. Malformed JSON is retried once, and failures return an actionable error instead of a made-up number.
Graceful degradation
Atlas, ElevenLabs voice and Sentry are all optional. With none configured the app still runs fully offline and keeps history in memory.
Concurrency guard
Overlapping answer, hint and end requests on a session are rejected with 409, which prevents duplicate turns from double clicks.
Results
- One-command Docker Compose setup that pulls the model and starts the app
- Integration tests against a local Ollama protocol fixture plus a DOM test for the report card
What I would do next
- Resume interrupted sessions
- Auth so it can be safely hosted for more than one person