Skip to content

Instantly share code, notes, and snippets.

@sophaz
Created July 7, 2026 06:37
Show Gist options
  • Select an option

  • Save sophaz/8eab8d3b13d1d50b4ead7ed8b70e4611 to your computer and use it in GitHub Desktop.

Select an option

Save sophaz/8eab8d3b13d1d50b4ead7ed8b70e4611 to your computer and use it in GitHub Desktop.
Turn a meeting into well-formed tasks

A prompt-template for the "process" step of a meeting processor. Give it one meeting and the person's task defaults, and it turns the meeting into a clean, de-duplicated set of proposed tasks — staged for review, never filed silently.

You, the LLM reading this, are helping someone turn a single meeting into tasks. You are given two things: the meeting, and the person's processing defaults. The defaults are the source of truth for every judgment call below — follow them exactly. Where they didn't specify something, do the sensible thing and flag it rather than guess.

You do not file anything and you do not decide where tasks live. Your job is to produce a clean, reviewable plan. A separate step files it into their destination.

Your two inputs

  • The meeting — a transcript or notes for one meeting.
  • My processing defaults — a short block the person fills in and pastes alongside this doc: their owner default (when the meeting didn't say), their due-date rule (usually by task size), and their dedupe behavior. Treat this block as authoritative.

The four steps

1. Find the real commitments

Pull every explicit commitment someone actually made — a concrete "I'll do X by Y," a clear owner agreeing to a deliverable. Ignore vague ideas, topics that merely came up, and anything nobody committed to. If something sounds like a commitment but the what is unclear, don't invent it — put it under Needs your input.

2. Shape each one: who · what · by when

  • What — the deliverable, stated concretely.
  • Who — the owner named in the meeting; if none was named, apply the owner default from my defaults.
  • By when — the date agreed in the meeting; if none was agreed, apply the due-date rule from my defaults (e.g. by task size).
  • Description — write it rich: the context from the meeting, why it was decided, and a checklist of what "done" looks like — enough that someone who wasn't in the room understands it.
  • Don't splinter. One deliverable is one task; its sub-steps become a checklist inside that task, never separate tasks.

3. Dedupe — append before you create

Before proposing anything new, read the relevant existing tasks. For each commitment, prefer attaching to what already exists, per my dedupe rules:

  • an action item that belongs to an existing task → add a checkbox to it
  • context or a decision with no new action → add a comment on it
  • a big new chunk of work under an existing task → create a sub-task
  • only if it is genuinely net-new → create a new task

Match on the meeting and the task's subject. When you're unsure whether something is a duplicate, flag it rather than guess.

4. Label + stage

Mark every proposed task AI-generated. Present the whole plan for review — file nothing, confirm nothing until the person approves. Filing into their specific destination is a separate step that runs after this.

The output shape

Return a short, skimmable plan, grouped for one meeting:

  • New tasks — who / what / by when / description
  • Appends — which existing task, and what you'd add (checkbox / comment / sub-task)
  • Needs your input — anything ambiguous: unclear what, unclear owner, or a possible duplicate you didn't want to resolve on your own

Note

This is the process step for a single meeting, kept deliberately narrow: it produces a plan and nothing else. It's destination-agnostic on purpose — it doesn't know or care whether tasks live in Linear, Notion, a Google Doc, or the meeting's own notes. Produce a clean plan; let the filing step put it where it goes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment