ak®
Back to selected work

PROJECT / LOCAL-FIRST MEETING TOOLS

Local Meeting Assistant

Capture a meeting, understand what was said, and return to the source. A native Mac menu bar app that keeps recordings, transcription and review on the device.

Swift / SwiftUISwiftPMScreenCaptureKitSpeechAnalyzerFoundationModelsVision OCR

Working baseline · Version 0.1.0, not released. macOS 26+ on Apple silicon. Implementation and validation status follow the supplied project overview; original specification goals are not treated as shipped features.

DOWNLOAD FOR MAC

Download Local Meeting Assistant.

Version 0.1.0 · 2.0 MB. Requires macOS 26 or later on Apple silicon.

Development preview · unreleased working baseline. The app is Developer ID signed; notarisation has not been confirmed and no ticket is stapled. macOS may block it from opening.

Download Local Meeting Assistant .dmg

Install on your Mac

  1. Open the downloaded disk image.
  2. Drag the app into Applications.
  3. Open the app from Applications.

Screen & System Audio Recording and Microphone permissions are required for capture. The app cannot verify participant consent; recordings and transcripts are stored locally.

Download SHA-256 checksum

The product

Local Meeting Assistant gives people a searchable, editable personal meeting record without a meeting bot, hosted account or transcription server. Start capture from the menu bar, review live text, then revisit video or original audio directly from a transcript passage.

Capture → transcribe → review

Three capture modes share one evidence-preserving workflow.

Choose the scope

Record the full display, one chosen app, or audio only. One-app capture fails with an explanation if isolation becomes unavailable rather than widening silently to full screen. Pause and resume are available only in audio-only mode.

Keep the sources

System audio and microphone audio remain separate canonical CAF files. A compressed MP4 combines the video with a mono speech mix, while the source tracks stay available for transcription and inspection.

Transcribe on the Mac

Apple SpeechAnalyzer and SpeechTranscriber process each track locally during capture or later from saved files. Initial setup can download the operating system’s speech model; no server fallback is implemented.

Review against the recording

Click timestamps or extracted items to play their source. Search titles, tags, notes and transcript text, and inspect individual source tracks, offsets, peak levels and SHA-256 checksums.

Edit without losing the original

An immutable machine transcript is retained separately from timestamped corrections. Original-machine and corrected exports stay distinguishable.

A modular native pipeline

The application is a SwiftPM package with separate targets for domain logic, storage, capture, transcription, vision and the SwiftUI menu bar interface. It uses the Swift 6.2 toolchain in Swift 5 language mode, without an Xcode project.

MeetingCore and MeetingStorage

Domain rules cover edits, echoes, note extraction, exports and retention. A folder per meeting holds atomic JSON manifests, source media, transcripts, edits, summaries and speaker suggestions.

MeetingCapture

ScreenCaptureKit supplies display/app capture and system audio. Video modes obtain the microphone from the capture stream; audio-only mode uses AVAudioEngine. Shared host timestamps retain track offsets.

Persist first, infer asynchronously

Realtime callbacks write and enqueue; encoding and transcription do not block capture. Recovery scans identify unfinished sessions rather than deleting their media.

MeetingTranscription and MeetingVision

SpeechAnalyzer handles file and live transcription, FoundationModels supports local summaries, and Vision reads candidate names from sampled frames. A transcription protocol leaves room for a future WhisperKit backend; it is not the current backend.

Small recordings, preserved sources

With compressed recording enabled, video is encoded live to HEVC at up to 1280 pixels wide, 12 fps and approximately 500 kbps. On stop, video samples are copied into the final MP4 alongside aligned mono 24 kHz AAC audio at 32 kbps, avoiding a large intermediate video.

Observed result

A recorded two-minute test produced a 9.5 MB movie, compared with approximately 112 MB for the uncompressed recording. This is a specific test result rather than a universal storage guarantee.

Failure handling

If combining fails, the video is retained without audio and a warning is added; independent CAF tracks remain. The MP4 is finalised at stop, so a crash may leave the video unusable.

Assistance that remains reviewable

Generated outputs and speaker labels are suggestions rather than invisible changes to the meeting record.

Summaries and source-linked notes

Apple’s on-device model produces labelled, chunked summaries when available. Rule-based decisions, actions and substantive questions begin unconfirmed and link back to evidence. Verbatim key passages are labelled separately from summaries.

Speaker suggestions

Sampled video frames, self-introductions and addressing cues can suggest names with a source and confidence. Only confirmed names replace neutral labels. This is per-line attribution, not voice diarization; OCR produced garbled names in the recorded test.

Echo handling

Microphone lines matching nearby system-audio text can be hidden from review and exports without deleting the machine original. A control reveals them; headphones remain the recommended way to reduce acoustic leakage.

Portable review

Markdown, plain text, JSON, SRT and WebVTT exports distinguish corrected and machine text. JSON records edit and echo inclusion metadata; users can also save the MP4 or original audio.

Privacy, retention and permissions

Capture and inference are local, with no analytics, accounts or cloud processing in the documented baseline. The initial macOS speech-model download is a separate network operation. Screen/system-audio and microphone permissions are explicit, with a per-recording consent acknowledgement that cannot establish participant consent.

At-rest protection

The current library relies on FileVault. App-managed encryption is future work, not an implemented property. Exported files and external backups remain under the user’s control.

Conservative retention

Keep forever is the default. Optional rules can remove media while retaining text or delete whole meetings after a chosen period. Hold protects a meeting from automatic deletion.

Visible recording state

Text and symbols accompany the recording indicator rather than colour alone. Disk-space checks, silence/device warnings and explicit failure states make capture problems visible.

Validation and next steps

The supplied overview records 18 passing domain tests, successful real two-minute capture/transcription/compression tests, a real mux test and local summary generation on an actual transcript. Those checks are evidence for a working baseline, not release acceptance.

Still to validate

Kill-during-recording recovery, one-to-two-hour sync/memory/thermal behaviour and one-app capture on real meeting platforms remain untested. Accessibility review and localisation have not been completed.

Known limits

Speaker attribution has no voice separation; OCR can be garbled. Microphone device changes stop that track with a warning. English is the initial focus, with other languages dependent on macOS model support.

Future work

Improve OCR, validate long recordings and recovery, then evaluate voice diarization, a Whisper backend, optional encrypted storage and opt-in calendar association. Bots, cloud processing, accounts and sync are not planned.

Distribution

The baseline is not sandboxed or notarised and has not been publicly released. Signing during local installation is distinct from a completed distribution/notarisation workflow.

Explore the project

Discuss Local Meeting Assistant

Based on the supplied project overview and specification revisions. The overview and later specification additions take precedence over the original brief. Product status and verification results are recorded snapshots, not new tests performed for this portfolio.