Open Meeting Notebook

Local-first meeting memory for recording, transcribing, diarizing, summarizing, and exporting meetings from a desktop app without inviting a bot to the call.

0meeting bots required
3recording tracks
12+export and draft paths
8tracked release sprints
Open Meeting Notebook
Implementation Sync
Local user

We will record locally, then transcribe after the meeting stops.

Remote speaker

The runtime status should show model cache, Python path, and ffmpeg.

Speaker 3

Export a summary bundle with transcript, redaction, and audio only when requested.

Production readiness at a glance

The website documents what is implemented, what still needs operational polish, and how to run the desktop app safely on a target Mac.

AreaStatusOwnerEvidence
Secure desktop shellImplementedElectron main/preloadContext isolation, renderer sandboxing, CSP, typed preload IPC, and request schemas are already present.
Recording foundationImplementedRenderer capture and RecordingServiceMicrophone/system/mixed capture, recording sessions, track paths, and playback track selection are implemented.
Managed transcription jobsImplementedTranscriptionServiceLifecycle phases, cancel, retry, process termination, and polling are complete.
Runtime diagnosticsPartialSettings and runtime servicesStatus checks exist; a full runtime/model manager page and diagnostics export are planned.
Export coveragePartialExportServiceBackend formats exist; richer export UI, high-fidelity DOCX, and PDF polish remain.
AutomationPlannedQuality sprintUnit tests exist; packaged-app smoke automation is planned for Sprint 7.

The product surface

The app is built around the real meeting workflow: calendar context, durable recording, transcript correction, AI outputs, and local export paths.

Local capture, no meeting bot

Records microphone, system audio, or a mixed review track from the desktop app without joining the meeting as another participant.

Transcription runtime control

Uses NVIDIA Parakeet TDT 0.6B v3 from an app-managed Python runtime, with optional pyannote diarization and explicit model cache actions.

Summary provider choice

Generates meeting outputs through Ollama, OpenRouter, OpenAI-compatible endpoints, Claude, Codex CLI, or the offline fallback path.

Vault-backed exports

Stores recordings and metadata locally, then exports Markdown, HTML, PDF, captions, text, clipboard payloads, Slack-ready drafts, and bundles.

Record to reusable notes

Each production step has an owner, a runtime dependency, and a visible user state so failures can be diagnosed instead of hidden.

Record

Start from a calendar event or quick recording, capture local microphone and available system audio, and persist audio chunks to the vault.

Audio source mode supports microphone, system, or both. The app keeps track-level paths and statistics for review.

Transcribe

After recording stops, the managed transcription job prepares audio, invokes Parakeet, and saves partial status updates.

Job phases include queued, preparing, transcribing, diarizing, aligning, saving, complete, failed, and cancelled.

Diarize

Optional pyannote diarization improves speaker labels and records alignment quality, confidence, roles, and warnings.

When pyannote is unavailable, heuristic speaker labels remain visible and non-blocking.

Summarize

Summary generation uses the selected provider, detail level, and template after transcript segments exist.

Supported templates include general, sales, interview, standup, and planning.

Export

Create reusable outputs with optional redaction, speaker labels, and audio bundle inclusion.

Current backend formats include Markdown, HTML, PDF, clipboard, email draft, Slack-ready text, SRT, VTT, TXT, DOCX-named text, and bundle.

Local-first architecture

The desktop shell keeps browser-facing code narrow while main-process services own filesystem, provider, runtime, and export work.

Renderer workspace

React desktop UI

Three-column agenda, recorder/transcript, and AI summary panel with local controls for capture, playback, transcription, provider selection, and export.

Secure preload IPC

Typed bridge

Context isolation, renderer sandboxing, channel validation, and explicit request schemas keep browser-facing calls narrow.

Main-process services

App orchestration

Services own calendar normalization, recording sessions, transcription jobs, provider adapters, summary creation, exports, permissions, settings, and vault access.

Local persistence

SQLite plus vault

Metadata lives in SQLite while audio, transcripts, summaries, model cache references, and export artifacts stay under local filesystem control.

External runtimes

Optional dependencies

Python, ffmpeg, Parakeet, pyannote, Ollama, and cloud model endpoints are detected and diagnosed before user workflows depend on them.

Find production documentation

Search the install, runtime, provider, export, storage, permissions, and QA notes that ship with this documentation site.

Security and permissions

The public docs call out the local-first guarantees, credential boundaries, and macOS permission requirements that matter in production.

Narrow IPC surface

Renderer calls pass through typed preload APIs and zod-validated request schemas before main-process services perform filesystem or provider work.

Local vault ownership

Audio, transcript, summary, and export artifacts stay under local filesystem control, with guardrails for path handling and selective deletion.

Credential checks

Provider credentials can be stored in app settings or supplied by environment variables, and the UI reports saved and environment status separately.

Permission diagnostics

The app surfaces microphone, system audio, and calendar permission status, plus direct paths to macOS settings when repair is needed.

Move the website folder when you are ready

The site is self-contained under the Next.js folder, with copied brand assets and no dependency on the Electron build pipeline.