# VoiceDebrief MeetScribe > A Chrome extension that transcribes the Google Meet call you are in, through OpenRouter's speech-to-text endpoint on the user's own key: no bot in the call, no Google recording or transcription (so it works on Workspace Business Starter, which has neither), no server of ours. A VoiceDebrief product (https://voicedebrief.ai): its transcript and debrief, for a meeting. Status on 3 November 2026: v0.3.2, THE FIRST MVP, BUILT AND TESTED IN CHROMIUM WITH FAKE AUDIO AND REPLAYED RESPONSES, NOT YET TRIED ON A REAL MEET CALL. Loaded unpacked from extension/. This site also holds the review of the first brief (v1.0, drafted by ChatGPT), the brief v2.0 that replaces it, and the plan. Site and extension v0.3.2 (one version, admin/build/version.txt; every push to dev is a tagged release). Every page is generated from the markdown twin at the same path (index.md beside index.html); links below point at the markdown. The site is https://meetscribe.chrome-extension.voicedebrief.ai/ (from the CNAME file); the older address voicedebrief.github.io/VoiceDebrief__Chrome_Extension__MeetScribe/ redirects here. ## Privacy, stated plainly - BETA. Do not use MeetScribe for confidential meetings. On MeetScribe's side everything is client-side: no server, no account, no analytics; meetings, transcripts, debriefs, queued audio and the key stay in the browser profile, unencrypted. The audio and transcript are sent to OpenRouter and on to a model provider; from there MeetScribe cannot see or verify who processes them, whether they are kept, or for how long. provider.zdr:true is sent as a request that OpenRouter applies under the account's own settings; it is not a guarantee and must not be described as one. ## Read first - [Reviews and findings](https://meetscribe.chrome-extension.voicedebrief.ai/reviews/index.md): the v0.3.1 code review (18 findings, as received, PDF) with each finding's status and test, and the first real call (S1: the icon click must be handled by the extension for Chrome to allow tab capture; fixed in v0.3.2). - [Download the extension, latest](https://meetscribe.chrome-extension.voicedebrief.ai/releases/meetscribe-latest.zip): one folder, meetscribe/, to load unpacked at chrome://extensions with Developer mode on. Versioned copies: releases/meetscribe-vX.Y.Z.zip, each with a .sha256; the zip is byte for byte the repository's extension/ folder (the gate checks it). - [Report a test](https://github.com/VoiceDebrief/VoiceDebrief__Chrome_Extension__MeetScribe/issues/new?template=test-report.md): a GitHub issue form with the eight spike questions. - [Install and use](https://meetscribe.chrome-extension.voicedebrief.ai/install/index.md): load extension/ unpacked, the OpenRouter key, the microphone grant, a meeting, the meetings page; the spike questions this build answers. - [Build, test and release](https://meetscribe.chrome-extension.voicedebrief.ai/develop/index.md): NO COMPILE STEP; Chrome loads extension/ as it is. Node 20+ scripts: admin/build/package.mjs (stamp), build.mjs (site), validate.mjs (the gate); tests/run.mjs (Playwright 1.63.0). CI on dev: validate, test, tag vX.Y.Z, deploy. - [MeetScribe and VoiceDebrief](https://meetscribe.chrome-extension.voicedebrief.ai/voicedebrief/index.md): shared key guidance, the routingHonest and modelCaveat sentences, vd-tokens.css colour (vendored), the debrief prompt and four locales, gemini-3.5-flash for the debrief; what differs; the path into voicedebrief.ai. - [What is built](https://meetscribe.chrome-extension.voicedebrief.ai/built/index.md): the reality file. If it is not listed there as built, it does not exist. - [Home](https://meetscribe.chrome-extension.voicedebrief.ai/index.md): what MeetScribe is, the one rule, whether it is feasible, the four findings that matter most. - [Review of brief v1.0](https://meetscribe.chrome-extension.voicedebrief.ai/review/index.md): 14 claims that hold (with evidence), 6 choices that fail silently (R1 to R6), 11 gaps (R7 to R17), 6 changes (R18 to R23), and a verdict per section. - [Brief v2.0](https://meetscribe.chrome-extension.voicedebrief.ai/brief/index.md): the specification. Capture (tab and opt-in microphone, AudioWorklet to 16 kHz PCM, WAV per segment, cuts at pauses), the OpenRouter queue with leases and an errors table, transcript lines that are never overwritten, notes with segment citations, storage types, permissions, privacy and consent, acceptance criteria A1 to A13. - [The plan](https://meetscribe.chrome-extension.voicedebrief.ai/plan/index.md): Phase 0 spike with eight go/no-go questions (S1 to S8) and a model bake-off, then three releases. ## Data and record - [Transcription models](https://meetscribe.chrome-extension.voicedebrief.ai/models/index.md): every OpenRouter speech-to-text model with price per hour, generated from a dated snapshot. - [data/stt-models.json](https://meetscribe.chrome-extension.voicedebrief.ai/data/stt-models.json): the snapshot itself (GET /api/v1/models?output_modalities=transcription plus each model's endpoints), with fetched_at. - [Sources](https://meetscribe.chrome-extension.voicedebrief.ai/sources/index.md): every external fact and where it was read. - [Release history](https://meetscribe.chrome-extension.voicedebrief.ai/versions/index.md): every release with what changed. - [Brief v1.0, as received](https://meetscribe.chrome-extension.voicedebrief.ai/brief/v1/index.md): the original, unedited below its header. Superseded; do not build from it. ## Facts an agent may need - Status words on this site: "built" is in the extension and tested; "specified" is in brief v2.0 and not built; "spike" is a question Phase 0 must answer on a real call; "proposed" is an idea the editor has not accepted. - The one rule: MeetScribe listens only while you can see that it is listening, keeps every second it heard until that second is transcribed or you delete it, and never shows a guess as a fact. - Manifest (built, and enforced by the validator): Manifest V3, minimum Chrome 116; permissions tabCapture, offscreen, activeTab, sidePanel, storage, unlimitedStorage, alarms (declarativeContent is in the brief, not yet used, so not requested); host_permissions https://openrouter.ai/* only; CSP script-src 'self'; connect-src https://openrouter.ai. - Endpoint: POST https://openrouter.ai/api/v1/audio/transcriptions with input_audio {data, format: "wav"}, response_format "verbose_json" (fallback "json"), provider {zdr: true}. Upstream timeout 60 s. Cost from usage.cost; null when absent, never 0. - Repository: https://github.com/VoiceDebrief/VoiceDebrief__Chrome_Extension__MeetScribe - Family: https://voicedebrief.ai (the product family), https://chrome-extensions.sgit.ai (how extensions are built here), https://fix-the-page.chrome-extension.sgit.ai (the sibling extension). - Code: extension/lib/{wav,vad,openrouter,queue,transcript,db,settings}.js are plain ES modules with no chrome.* except db (IndexedDB) and settings; tests/unit.test.mjs runs them in Node. tests/extension.test.mjs loads a TEST build in Chromium with a fake audio device and tests/helpers/replay.mjs as OpenRouter. - An offscreen document has chrome.runtime only: it reads settings through the service worker (found while building; see built/index.md). - The debrief: extension/lib/prompts.js (VoiceDebrief's summary-prompt.md made for a meeting, with its LOCALES), lib/debrief.js; POST /api/v1/chat/completions; stored on the meeting as debrief {markdown, model, locale, generatedAt, costUsd}; the transcript is never changed.