Sidecard

Lecture audio into flashcards, on the student’s own laptop. A card that cannot be traced to the lecture is held back.

Year
2026
Kind
Product in development
Stack
Rust, Tauri, whisper.cpp
Model
Optional: a local 7B model (qwen2.5:7b)

Background

Writing notes during a lecture splits attention, and letting a language model write the flashcards invents facts. Sidecard’s aim is cards a student can trust without pausing the lecture. That makes one rule central: every card must be traceable to something said in the lecture or shown on a slide.

Method

The audio is transcribed on the laptop by whisper.cpp, with words from the lecture’s slides passed in as a bias prompt. Fixed rules scrub the disfluencies and TextTiling splits the transcript into topics. Each topic is ranked for salience and trimmed to a density budget, and the deterministic path writes cloze and definition cards from the transcript’s own words. It needs no model at all.

A local model may draft richer cards, but only through a verifier. It checks every content word and number in a draft against the transcript and the slides, then checks the meaning, catching a dropped negation or a swapped pair such as hyper and hypo, or indicated and contraindicated. A draft that fails is discarded and the deterministic card for that sentence ships in its place. Every card then lands in a clean deck or a flagged tray, and each keeps the timestamped transcript lines it came from.

The hard part was a sentence with two clauses. An adversarial audit found that a card turning “contraindicated in X” into “indicated in X” passed when the same source sentence went on to say “indicated in Y”: the verifier had compared the card with the clause that agreed with it. Clause selection now ranks on the context the card shares with each clause, leaving out the pole word itself, so the card is set against the X clause and flagged as inverted.

Results

In a battery of 40 sentences from medical lectures, each drafted by a local 7B model, 25 drafts stayed within the evidence and shipped. The other 15 drifted from the transcript; the verifier rejected all 15, and the deterministic card shipped instead. A fresh, independent re-check of every card that shipped found none that should have been stopped.

Limitations

How many cards a lecture yields depends on the glossary drawn from its slides, so a thin glossary gives few cards. That failure costs coverage, not correctness, since a card that is never written cannot be wrong.

whisper.cpp misspells drug names, and a conservative fuzzy match against the glossary repairs only some of them, so a misspelling can reach a card. The verifier compares cards with the transcript, so it cannot catch an error the transcript itself contains. The density and ranking weights are placeholders until they are calibrated on a full recorded lecture, so the number of cards per topic is not yet tuned.

Its only user so far is its author, so the battery above shows that the cards are faithful to the lecture but not yet that they help another student learn.

Private repository; proprietary.