Amud HaYomi is a daily Talmud cycle: one side of one daf a day, every day. A maggid shiur who records a shiur in Yiddish on each day’s page asked us whether his podcast feed could become an app. It did: a catalog organized the way the Talmud itself is organized, by maseches, daf and amud. Simple enough.

While we built it, we kept looking for a place where AI could add something real. This article is about the one we found.

A shiur is fifteen to forty minutes of audio working through a dense page of Hebrew and Aramaic. Listeners follow along in their own Gemara, and the perennial problem is losing your place: which line is he on? Yiddish even has a word for keeping your place on the page: teitel. And plenty of listeners don’t have a volume in hand at all. We wanted the app to do for the daf what Spotify does for lyrics: the text follows the audio, the current passage lights up, and a marker moves down the page as he learns.

We had almost nothing to start from. Each recording was labelled with the amud it covered, and that was all: no transcript, no timestamps. And the audio is Yiddish. Not textbook Yiddish, but the Chassidic Yiddish of Brooklyn, with Aramaic quoted mid-sentence. Here is what shipped, and how we got there.

amud hayomi — playing shiuraligned

מֵאֵימָתַי קוֹרִין אֶת שְׁמַע בְּעַרְבִין

מִשָּׁעָה שֶׁהַכֹּהֲנִים נִכְנָסִים לֶאֱכֹל בִּתְרוּמָתָן

עַד סוֹף הָאַשְׁמוּרָה הָרִאשׁוֹנָה דִּבְרֵי רַבִּי אֱלִיעֶזֶר

וַחֲכָמִים אוֹמְרִים עַד חֲצוֹת

רַבָּן גַּמְלִיאֵל אוֹמֵר עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר

מַעֲשֶׂה וּבָאוּ בָנָיו מִבֵּית הַמִּשְׁתֶּה

אָמְרוּ לוֹ לֹא קָרִינוּ אֶת שְׁמַע

ברכות ב ע״א0:00 / 41:17
7 anchors on this amudhighlight = span between anchors

Getting the words out of the audio

Off-the-shelf speech recognition falls apart on this audio. OpenAI’s Whisper, the standard model for turning speech into text, doesn’t just make mistakes on Chassidic Yiddish. It hallucinates. It confidently writes sentences that are either nonsense, or perfectly fluent and completely unrelated to what was said. The fix was an open-source version of Whisper trained further on Yiddish. On this material the difference is night and day. It even gets the Aramaic quotations mostly right, and those turned out to be the part we needed most.

Speed was the next problem. On a laptop, the model can keep up with one new shiur a day, but not with a back catalog of more than eight hundred. So the backlog ran on a single rented cloud GPU: more than five hundred hours of audio, transcribed in under three hours, for about nine dollars.

transcribe — yi-whisper (MLX)
|
|
|
|
|
Episodes transcribed0 / 812

Pinning the words to the page

A transcript with timestamps solves half the problem. The other half is finding where, in forty minutes of explanation, the maggid shiur is actually reading the page. When he reads, his words match the printed text. When he explains, they don’t. Those moments of reading are what we sync to, and we call them anchors.

Finding them takes forgiveness and suspicion at the same time. Forgiveness, because the transcript is never perfect, so the matching has to accept near-misses in spelling. Suspicion, because a common phrase like אמר רבי appears forty times on a page and proves nothing, while a distinctive run of four words can only be in one place. One more rule settles most of the rest: the audio moves forward, so the anchors must too. Any match that would have him jump back up the page is thrown out.

The principle that won, after trying several approaches, was precision over recall. Anchors are deliberately sparse, and the app highlights the passage between two anchors instead of faking word-by-word karaoke. A gap in the highlighting goes unnoticed. A wrong highlight teaches the listener not to trust the feature. Whenever we had to choose, we chose the gap.

align — anchor chain
|
|
anchor @ 00:15.8
מאימתי קורין את שמע — word 0
97%
anchor @ 00:31.6
משעה שהכהנים נכנסים — word 4
94%
anchor @ 02:03.2
עד סוף האשמורה הראשונה — word 11
91%
|
|

