Build1 publisher3 min readPublished
A bias list of course terms beat every model swap in a lecture note-taker
Nabeel Baghoor shipped a lecture note-taker before he shipped voice agents, and reports that his accuracy wins on the note-taking side came from the recording path and a domain vocabulary bias list, with provider benchmarks a distant third.
The Engineer · Build desk

What happened
- Nabeel Baghoor shipped LectureNotes AI, an app that records a lecture and turns it into a summary and a revision outline, then moved to voice agents and opened a Retell call transcript.
- He writes that a fifty minute lecture and a caller on a phone line share a model family and almost nothing else, failing differently and being evaluated differently at different layers.
- In batch, the audio arrives as one file, and three minutes of compute on an hour of it means the student sees it as ready when they look, with a rerun always available.
- Recording conditions, not the transcription model, produced the single biggest accuracy win on the note-taking side.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- decision Anyone ingesting audio has a sequencing choice to make in week one: session handling and capture format, or a provider bake-off stuck with whatever words the microphone got.
- constraint An aggregate WER gate cannot express what these users need, because the words with no surrounding redundancy are a tiny minority of the score and get averaged away.
- capability The bias-list technique carries across products, because a phone agent has its own zero-redundancy tokens in postcodes, registration numbers and email addresses that a five-field test can measure directly.
- precedent A team that ships a batch note-taker and then a live agent should budget for rebuilding endpointing and evaluation, since the streaming turn removes the retry the batch design leaned on.
Start with the headroom. The batch figure Baghoor gives is three minutes of compute on an hour of audio, which is 180 seconds against 3,600 [6]. That is 5 percent of the recording's length, and running the pass again with different settings takes it to 10 percent, which the student never sees because the laptop is already shut [23][5]. The same 180 seconds is 22 to 60 times the length of one voice-agent turn, where the useful unit is three to eight seconds and the transcript is consumed immediately by a model that is about to say something out loud [24][7]. A live call gets one pass, and every millisecond of compute is silence the caller is listening to [8].
The claim that will annoy provider sales engineers is that the gap between two good STT models is noise [10]. It arrives with its conditions attached: a phone lying on a desk six rows back, hard walls, an air conditioner, a lecturer who walks around [10]. For that to transfer, your capture path has to be as bad as his. On a clean line-level feed, reverberation is not swamping the difference, and model choice can show up in the numbers. His fix list sits upstream of the model in any case: keep the recording session alive through screen locking and backgrounding, be honest in the UI about what a bad recording will produce, and get sample rate and format right at the source instead of repairing them downstream [11]. "If you upsample rubbish you get expensive rubbish," he wrote [12].
"WER treats every word as equal. Users do not," Baghoor wrote [13]. The reason he gives is redundancy. Course jargon, people's names, formula names and abbreviations are the tokens with the least of it, so context cannot repair them when they come out wrong [14]. That also explains the scoring he reports, where a transcript that quietly drops filler words and tidies false starts tests better than a faithful one [15]. Feeding known domain vocabulary in as a bias list or prompt hint bought more perceived quality than any model swap he tried [16]. On the phone side the zero-redundancy tokens are identifiers: a postcode, a registration number or an email address stands alone, with no surrounding words to say what it should have been [17]. He suggests picking the twenty terms or five fields that matter and measuring those [18].
For the lecture app the deliverable is the summary and the outline [19]. Where you cut mattered more than he expected. Chunking around natural pauses with overlap, instead of fixed character windows that slice a definition in half, produced noticeably better output for the same model and the same prompt [20]. Carrying timestamps all the way through mattered too, so a student can jump from a summary line back to the moment it came from: "Traceability is a feature, not plumbing," he wrote [21]. And structure is a product decision that belongs in the design, ahead of the prompt [27].
This is one engineer's account of two products he shipped. "I was wrong in a way that cost me a few weeks," Baghoor wrote, and he calls what follows "the honest split, after shipping both" [3][26]. I would take the layering and leave the ranking. The evaluation point holds without his acoustics, because an aggregate score averages over exactly the tokens a reader opened the transcript for [13][14]. The vocabulary hint holds wherever your provider exposes one, and it costs a list of twenty terms [16][18].
What to watch
- Turn-level latency or term-recall numbers from the voice-agent side would let other teams check the split Baghoor draws from how the two systems work, and nothing else.
- Whether STT providers keep exposing vocabulary bias lists and prompt hints, since the largest win he reports depends on that API existing.
- Whether the five-field identifier test he proposes for phone calls produces the same gain he reports for lecture terminology.