Open Interview Download

Runs on your machine. Nothing is uploaded.

Every score cites the candidate's own words.

Open Interview builds an interview rubric from the job description you are hiring against, runs a spoken interview using a local model, and refuses to record anything. If the model cannot find a phrase it claims the candidate said, the score is thrown away rather than shown to you.

  • Ollama
  • whisper.cpp
  • Piper
  • no API keys

857

automated tests passing

42/42

IPC request channels guarded

3

local services, loopback only

0

cloud calls by default

v0.1.7 verification: 97 test files, 857 tests, 42 IPC request channels and 3 event channels validated against one shared JSON Schema. The default brain is local; a cloud brain is an explicit per-interview choice.

The problem

Most interview rubrics describe a job nobody wrote.

The generic rubric

Communication, problem solving, teamwork. Competencies that would score a frontend hire and a site reliability engineer identically, because nobody ever looked at the posting.

  • Same for every role
  • No link back to the posting
  • Nobody approved it

A rubric from your posting

The local model reads the description, proposes competencies, and keeps the exact sentence each one came from. Anything whose quote is not found in the text is dropped before you ever see it.

  • Verbatim source span per competency
  • Bias screened before it reaches you
  • You approve it, or change it, first
  1. 01

    Paste the posting

    A PDF, Word document, Markdown or plain text. It is read on the device and split into labelled sections with real character offsets.

  2. 02

    Detect the role

    Every bundled interview profile is scored against the text, with the evidence shown. It never picks silently — you confirm the archetype and the seniority band.

  3. 03

    Build and approve the rubric

    Competencies arrive beside the sentence they came from. Profile-seeded ones are marked inferred so you can tell them apart. Nothing interviews a candidate until a person approves it.

  4. 04

    Interview, out loud

    Speak naturally. A pause of half a second, one second or two sends the answer to local speech recognition. The model chooses the next question; it never decides when the interview ends.

  5. 05

    Read the report

    Weighted per competency, against that competency's own anchors, each score carrying the transcript phrases it rests on.

Scoring

A score without a quote is not a score.

Every competency score must cite one to three exact phrases from what the candidate actually said. The app searches the transcript for each one. A citation that is not found is rejected, the model is asked again once, and if it invents evidence a second time that competency is reported as not scored — named, with the reason, instead of quietly guessed at.

Backend engineer · senior

rubric v3 · local model · 14 turns

3.8 / 5
  • 4

    Reliability & correctness

    Named the failure mode before reaching for a fix.

    “I made the write path idempotent first, so the retry storm was harmless.”

    cited
  • 4

    Operability

    Designed for the person on call, not the author.

    “If I cannot tell from a dashboard whether the queue is stuck, the dashboard is part of the bug.”

    cited
  • —

    Distributed systems depth

    The model cited “led a team of fifty engineers”. That phrase does not appear anywhere in the transcript, so the score was discarded and the competency is reported as not scored.

    “led a team of fifty engineers” not found in transcript — discarded

    rejected

Scores are decision support, not a decision. The weighted overall covers only the competencies that were both asked and scorable.

Privacy

The interview never leaves the room.

Not a promise in a policy page — the default architecture. The model, speech recognition and voice run on loopback addresses on this device. No cloud endpoint is used unless an administrator explicitly enables an external provider, and the local path needs no key.

Audio is never written to disk

The microphone is live only while you are answering. Samples are converted in memory and handed straight to the local recogniser.

No key required for the local path

The core path runs without an account. A cloud provider key can be stored in the OS keychain only when an administrator enables an external provider; providers are optional.

Loopback by default

Every local endpoint is checked to be loopback, and redirects are refused, so a misconfigured local address cannot quietly forward an interview. External providers are opt-in and redacted before a payload leaves the device.

You own the history

Transcripts and reports are saved beside the rubric library on this machine, listed on the home screen, and deleted on request — including a single confirmed delete-everything.

Providers

Local by default. Cloud when you choose it.

Run the whole interview on loopback with Ollama, whisper.cpp and Piper. Or choose a configured provider as the interview brain on Home; it handles the opening, replies and scoring, with the local stack as the fallback.

Local

Ollama + whisper.cpp + Piper

The default path. Language, speech recognition and voice all run on this device, with no account and no cloud endpoint.

External · LLM

OpenAI / ChatGPT

Use a GPT model for interview questions. The key stays in the OS keychain; local Ollama remains the fallback.

External · LLM

