T2 chain · podcasts / meetings:nika:readloads the raw transcript, ONEinfer:with a strictschema:extracts chapters + pull-quotes + summary as typed data,nika:jqshapes the sections, andnika:writerenders 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 innika check before you run).
The shape
The file
transcript-shownotes.nika
The model choice is part of the lesson
The envelope pinsollama/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: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.