eloQ
Own project · Real-time AI

A real-time copilot for meetings and interviews.

A desktop app that transcribes both sides of the conversation, notices when a question arrives and suggests an answer grounded in what was said and in your documents.

v2.22.3 · Windows 10/11 x64 and macOS Apple Silicon

Both sides transcribed on the left, detected question and suggested answer on the right.
automated tests passing
1.773
commits in the project
502
LLM providers, local and cloud
8
platforms with an installer
2
01

From audio to the answer on screen

Six steps between someone speaking and the suggestion showing up on screen.

  1. 1

    Two-channel capture

    The microphone becomes YOU and system audio becomes THE OTHER PERSON. On Windows capture uses WASAPI loopback; on macOS, ScreenCaptureKit.

    Hands overtwo audio streams
  2. 2

    Per-channel transcription

    Each channel can use a different provider, local or cloud. Deepgram Flux delivers end-of-turn events, and the connection is re-established on its own if it drops.

    Hands overtext + turn boundaries
  3. 3

    Turns and question detection

    Utterances are grouped into turns and the question is recognized by rules in Portuguese and English, with no AI. The copilot waits for the question to settle and generates at most one automatic answer per turn.

    Hands oversettled question
  4. 4

    Context with a guard against invention

    The prompt is built with a token budget from the transcript and the meeting documents. A guard blocks the call when the question refers to something never established in the conversation.

    Hands overgrounded prompt
  5. 5

    LLM with queue and failover

    A priority queue lets "Answer now" jump ahead of automatic answers. If a provider fails or hits its limit, the request moves to the next one, with an honest notice on screen.

    Hands overstreaming answer
  6. 6

    Overlay and Focus window

    The answer streams into the overlay and can be shortened, adapted or translated. The Focus window is native in Slint on Windows and in React on macOS.

02

What is inside

Live interview copilot

Turns derived from the transcript, answer opportunity in PT-BR and EN, revalidation at dispatch time and per-turn consumption, so the same question is never answered twice.

Answers that do not make things up

Referent guard, a rule against inventing candidate experience and answers anchored in the transcript. The "Context used" panel shows where each answer came from.

Deepgram Flux with reconnection

Streaming with turn events, a ledger of speech boundaries and transcription fallback when the connection drops mid-meeting.

Windows and macOS

On Windows, WASAPI and Credential Manager, with installer and automatic updates. On macOS, ScreenCaptureKit, Keychain and a .pkg installer for Apple Silicon.

Native Focus window

A lean surface to follow the answer during the conversation, in Slint with software rendering on Windows. The logic stays in the app; the window only displays and forwards actions.

Per-meeting documents

Resume, job description and notes become context for that meeting only, isolated from the others.

Licensing and release

Demo mode and full version, activation by a code sent by email and a device limit, with a server on Cloudflare Workers. CI release pipeline with signed automatic updates on Windows.

Automated tests

There are 223 files and 1,773 TypeScript tests, plus Rust tests, covering turns, queue, guards, i18n and updater configuration.

03

The app

eloQ screens. The interview conversation is a fictional example.

Live interview — Both sides transcribed on the left, detected question and suggested answer on the right.
Both sides transcribed on the left, detected question and suggested answer on the right.
04

Where the data goes

It depends on the providers you choose. The app uses your own API keys and has no intermediate server for audio or text.

Local transcription
Whisper.cpp, Sherpa-ONNX, ORT and Parakeet
Audio stays on the machine
Cloud transcription
Deepgram, Groq Whisper, Azure Speech, Whisper API
Audio goes to the chosen provider
Local LLM
Ollama and LM Studio
The transcript stays on the machine
Cloud LLM
OpenAI, Anthropic, Gemini, Groq, OpenRouter
Transcript and documents go to the provider
Keys and history
Credential Manager or Keychain, SQLite database
Stay on the machine
License
Email and a hashed installation id
Goes to the license server. Audio, transcript and prompts never do
05

Decisions and trade-offs

Detection by rules, not by AI

Deciding whether something is a question runs on deterministic rules. It is predictable, costs no call and can be tested case by case.

One automatic answer per turn

Only the turn boundary coming from the provider counts as reliable. That avoids answering half a sentence or answering twice.

Block before calling

When the question depends on something the conversation never established, the app does not call the model. Silence is better than suggesting an invention.

Logic in one place

Execution lives in the React and Tauri app. The native Focus window only displays state and forwards actions, which avoids two diverging implementations.

Development with AI agents

The commits were made with Cursor and Claude as a pair, with an agent review flow documented in the repository. Architecture decisions, review and what goes into each release are mine.

06

Current state, no polish

Delivered

  • Four public versions, from v2.22.0 to v2.22.3, with installers for Windows and macOS
  • Signed automatic update, validated end to end on Windows
  • 1,773 TypeScript tests passing, plus the Rust suite
  • Full interface in Brazilian Portuguese and English
  • Free Demo mode with limits and a full version by license

Known limits

  • macOS without Apple signing and without automatic updates
  • A yes/no question with no question word or "?" does not trigger an automatic answer
  • No Linux or Intel Mac build
  • Private code; only the installers are public

Stack

Tauri 2RustReactTypeScriptZustandTailwind CSSSlintSQLiteVitestCloudflare WorkersGitHub Actions

Want to look inside?

The repository is private. I can walk through the architecture, the code and the development flow in a call.

Get in touch

Provider names and trademarks belong to their owners and do not imply partnership.