OpenRouter

One key for many hosted models. Choose a model id and the router will fail over to the local model if the provider is down.

External · LLM

OpenCode

OpenCode's OpenAI-compatible gateway, configured with its base URL and model id.

External · Speech + LLM

Sarvam

Sarvam chat plus Saaras speech recognition and Bulbul speech output for Indian languages.

External · Gnani voice

Gnani Prisma + Timbre

Gnani Prisma speech recognition and Timbre speech output, wired into the live interview with a Gnani profile and key.

Add a profile in Settings → Providers and fallbacks. The key is checked before saving; OpenAI-compatible providers load their model list, and Gnani reports whether Prisma and Timbre are in scope. The workspace policy decides whether external providers may be selected; the local stack is always the fallback. Keys never leave the OS keychain.

Built with Gnani

Prisma hears the answer. Timbre speaks the question.

This build was made for the Great Indian AI Internship Challenge. When a Gnani profile is enabled, the live interview uses Gnani's voice models for both sides of the conversation, with the local Whisper and Piper path as the fallback.

Gnani · Speech to text

Prisma

Candidate audio is transcribed with POST /stt/v3, model prisma-v2.5, and the X-API-Key-ID header. Prisma v3.0 is available for indic-auto and mixed-language audio.

Gnani · Text to speech

Timbre

The interviewer's question is voiced with POST /api/v1/tts/inference, model timbre-v2.5, voice Nalini, language en-IN. Timbre is currently in beta.

Fallback

Local Whisper + Piper

If Gnani is unavailable or the workspace is local-only, the router falls back to local speech recognition and voice on the next turn. The interview does not stop.

Settings → Providers and fallbacks → Add provider → Gnani (Prisma + Timbre). Get a key at app.gnani.ai and read the Gnani API docs.

Questions

What to know before you trust it with an interview.

Does Open Interview upload my interview?

No, not by default. The language model, speech recognition and voice run on loopback addresses on your machine. An external provider is only used when an administrator enables it and the interviewer chooses it for that interview; the choice and its data boundary are shown before the session starts.

Can it run without an API key or an internet connection?

Yes. The local path uses Ollama, whisper.cpp and Piper, and needs no account or key. You need the models installed once; after that the interview itself does not call a cloud endpoint.

How does it stop the model inventing evidence?

Every competency score must cite one to three exact phrases from the transcript. The app searches the transcript for each phrase. A citation that is not found is rejected, the model is asked again once, and if it invents evidence a second time the competency is reported as not scored rather than guessed.

Which cloud providers can I use?

OpenAI-compatible providers such as OpenAI, OpenRouter, OpenCode and Sarvam chat, plus Gnani Prisma speech recognition and Timbre speech output. A key is checked before it is saved; OpenAI-compatible providers load their model list and Gnani reports whether Prisma and Timbre are in scope. Keys are stored in the OS keychain, and local Ollama remains the fallback.

What do I need to run it?

Windows 10 or 11 on x64, Ollama with a model installed, and whisper.cpp and Piper for local speech. The installer is not code-signed yet, so Windows SmartScreen may warn; verify the published SHA-256 before running it.

Where are transcripts and reports stored?

On your machine, beside the rubric library. Audio is converted in memory and is not written to disk. Transcripts and reports can be deleted from the app, including a single confirmed delete-everything action.

Is there a macOS or Linux build?

Not yet. The current release is Windows x64 only: an NSIS installer, a portable ZIP and an enterprise MSI.

Run the interview on your own machine.

Bring your own model. The app shows you which local models are installed and tells you exactly which service failed if one does.

Windows may warn about this build. It is not code-signed yet. If SmartScreen says “Windows protected your PC”, choose More info → Run anyway. If the browser asks, choose Keep. Verify the SHA-256 below before running it.

Security checks

    Each artifact is scanned before publishing. The SHA-256 beside each file matches the checksum file. VirusTotal reports 0/67 engines on the installer, 0/64 on the portable ZIP and 0/59 on the MSI. The links above open the exact hashes.

    VirusTotal may show generic Sigma behavior matches on the NSIS installer because it extracts its own plugin DLLs to %TEMP% and checks for a running copy with PowerShell. That is standard electron-builder installer behavior, not malware. If your endpoint blocks the NSIS installer, use the MSI or the portable ZIP.

    Version 0.1.7 for Windows on x64. Requires Ollama, whisper.cpp and Piper running locally. Full setup steps ship with the app.