{
  "kind": "build-recipe",
  "id": "videos-to-newsletter",
  "part_no": "B-02",
  "html": "https://insidethemachine.ai/build/videos-to-newsletter",
  "md": "https://insidethemachine.ai/build/videos-to-newsletter.md",
  "mcp": "https://insidethemachine.ai/mcp",
  "recipe": {
    "id": "videos-to-newsletter",
    "family": "studio",
    "kind": "blueprint",
    "title": "Videos → newsletter",
    "one": "Turn this week's videos into a newsletter draft. Your machine drafts each section. Claude writes the intro and does the final edit.",
    "input": "This week's videos (files, or the caption files you already have).",
    "output": "A newsletter draft: subject line, intro, one section per video.",
    "claude": [
      "Writes the subject line and the intro: the hard writing.",
      "Edits the sections the checker flagged.",
      "Final review of the whole draft."
    ],
    "private": "Claude sees the drafted sections, not the full transcripts.",
    "roles": [
      "transcriber",
      "drafter",
      "decider"
    ],
    "stages": [
      {
        "id": "gather",
        "who": "you",
        "title": "Gather the week's videos",
        "body": "Video files, or the caption files you already have (then skip the next step)."
      },
      {
        "id": "transcribe",
        "who": "local",
        "role": "transcriber",
        "title": "Transcribe each video",
        "body": "Speech to text with timestamps. Runs on your machine."
      },
      {
        "id": "draft",
        "who": "local",
        "role": "drafter",
        "title": "Draft one section per video",
        "body": "About 120 words, 3 key points and one quote with its timestamp."
      },
      {
        "id": "check",
        "who": "local",
        "role": "decider",
        "title": "Check every draft",
        "body": "Local Jev asks: does it state a number that is not in the transcript (yes/no)? Is it in plain words (score)? Flags go to Claude."
      },
      {
        "id": "edit",
        "who": "claude",
        "title": "Claude writes the top and edits",
        "body": "Subject line, intro, fixes to flagged sections, one final read."
      },
      {
        "id": "yours",
        "who": "you",
        "title": "Make it yours",
        "body": "Add your own take. Check every number against the video. Then paste it into your newsletter tool."
      },
      {
        "id": "share",
        "who": "you",
        "title": "Share your run (optional)",
        "body": "At the end, the script shows exactly what it would upload: your chip, memory, the models, how long each stage took and the token counts. No prompts, no outputs, no file names. Say yes and it goes to our review queue. Nothing is public until we approve it."
      }
    ],
    "makeItYours": [
      "Readers subscribe to you. Add a paragraph only you could write.",
      "Check every number and quote against the video before you send."
    ],
    "tools": [
      "whisper-cpp",
      "ollama"
    ],
    "status": "not-run",
    "statusNote": "Blueprint. Not run yet. We will run it on our own newsletter, The Gap Report, from 10 Nov 2026."
  },
  "runs_from_gb": 8,
  "parts_by_memory_gb": [
    {
      "gb": 8,
      "usable": 6,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": "No model is small enough for the decider rule here, so the drafter's model decides too."
        }
      ],
      "ok": true
    },
    {
      "gb": 16,
      "usable": 12,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.5-0.8b",
          "name": "Qwen3.5 0.8B",
          "needGb": 2.6,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:0.8b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 24,
      "usable": 18,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 32,
      "usable": 24,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.5-4b",
          "name": "Qwen3.5 4B",
          "needGb": 5.8,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.5:4b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 48,
      "usable": 36,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        },
        {
          "role": "decider",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 64,
      "usable": 48,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        },
        {
          "role": "decider",
          "id": "gemma-4-12b",
          "name": "Gemma 4 12B",
          "needGb": 11.2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run gemma4:12b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 96,
      "usable": 72,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 128,
      "usable": 96,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 192,
      "usable": 144,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-flash-next",
          "name": "Qwen3.8-Flash-Next (125B-A6B)",
          "needGb": 140,
          "fit": {
            "state": "tight",
            "needs": null
          },
          "run": "ollama run qwen3.8-flash-next:125b-a6b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 256,
      "usable": 192,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-flash-next",
          "name": "Qwen3.8-Flash-Next (125B-A6B)",
          "needGb": 140,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8-flash-next:125b-a6b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    },
    {
      "gb": 512,
      "usable": 384,
      "picks": [
        {
          "role": "transcriber",
          "id": "distil-large-v3-5",
          "name": "Distil-Whisper large-v3.5",
          "needGb": 2,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": null,
          "note": "Open ASR Leaderboard (English): 6.76% words wrong"
        },
        {
          "role": "drafter",
          "id": "qwen3.8-flash-next",
          "name": "Qwen3.8-Flash-Next (125B-A6B)",
          "needGb": 140,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8-flash-next:125b-a6b",
          "note": null
        },
        {
          "role": "decider",
          "id": "qwen3.8-27b",
          "name": "Qwen3.8 27B",
          "needGb": 22.7,
          "fit": {
            "state": "good",
            "needs": null
          },
          "run": "ollama run qwen3.8:27b",
          "note": null
        }
      ],
      "ok": true
    }
  ],
  "receipts": [
    {
      "key": "claude_hybrid",
      "label": "Claude tokens, this recipe",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "claude_all",
      "label": "Claude tokens, all in Claude",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "local_minutes",
      "label": "Local minutes",
      "value": "not run yet",
      "n": 0,
      "note": null
    },
    {
      "key": "dollars",
      "label": "Claude dollars (estimate)",
      "value": "not run yet",
      "n": 0,
      "note": null
    }
  ],
  "data_dates": {
    "models": "2026-10-15",
    "speech": "2026-10-15",
    "images": "2026-10-15",
    "machines": "2026-10-15"
  }
}