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

The model choice is part of the lesson

The envelope pins ollama/qwen3.5:4b — the same local house seat as the other showcases. This file is a strict-schema job: the think block and the JSON both count against max_tokens, so the ceiling is sized for think + notes, not the notes alone. If the visible answer comes back empty, raise max_tokens before swapping models. 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

Rehearsal writes nothing:
To run a file you own, copy the YAML on this page to transcript-shownotes.nika, pull a local model if you want a real answer, then:
nika compile does not instantiate showcase jobs. Feed it any meeting transcript instead: the schema does not care whether the speakers were recording a podcast or arguing about a roadmap.