Amud HaYomi is a daily Talmud cycle: one side of one dafדףfolio — one leaf of the Talmud a day, every day. A maggid shiurמגיד שיעורthe one who delivers the lecture who records a shiurשיעורlecture 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מסכתאtractate, daf and amudעמודside of the page. 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טייטלlit. "pointing" — keeping your place on the daf. 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.
מֵאֵימָתַי קוֹרִין אֶת שְׁמַע בְּעַרְבִין
מִשָּׁעָה שֶׁהַכֹּהֲנִים נִכְנָסִים לֶאֱכֹל בִּתְרוּמָתָן
עַד סוֹף הָאַשְׁמוּרָה הָרִאשׁוֹנָה דִּבְרֵי רַבִּי אֱלִיעֶזֶר
וַחֲכָמִים אוֹמְרִים עַד חֲצוֹת
רַבָּן גַּמְלִיאֵל אוֹמֵר עַד שֶׁיַּעֲלֶה עַמּוּד הַשַּׁחַר
מַעֲשֶׂה וּבָאוּ בָנָיו מִבֵּית הַמִּשְׁתֶּה
אָמְרוּ לוֹ לֹא קָרִינוּ אֶת שְׁמַע
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.
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.
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צורת הדףthe shape of the page. So next to the scrolling text there’s a facsimile of the printed daf, with a marker that follows the audio across the page.
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מפרשיםthe classic commentaries printed around the text on both sides, the first job is telling which words belong to the Gemara and which to a mefareshמפרשcommentator. 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.
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.
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.
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.