The shape of the page

Talmud study has a fixed visual geography. Since the Vilna printing of the 1880s, every daf has had the same layout: the Gemara in the middle, the classic commentaries wrapped around it. Serious learners don’t want a column of text. They want their page, the tzuras hadaf. So next to the scrolling text there’s a facsimile of the printed daf, with a marker that follows the audio across the page.

the gemara — the Talmud text itself
מאימתי
the meforshim — commentaries wrapping the text

That meant knowing where every word sits on the page image. The scans had machine-read text hidden inside them, but getting it out and tying each word back to its place on the page took some digging. The layout makes it harder. With meforshim on both sides, the first job is telling which words belong to the Gemara and which to a mefaresh. In the end every word of Gemara got a marked position on the page, and the audio could be anchored to the page itself, under the same rule as before: a marker on the wrong line is worse than no marker.

extract — daf pdf
|
|
|
|
Words matched to boxes0 / 363
tzuras hadaf — shekalim 2acoverage 99.2%
שקליםפרק ראשוןב.
word index → bounding boxword 0 / 366

Language models get a veto, not a pen

After that first pass, about half the episodes were good enough to go live. The rest sat in a grey zone: real anchors and decent coverage, but not quite enough confidence to publish. The tempting move was to give a large language model the transcript and the page and ask it for better timestamps. We ruled that out early. Asked to write timestamps, a language model produces confident, plausible and often wrong ones.

It also fails in a more interesting way. Because it understands meaning, it tends to anchor a line to the moment the maggid shiur explains it, rather than the moment he quotes it. That’s a sensible answer, and exactly the wrong one for following along. So language models don’t write anchors.

They got a narrower job: judge. For each grey-zone episode, the model sees every machine-made anchor in its context and votes keep or drop. It can remove anchors but never add them. We auditioned Claude Sonnet 4.6 and Gemini 3.1 Pro, and the result was clear. Gemini understands Chassidic Yiddish markedly better: the register, the switches into Aramaic, the way a quotation dissolves into explanation. So Gemini got the job, with Claude as the backup.

Before trusting the judge, we tested it on episodes whose alignment we already trusted. Its median disagreement was zero seconds, and its mistakes ran in the safe direction: it throws out good anchors more readily than it keeps bad ones. In the end it rescued 191 episodes, and nothing a language model wrote ever reaches a listener.

review — llm verify pass
|
|
@ 03:12הבערה ללאו יצאת — word 18Verified
@ 07:44שגג בזה ובזה — word 63Verified
@ 11:02אמר רב נחמן — word 96Review
@ 15:37וקים ליה בדרבה מיניה — word 141Verified
37 / 41 kept (90%)needs_review
0
Episodes promoted by review

Making it run itself

A backfill is a project. A pipeline is a product. New shiurim arrive every day on the podcast feed, and every night a job picks up whatever is new: transcribe, align, check, send the grey zone to the judge, and publish whatever qualifies. Corrections made by hand are never overwritten, and episodes that fall short wait for a person instead of shipping. By the time the morning’s listeners open today’s amud, yesterday’s shiur follows along.

nightly — self-running pipeline
RSS Feed
New shiur detected
RSS
Transcribe
Transcribe
yi-whisper on Apple MLX
Align
Anchor to the daf
Gate
LiveLLM review
Live
Pushed to production
LLM review
Gemini verifies anchors
0
Episodes transcribed & aligned
0
Word-level anchors in production
0%
Of amudim with live sync
$0
GPU bill for the full backfill

What made it work

None of the pieces is exotic: an open-source speech model, forgiving text matching, reading text out of PDFs, a few calls to a language model. What made it work was deciding who gets to decide. Plain code makes the decisions, statistical models make suggestions, language models get a veto, and anything below the bar falls back to a quieter experience rather than a wrong one. We keep reaching for that pattern whenever AI faces real users: put each model to work on what it’s genuinely good at, and never just hand it the keys.

See it live at shasinyiddish.com.

amud hayomi — tzuras hadafaligned
טעקסטצורת הדף
יומאפרק שלישילג.
יומא לג ע״א0:00 / 38:52