A rainforest interior at dusk. One shaft of warm light falls through the canopy onto ferns and wet rock; the left of the frame stays in near darkness. The app uses scenes like this one to tell courses apart.

Lecture Notes

Press record when the lecturer starts talking. The notes are filed in your vault before you get home.

A Mac app that records a lecture, transcribes it on this machine's Neural Engine, and writes structured study notes into the right course folder of an Obsidian vault you already keep.

Download v0.1 Read the source

Apple silicon macOS 14 or later MIT, free needs a paid Claude subscription

What you actually end up with

Not a transcript, and not a screen inside another app you now have to check. A markdown file in the vault you already keep, which Obsidian reads as an ordinary note. This is the real output for a lecture on binary search trees, trimmed in the middle where the notes run long.

~/Vault/00 - Courses/CS 314H/Lectures/2026-07-30 — Binary Search Tree Deletion.md
---
title: "Binary Search Tree Deletion"
course: CS 314H
date: 2026-07-30
type: lecture
duration_min: 74
status: complete
detected_course: CS 314H
detection_confidence: high
tags:
  - lecture
  - cs-314h
---

Binary Search Tree Deletion

CS 314H · 2026-07-30

Deletion, three cases

  • Leaf. Remove it and null the parent's pointer.
  • One child. Splice the child into its place.
  • Two children. Copy the in-order successor's key into the node, then delete the successor instead. It has at most one child by construction, so case three reduces to case one or two.

Likely on exam

"The deletion case comes up on the final almost every year."

Sections, code blocks and the full transcript continue below in the real file.

The frontmatter is what Obsidian shows as properties, so the notes sort and filter by course and date without you tagging anything. The callout is there because the lecturer said it out loud; marking what was flagged as examinable is the one editorial judgement the app makes.

What it does

Audio goes to disk as it arrives. Not buffered in memory and written at the end. If the app crashes, or the battery goes, you lose the transcript and you still have the recording.

Transcription runs here. Parakeet TDT v3 through CoreML, on the Neural Engine. No audio ever leaves the machine. To be exact about what that does and does not mean: the recording stays put, but the text of the transcript is sent to Claude, because that is what the notes get written from.

Notes arrive during the lecture, not only after it. Every few minutes Claude writes an interim set from what has been said so far, so a lecture that ends badly, or a laptop that dies at minute fifty, still produced something worth reading.

When you stop, it starts over properly. The whole recording is transcribed again in a single pass, which is noticeably more accurate than the streaming text, and the note is written from that. The interim notes were the insurance policy; this is the real one.

It works out which course this was. Detection reads the transcript, matches it against the course folders already in your vault and against a roster if you keep one, and returns a course and a topic. When it is not confident it files under _Unsorted and says so in the note. It does not guess. A misfiled note quietly corrupts your revision material three months later, which is a worse outcome than an unfiled one sitting where you can see it.

A second copy, if you want one. Configure a mirror vault and every lecture is written into both, from the same source, in one pass. Nothing is ever synced from a copy.

The output is plain Obsidian markdown. YAML frontmatter with course, date, duration and status. Headings, lists, callouts. Anything the lecturer flagged as examinable comes back as an > [!important] callout, so the thing they said would be on the final is the thing you see first at 11pm. The library is read straight off the vault every time, with no index and no cache, so if you rename or move a note in Obsidian the app agrees with you on the next scan.

What it looks like

The recording screen. A dark scene photograph across the top with the word RECORDING beside an amber dot, the lecture title Binary Search Tree Deletion, a running clock reading 12:23 and a Stop and Write button. Below it, the live transcript in grey and the interim notes in white, ending in an amber callout marked Likely on exam.
Recording. It is the same screen before and during, because the moment those two states would swap is the moment a lecture is starting, and swapping the pane out then is how you lose your place. The transcript appears as each phrase is confirmed. The notes underneath are rewritten every few minutes.
A finished note open in the reader: the title Binary Search Tree Deletion, a section on the three deletion cases as a bulleted list, an amber-marked callout quoting the lecturer saying the deletion case comes up on the final almost every year, and the full transcript below.
The note, read back. Charter at 17pt on a fixed 68 character measure, whatever the window is doing, because widening a paragraph to fill a monitor is how a long read stops being one. The callout is a thing the lecturer said would be on the exam, quoted rather than paraphrased.
The library. Three bordered panels stacked down the page, headed CS 314H, M 340L and Unsorted, each with its own dark forest photograph and a list of dated lectures beneath. One row reads Red-Black Trees, unfinished, the recording ended before the notes were written.
A term of lectures. Courses are told apart by their scene rather than by a colour, which still works at a glance when there are nine of them. The hatch marks at the left of each row encode how fast the lecturer was talking, so a dense derivation and a slow proof look different before you read the title.
The first run check, headed What a recording needs. Five rows: This Mac ready, Microphone warning, Claude CLI blocking with the commands claude and slash login shown in a box, Transcription models warning with a Download the models button, and Vault ready.
First run checks everything that has to be true before a recording can turn into a note, while there is still time to fix it. Each failure carries the button or the exact command that fixes it. Only one of them actually blocks, and it is the Claude login, every time.
Settings, a tall single column: vault path and courses and lectures folder names with a worked example of the resulting path, a course list, mirrors, three model pickers for the live, final and detection passes, and recording options for the live pass interval and minimum words.
Settings. Vault, folder names, courses, mirrors, and which model does which of the three passes. Choosing a smaller model for the live pass, or raising the interval between live passes, is the lever if you are watching your usage limit.

What you need before it will work

Three of these are the sort of thing that turns a first launch into twenty minutes of confusion, so they are worth reading in full before you download rather than after.

How to get past each of these ›

Download

Free, MIT licensed, and the whole thing is on GitHub.

Download v0.1 Read the source