Skip to main content
T2 chain · podcasts / meetings: nika:read loads the raw transcript, ONE infer: with a strict schema: extracts chapters + pull-quotes + summary as typed data, nika:jq shapes the sections, and nika:write renders the publishable page. The model is called exactly once, and its output is schema-validated before anything downstream touches it.

The job

Show-notes are the chore between “episode recorded” and “episode published”: an hour of scrubbing for chapter marks and quotes. This workflow does the extraction in one bounded model call — bounded in shape (the schema rejects free-form prose) and in count (one infer, so the cost of an episode is the cost of one call, visible in nika check before you run).

The shape

The file

transcript-shownotes.nika.yaml

The model choice is part of the lesson

The envelope pins ollama/llama3.2:3b — deliberately NOT the showcase’s usual qwen3.5 — because this is a strict-schema job and a thinking model can burn the whole max_tokens budget inside its think block before emitting the first JSON token (engine issue #428: the output arrives empty yet the schema demanded content). The rule of thumb this file encodes: reasoning showcases pick a thinking model; strict-schema extraction picks a non-thinking one. The typed seam is the other half: because notes is schema-shaped, the jq step reads .chapters[] and .quotes[] as data — no regex over model prose, no “hopefully it used the same markdown headings this time”.

Run it

Feed it any meeting transcript instead: the schema does not care whether the speakers were recording a podcast or arguing about a roadmap.