Meeting minutes
Minutes that survive contact with the people who were in the room.
Most write-ups fail the same three ways: they file an action as a decision, they call a settled limitation a risk, and they quietly replace a garbled transcription with a product name that was never said. Each has its own gate below.
Step 0: establish the setting
Ask once, at the first run, and record the answers in this file's conventions section so they are never asked twice.
- Who is in the room, and on which side? A recurring meeting usually has two or more parties: a client and a supplier, two departments, a steering group. Name them, and list the participants under each.
- Who has authority to decide? Name the person or party. This single answer drives the decision gate below, and getting it wrong turns a supplier's proposal into a client decision.
- What is the naming convention for people? For example
FirstName L.everywhere, with full names in the attendee block only. Pick one and it applies in prose and in tables alike. - Language, time zone, meeting cadence, filename convention.
- Does the user want a private briefing alongside the minutes? Some readers want a second, unshared document holding the analysis and the sensitive material. If yes, ask where it goes and in what language.
- Is the user a participant? If so, they are named like everyone else in the minutes. See the naming rule below, which exists because this is the mistake that gets made every time.
Until these are answered, do not draft. Minutes written on guessed authority have to be rewritten.
The reader-first principle
Minutes are read top to bottom by people who do not know which section they are in when they hit a given line. Every line has to be understandable without reading ahead.
- No forward references. Never point from item N to item N+k. If item N depends on a later one, reorder them.
- Decisions come before the actions that execute them.
- A gating action comes before the action it gates.
- One naming format, applied everywhere, including inside tables. A document that writes someone's initials in one row and their full name in the next has two conventions and no reader.
- The user is a participant, named like everyone else. When the person commissioning the minutes was in the room, refer to them by name throughout: in actions, in notes, in prose. Never by a role label such as "the project manager". A role label belongs to a document the user authored about their own role. Minutes record them acting alongside named others, and labelling only one participant by role creates an asymmetry and an unresolved referent. The test: is this document written by them about their role, or does it record them acting among others?
- Verify before settling for incomplete data. If a surname is missing, look it up in the available material before defaulting to a first name alone.
Output structure
Five sections, in this order.
1. Decisions taken
Table: number, decision, decided by, timestamp. Only what was explicitly confirmed during the meeting.
Decision or action. A decision closes a loop: "we have resolved that X". An action executes work. "Escalate to Y", "propose to Z", "send the note to W" are actions: they have an owner and an execution verb. A decision has no execution owner, it states the resolved choice. A line that starts with an action verb and names an owner belongs in section 2.
The authority test. A decision is taken by the party with authority over the matter, named in step 0. Two consequences:
- A technical or implementation choice announced by a supplier is that supplier communicating an approach. It is not the client's decision. It belongs in the narrative notes, or in section 3 as an assumption or a dependency, unless the deciding party explicitly accepts it and thereby closes the loop. In that case the decision is "the client accepted X", and the decider is the person who said so. Verify that acceptance verbatim before asserting it.
- Endorsed future work ("we agree that is the right direction, once the refactoring is done") is an action. It has an owner and a horizon. It goes in section 2.
For every candidate decision, ask: who pronounced it, and are they the party with authority to decide it? If the answer is a supplier on an execution matter, it is not a decision.
Negative decisions belong here too. Deciding not to do something yet, or to hold pending something else, closes a loop.
Anything that is neither a loop-closing decision nor an owned action is narrative. It lives in the prose, never in a table.
2. Actions
Table: number, title, description, owner, due, timestamp, whether it lands before the next meeting.
- One action per interaction. One person, one touchpoint, one counterpart is one action, however many topics it covers.
- No carry-forwards. Only actions discussed in this meeting appear. A topic not raised does not appear, even if it was an open action last time.
- If a previously assigned action was discussed, capture its current state as a fresh action, without labelling it a carry-forward.
- Owner is whoever committed to act. When it is ambiguous, pair the person who expressed the need with the person who showed an engagement signal.
- Run a dependency pass after the chronological one. If person A expressed a need and person B signalled engagement, that is an action, even when B's verbal marker is weak. Reading each line in isolation misses these relational chains, and they are usually the actions that matter.
3. Risks, assumptions and dependencies
Table: category, description, impact, likelihood, mitigation and owner, timestamp.
Three different things live here. Sort each candidate before placing it:
- Risk: a forward-looking exposure with real uncertainty and a possible adverse outcome. It carries a mitigation.
- Assumption: a state of the world the parties have accepted and are proceeding on, with no live attempt to change it. Phrase it as an accepted premise. "It is accepted that embedded images are not extracted, and users are guided accordingly."
- Dependency: B cannot proceed until A is done. Name both ends and the gating action.
The sorting rule. Before writing a row, ask whether the group is acting against this uncertainty, which makes it a risk with a mitigation, or living with it as a settled premise, which makes it an assumption. An accepted limitation, reported without alarm and with no corrective action against the limitation itself, is an assumption. Filing it as a risk manufactures alarm nobody in the room felt, and it tells the reader you misread it.
Tag each row with its category, then a sub-tag: technical, operational, strategic, financial, scheduling.
Every risk carries a mitigation. When none was discussed, write "none identified", which is itself a finding.
A confirmed event with known handling is a fact, not a risk: it belongs in the prose. Someone being away next week is handled in the actions. A meeting falling on a public holiday is a fact, so reschedule it. An event that already happened and was resolved is not a risk. One that happened and is unresolved is framed as recurrence until the fix lands, linked to its action.
4. Backlog candidates
Items raised as feature, governance or infrastructure candidates. They are not committed actions, they are ideas that need shortlisting before entering a backlog.
The admission test is strict. A candidate has to change or structure the product itself, its infrastructure, or its delivery process. These are not candidates and belong in the actions or the prose:
- Communication activities: demos, presentations, walkthroughs
- Engagement activities: stakeholder meetings, workshops
- Coordination: escalation, arbitration, follow-up loops
- Training and onboarding sessions
- Project-management deliverables: notes, memos, status updates
The candidates table is not the bucket for "raised but not yet allocated". Everything that fails the test goes somewhere specific.
In the minutes, summarise: number, title, description, raised by,
timestamp. The full user stories go in the standalone candidates
file, which the backlog-scanner skill produces.
5. Narrative notes
Prose organised by topic block, with timestamp ranges, for reference and knowledge management.
Open with a line saying the notes are for reference only and were compiled with AI support.
The topic consolidation pass, run before writing any prose. A subject gets opened, deferred, and reopened at scattered timestamps. Before writing, scan the whole transcript and gather every fragment of each subject into one coherent block that follows its logical arc (raised, deferred, answered, refined), rather than the chronological order of the recording. The block records where the subject landed, listing all its timestamps.
The recurring failure is treating each mention in isolation and producing four thin notes that look contradictory, on what was actually one thread that resolved. The test: for each subject, can a reader see the whole arc without hopping between blocks?
The sensitive-content filter
Flag and exclude by default anything in these categories, and surface the flagged list to the user before drafting.
- Personal behaviour, hours, access. After-hours activity, individual workflow choices, access incidents tied to a named person.
- Commentary on absent parties. Other departments, senior management, anyone not in the room. This includes positive commentary in a shared document.
- Budget, billing and scope tension named in the meeting.
- Criticism of an individual's work, and any mapping of one stakeholder's preferences against another's.
- Jokes, asides and teasing. Drop the verbatim, keep any substance underneath.
- Sensitive personnel topics. Departures, capacity worries, individual availability framed personally. Reframe as "unavailable owing to X" rather than naming a personal reason.
- Self-deprecation by the user. Keep the substance of what they said, drop the framing.
- Anything that would embarrass a named participant if put in writing and forwarded.
Sensitive material belongs in the private briefing, when the user has asked for one. Contractual and commercial terms stay out unless the user says otherwise.
The pre-draft arbitration gate
Before drafting, surface one consolidated list for the user to arbitrate, and wait for their answers.
- Sensitive-content flags. Every item triggering a category above: timestamp, verbatim, recommended handling (exclude, reformulate, keep).
- Ambiguous attributions. Every line where the speaker cannot be uniquely identified, which is constant when participants share a meeting account. Give the timestamp, the verbatim, your hypothesis, and the question.
- Proper nouns and tool names. Every term not obviously known: the spelling in the transcript, the likely correct spelling, and a request to confirm.
- Open decisions. Items that look like decisions but where confirmation is ambiguous, such as one party leaving before validating.
- Forward-looking signals, if the horizon pass is in use.
Post-production verification
Before delivering, run a verification pass against the transcript.
- Extract every proper noun, tool name, product name and acronym from the draft.
- Search each one in the source transcript for an exact or phonetically close match.
- Flag, visibly in the conversation, every term with no direct match: the term as written, the closest verbatim with its timestamp, and how many times it appears in the draft.
- Do not deliver until the user has resolved every flag.
This catches the unconscious substitution where a garbled transcription gets replaced with a real product name that resembles it. It happens without any awareness that a substitution occurred, which is exactly why the check has to be explicit rather than silent.
The horizon pass
Recurring meetings drift into forward-looking discussion, usually near the end. That material is an unsolicited elicitation of implicit strategy, and it is the part nobody writes down.
What it captures. Statements that project forward rather than report status, in exactly one of three classes:
- Interest: what the room would like the thing to become.
- Concern: what it fears, before anything is formalised.
- Specificity: a structural constraint that makes this programme's reading of the world non-generic.
What it is not. Not decisions, not actions, not backlog candidates. A theme that later crystallises into an arbitrable capability may pass the admission test and become a candidate. That is a decision someone takes, never an inference.
Where it lives. One living register file, outside the shared documents, in the location given in step 0. It keeps internal names and is never quoted in anything distributed.
Procedure.
- Load the register. If it cannot be read, stop and say so. Never start a fresh register over an existing one.
- Detect forward-looking statements across the whole transcript, not only the closing minutes.
- Merge rather than append. An existing theme updates its last-seen date and its counter. Only a genuinely new theme adds a row.
- Surface the delta in the arbitration gate, so the user validates that the signal is real and correctly classified.
- Write back in place, with targeted replacement. Never delete and recreate the file: a failed pass must not destroy weeks of accumulation.
Accumulation discipline. One occurrence is not a trend. Recurrence, tracked by first-seen, last-seen and a counter, is what separates signal from a one-off. Never infer a causal link between two statements just because they were said near each other.
Security carve-out. A security or network incident surfaced in the meeting is routed through the appropriate channel. It may be recorded in the register with its routing. It never enters the shared minutes or any distributed document.
Companion documents
The private briefing, when the user wants one. An analytical document, never shared with participants, holding the sensitive material from the filter and the analysis that does not belong in minutes.
Its mandatory section is blind spots. Beyond analysing what was said, scan the transcript for what the room missed: factual errors stated and left unchallenged, claims accepted without scrutiny, and angles nobody surfaced. This is the value only an outside reader brings, since participants cannot see their own blind spots. Run it every time, rather than only when an error is obvious.
- Verify before asserting a blind spot. If it is a factual or technical claim, confirm it against a primary source before writing that a participant was wrong. Quote their verbatim with its timestamp, then the corrected fact with its source.
- For each one, state the practical consequence, meaning which decision or action it distorts, and a non-confronting way to raise it. A supplier's technical error is raised by building on what they said, never by correcting them in public.
- Families worth checking every time: unchallenged technical claims; scope accepted without definition, such as "we accept 90%" with nobody naming the deferred 10%; single points of failure mentioned but not drawn out; cost dimensions absent from a budget discussion; second-order impacts on people who were not in the room.
Analyse the user's own contributions with the same depth. When the person commissioning the briefing was in the room, the briefing covers what they said, how it landed, what it brought, whether the response actually addressed it or evacuated it on an adjacent axis, and whether they undersold it. Treating the briefing as analyse-everyone-else leaves the most useful material on the table. Specifically capture:
- Substantive proposals they made, and how they were received.
- Rhetorical choices, including self-deprecation and framing devices: what they accomplished in the room, what they would cost in writing, and what to say instead with a different audience.
- Ownership signals. When one of their ideas was picked up by someone else without attribution, flag it as something to manage before the next decision point.
Backlog candidates: the standalone file, from backlog-scanner.
Stakeholder emails: one file per recipient.
Before delivering, list the companions
Produce a single block naming every companion document and its status:
Companion documents:
- Minutes: produced
- Private briefing: produced / declined by the user
- Backlog candidates: produced / declined by the user
- Stakeholder emails: produced / not applicable
A "declined" status requires the user's own words. Nothing declines itself by default: if the user has not decided, the companion is produced.
Renumber and verify. Whenever an item is removed or reordered in any table, scan every cross-reference in the document, including mitigations pointing at "action 4" and prose citing an item number, and update them. Then read the document through once more. A stale reference to a removed item breaks the document silently, and the reader is the one who finds it.