Lectern

A native Mac study tool I built for my girlfriend.

Role
Product Designer and macOS Developer
Years
2026
Lectern project cover

I built Lectern for my girlfriend. I wanted her to press record in class and walk out with a clean transcript and something she could actually study from.

So Lectern does one thing: it takes class audio and turns it into a transcript, a summary, an outline and flashcards, in one clear path, on her Mac.

A silver MacBook Pro open on a wooden desk in front of library bookshelves, showing Lectern's Flashcards tab for a Cell Biology lecture with every card flipped to show its answer.

Start with the lecture

She can record from the Mac’s microphone or drop in an audio file she already has. The record button is big on purpose, so the main action is always obvious. Keyboard shortcuts cover recording, stopping and file import.

The New Recording screen: an optional title field, a large blue record button, a 00:00 timer and an Import button for existing audio files.
Recording in progress: the record button has turned red with a stop square, the title reads Bio 101, Lecture 5: Photosynthesis, and the timer shows 00:07.

When a recording ends, Lectern saves the audio and starts transcribing straight away. Each recording lives in the library with its transcript and study material.

Transcription running on the Mac after a recording ends: the new lecture appears at the top of the library, and a progress bar at 54 percent shows the line being transcribed.

Local first

Her lectures are hers, so transcription runs on the Mac by default. WhisperKit runs Whisper’s large-v3 model locally and handles lectures in more than one language without sending audio anywhere.

The first transcription downloads the model. After that, it works offline. The app always says where a recording stays and which features would use a cloud service.

For a really rough recording, she can choose to rerun it through ElevenLabs Scribe. That option is visible and optional. It never replaces the local default.

A French microeconomics lecture transcribed in French, with timestamps, marked FR in the library.
Transcription settings: the local Whisper large-v3 model, automatic language detection and an optional ElevenLabs Scribe key for cloud reruns.

Study material from one source

Every study aid comes from the transcript. Lectern makes:

  • a one-page summary of key points, definitions and open questions;
  • an outline that goes from big themes down to specific facts; and
  • question-and-answer flashcards that export to Anki.
The Summary tab for the cell membrane lecture: topic, key points, definitions and open questions.
The Outline tab: the lecture broken down from the plasma membrane into structure, permeability and transport, then into specific facts.

I told the model to stay in the lecture’s language and not add anything that isn’t in the transcript. The study material should reflect what the lecturer actually said, nothing more.

The Flashcards tab with ten question cards for the cell membrane lecture; two are flipped to show their answers.
An empty Outline tab for an Art History lecture, with a Generate Outline button and a note on what the outline will contain.
Flashcards before any are flipped: each card shows a question and a prompt to click to reveal the answer.

A real Mac app

I built Lectern in SwiftUI for macOS 14, with native navigation, menus, file import, shortcuts, playback and export, so it feels like it belongs on a Mac.

Recordings and transcripts go to her Documents folder. API keys go to the macOS Keychain. Everything exports as Markdown, plain text or CSV, so nothing gets locked inside Lectern.

The Export menu open on the Flashcards tab, with Markdown, plain text and Anki CSV options.
AI Models settings: choose the provider for summaries, outlines and flashcards and paste an API key, which is stored in the macOS Keychain.

Shipping it to her

I didn’t stop at a prototype. I generated the Xcode project, built the app and packaged a DMG she could install herself.

The build is ad hoc signed for now, so macOS asks for a right-click the first time she opens it. A Developer ID and a notarized release are next.

The first screen she sees after installing: Welcome to Lectern, with a short description and a Get started button.
The onboarding permission step: a single request for microphone access, explaining that audio stays on the Mac.

What I learned

Lectern is small on purpose. It doesn’t try to be a knowledge system. It handles one person’s workflow from start to finish.

Building for someone close to me changed how I judged the work. The question was never whether the feature list looked complete. It was whether she could record a class, trust where the audio went and get study material that helped, without learning a new system.

Outcome

  • Built and packaged a working native macOS app as a DMG.
  • Added local multilingual transcription through WhisperKit.
  • Kept recordings and transcripts on the Mac unless the user chooses a cloud service.
Next project Enverus