Meeting minutes template, by meeting type
Last updated: · Reviewed quarterly
Every meeting record answers the same four questions: what was decided, who owns it, what is still open, and what happens next. The frame below is free and complete and works for any meeting. Under it, a template for each of the eight meeting types a working week is actually made of, and then the part these pages exist for: how the write-up gets done when nobody in the room is taking notes.
The meeting minutes template
Copy this. It is the frame every template further down this page varies, and on its own it is enough for most meetings.
# <Meeting name>, <date>
**Present:**
**Absent:**
## Purpose
<why this meeting happened, in one sentence>
## Discussion
### <topic>
<what was said that matters later, not a transcript>
## Decisions
| Decision | Owner | Date |
| --- | --- | --- |
## Actions
| Action | Owner | Due |
| --- | --- | --- |
## Parked / open questions
<raised, not resolved, each with a name>
## Next meeting
Two habits make the difference between a record and a transcript. Write the discussion for the person who was not there, which means the reasoning rather than the exchange. And put a name in every owner column before the meeting ends, because an action with no owner is a note about something that will not happen.
What a meeting record has to contain
Formats differ, and the differences matter less than people writing them expect. Whatever the layout, a record that omits any of these four is not a record of a meeting, it is a summary of a conversation.
| Element | Why it is not optional | The usual failure |
|---|---|---|
| Decisions, with owners | The only part anybody looks up later, and the reason the file is opened at all. | Recorded as a discussion, so the reader can tell what was said but not what was settled. |
| Actions, with owners and dates | An action without a name is a wish, and one without a date is a wish with better formatting. | Owners assigned to a team rather than a person. |
| What is still open | An unresolved question that is not written down is indistinguishable, a month later, from one that was answered. | Omitted, because a record of loose ends feels like an admission. |
| Who was there, and who was not | Absence is what makes the record necessary. The list of people not in the room is the readership. | Filled in for the room and left blank for the absentees. |
Everything else is convention. Formal minutes for a governed body add a call to order, motions with movers and seconders, and votes; working minutes for a team drop all of that and add owner columns. Neither is more correct than the other, they are answering to different readers.
The agenda is a separate craft from the record, and a good one is what makes a short record possible: topics phrased as questions, a type per item, and time allocated rather than assumed. Meeting overload covers how to write one, and how to work out whether the meeting should exist at all.
How to write meeting minutes
Four steps, and the order is what keeps it under ten minutes.
- Fill in the frame before the meeting. Name, date, purpose, expected attendees. A blank page at the end of a meeting is what makes the write-up feel like a task rather than a tidy-up.
- Capture decisions as they land, not at the end. One line, in the moment. The reconstruction at the end is where accuracy goes, because by then the room has moved on twice.
- Read the actions out loud before closing. Thirty seconds, and it is the only reliable way to find out that the thing everyone agreed on has no owner.
- Circulate the same day, to the people who were not there. A record written for the absent gets read; a record written for the archive does not, and it stops being written within a month.
Step two is where this breaks, and it breaks for a structural reason rather than a lack of discipline: the person best placed to write the record is usually the person chairing, and chairing well and typing accurately cannot be done at once. That is what the second half of this page is about.
A template for each meeting
Eight pages, one per meeting type, each with its own template, the failure mode particular to it, and a preset that writes it. They are the meetings a working week is made of, which is not the same list as the ones with the most search traffic.
- One-on-one meeting agenda template: The recurring conversation whose value is the thread across months, plus the boundary block that keeps part of it out of the file. Performance reviews are on this page too.
- Team meeting agenda template: The weekly where the small cross-cutting decisions happen, with an unowned bucket for the blocker everybody nodded at.
- Staff meeting agenda template: The one you attend rather than run, where escalations get a status and you record what you committed to upward.
- Project kickoff meeting agenda template: The meeting with the longest half-life, and the out-of-scope list that is the only part anyone argues about later.
- Agile ceremony templates: Five templates on one page: daily scrum, sprint planning, sprint review, retrospective and backlog refinement.
- Strategic planning meeting agenda template: Planning, OKR setting and offsites, with the rejected-options table that makes a later reversal a decision rather than a drift.
- Project status meeting agenda template: Status and steering, with a date-change log and approvals recorded in the words the approver used.
- All-hands meeting agenda template: All-hands and town halls, where the Q&A is the half worth keeping and the owed answers need names and dates.
Meetings with no template of their own
These get a section here rather than a page, because a page needs a reader arriving at it and nobody searches for these. The frame at the top plus one adjustment covers each.
Stakeholder review, sync, demo and readout
Use the frame at the top with one addition: a column recording what each stakeholder asked for, attributed, because the point of the meeting is that several people want different things and the record has to survive all of them. What was shown matters less than what was requested and by whom.
Design review and critique
The frame, with the discussion section organised by the thing being reviewed rather than by speaker, and a decisions table that records which direction was chosen and why. Record the reasoning and the same alternative stops being proposed again next month.
Discovery and customer interview
The frame, with the discussion kept as close to the customer's own words as you can manage. Everything else in this pillar is improved by summarising and this is the one case where it is not: the phrase the customer used is the finding, and your paraphrase of it is an interpretation you cannot check later.
Postmortem and incident review
The frame with a timeline block before Discussion, and the timeline is the whole document. Record what was known at each point rather than what was true, since the gap between the two is what the review exists to find. Keep it blameless in the record as well as in the room.
Roadmap review
The frame plus a sequence table, and one addition: what moved, and what it moved past. A review that records only the new order loses the trade-off, and the trade-off is what gets questioned afterwards.
Performance reviews are on the one-on-one page rather than here, because a review is structurally a 1:1: the same carried-over block, the same boundary about what stays out of the file, and a content that is drawn almost entirely from a year of the ordinary ones. Skip-levels are the opposite case, and they get neither a template nor a section. The meeting works because the substance travels and the source does not, which a verbatim record destroys, so skip-level meetings makes the case for keeping no record of one and this pillar defers to it.
Usability sessions and user interviews get neither, and the reason is not that the meetings are rare. Across 2,222 template searches in this category there are zero for either. The people who run them already have a script, a note-taking protocol and a synthesis method, and a generic minutes template would be a downgrade. What they need from a record is verbatim accuracy and a timestamp, not a decisions table.
Where the template runs out
What defeats people is filling the template in twenty minutes after the meeting, while the next one is starting.
The failure has a predictable shape. Notes get written for the first three meetings of a recurring series and then they stop, and the series that most needs a record is the one that has been running longest, which is precisely the one whose notes ran out in March. The cause is not that anyone stopped caring. The writing is a second job that arrives at the moment the first one resumes, and no calendar makes room for it.
Writing it from the recording
This half is a product feature. Exactly what it does, in four steps:
- The day is already recorded. Earkeep captures your microphone and your system audio continuously and transcribes on your device, and the audio is never written to disk at all. There is no start button and no bot joining the call. Always-on capture covers why, and private by design covers where the audio goes, which is nowhere.
- You mark the meeting once it is over. Select the range on the timeline and save it as a meeting. A recurring meeting on a connected calendar names and bounds its own span, so a week of them accumulates without anyone maintaining anything. Calendar connection has the detail.
- You pick a saved template in the composer. Settings → Templates holds instruction presets, each with a name, an agent, a working directory and the prompt text. Opening the agent panel on a saved meeting offers them, and the meeting and its transcript are attached to the prompt for you, as resources, so the preset itself is just the instruction.
- The agent writes the file. It runs on your machine, as your own CLI, with your own key, in the directory the preset names. Agents and MCP explains how that works.
The "one click" is picking the preset. Nothing fires a template because a meeting's title matched a pattern; Earkeep has no such matching.
The preset for this page, with ~/notes/meetings as the directory:
Write these meeting notes into a new markdown file in this directory, named
<yyyy-mm-dd>-<short-meeting-name>.md.
Use exactly these sections: Purpose, Discussion, Decisions, Actions, Parked, Next meeting.
Under Decisions and Actions, include a row only where the decision or the owner was stated
out loud. If something was clearly agreed but nobody said who owns it, put it under Actions
with the owner left blank rather than guessing a name.
Under Parked, list anything raised and not resolved, with whoever raised it.
Quote rather than paraphrase wherever the exact wording is the point: a commitment, an
approval, a number, or a goal.
Leave a section out entirely if nothing in the meeting belongs in it.
That is the general-purpose preset, and it is close to the default instruction Earkeep ships. The eight pages below each give a preset that varies it, because the rows a kickoff needs are not the rows a retro needs.
Cross-linking a year of them, on your own schedule
Earkeep has no scheduler. There is no nightly job to switch on, no "run this agent every week" setting, and there is not one hidden in a menu either. What it has instead is a directory of plain markdown files and a read-only MCP server on loopback, which is everything a scheduler you already own needs.
The pattern on top of that is a compiled wiki: raw sources stay immutable, an agent writes one page per concept from them, and a schema file states the rules. The LLM Wiki is the pattern and from what was said to what you know is the pipeline a meeting travels along it. For a mixed folder of meetings the destination is a single decision register: one dated row per decision, with a link to the meeting it came from. It is the least sophisticated thing you can build on this and the one people actually use.
Keep the ingest instructions in a file so a scheduled run and a manual one read the same one. ~/wiki/INGEST.md:
Sources are the markdown files in ~/notes/meetings. Never edit them.
Maintain ~/wiki/decisions.md as one dated row per decision: what was decided, who owns it,
the date, the meeting, and a link to the write-up. Append only. When a later meeting
reverses a decision, add a new row and mark the earlier one superseded rather than editing
it.
Maintain ~/wiki/open.md: everything parked or unresolved, with the date it was raised and
who raised it. Remove a line only when a later write-up resolves it, and say how.
Maintain one page per recurring topic in ~/wiki/topics/, written from every meeting that
touched it rather than from any single one.
Every claim carries the date of the write-up it came from and links that file.
Then the schedule, which is yours. On macOS a LaunchAgent is the supported mechanism and it survives the laptop being asleep at the appointed minute, where a cron job simply misses it. Save this as ~/Library/LaunchAgents/com.yourname.wiki-ingest.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourname.wiki-ingest</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>-lc</string>
<string>cd ~/wiki && /opt/homebrew/bin/claude -p "$(cat INGEST.md)"</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>19</integer>
<key>Minute</key><integer>30</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/wiki-ingest.log</string>
<key>StandardErrorPath</key>
<string>/tmp/wiki-ingest.err</string>
</dict>
</plist>
Load it once with launchctl bootstrap gui/$(id -u) and the path to that file. Or, if you already keep a crontab, one line instead:
30 19 * * 1-5 cd $HOME/wiki && /opt/homebrew/bin/claude -p "$(cat INGEST.md)" >> /tmp/wiki-ingest.log 2>&1
Two things bite about that line. Cron runs with a minimal PATH, so the agent binary needs its absolute path or the job fails silently. And on current macOS a cron job that reads directories under ~/Documents or ~/Desktop needs Full Disk Access granted to /usr/sbin/cron in System Settings.
The join between a meeting and its write-up is the filename convention you chose, and nothing else: there is no field on a saved meeting recording where its notes landed. A quarter in, the decision register answers the question that no single meeting record can, which is when a thing was decided and what was known at the time.
What this does not do
- No speaker labels. There is no diarisation, so nothing in the transcript says who said which sentence, and the minutes cannot attribute a line to a person from the audio. Attribution comes from what was said out loud ("Sam will take the migration"), from a connected calendar's attendee list, or from you typing the names. The
**Present:**line is a line you fill in. - macOS only. macOS 13 or later. The Windows audio path is designed and not released, and the scheduling half of this page is macOS-specific by construction.
- The agent is yours. It runs as your own CLI with your own key. Earkeep does not resell model access and there is no per-meeting AI fee, which is what makes it €39 once. What the agent does with the context after Earkeep hands it over is a property of the agent you chose, not of Earkeep. Setting up Claude Code covers installing and signing in to one of them.
- Nothing writes back. The MCP server is read-only, with exactly two tools, so a scheduled agent can read your meetings and cannot create or edit a meeting, a note or a file through it. The wiki is a one-way derivative of the record.
Related
- Standup and retrospective formats: how to facilitate the two most-run meetings on this page, as opposed to how to record them.
- Local RAG in practice: what to do when a year of write-ups outgrows grep, and where grep still wins.
- Pricing: €39 once, for one device, with a 14-day trial that needs no email.
- All Earkeep how-tos.
Frequently asked questions
What are meeting minutes?
A written record of what a meeting decided, who owns each action, and what was left open. They are not a transcript and not a summary of the conversation: the test is whether somebody who was not in the room can act correctly after reading them. Formal minutes for a board or a governed body add motions and votes; working minutes for a team add owner columns and drop the ceremony.
What is the difference between meeting minutes and meeting notes?
Mostly formality and audience. Minutes are the agreed record of a meeting, often circulated and sometimes approved at the next one; notes are what an individual keeps for themselves. In practice most teams need one document doing both jobs, which is what the frame at the top of this page is, and splitting them is how you end up with an agenda nobody read and minutes nobody wrote.
What is the best format or layout for minutes of a meeting?
Whichever one your readers will actually open, containing the four elements in the table above. Markdown in a folder is the recommendation on this site because it is greppable in ten years and needs no application to read, but a shared document works if that is where your team looks. The layout matters far less than having an owner beside every action.
Do meeting minutes need to be approved?
For a governed body, usually yes, and the approval is itself minuted at the following meeting. For an internal team meeting, no, and imposing an approval step is a reliable way to stop the minutes being written at all. Circulating the record the same day and letting people correct it in place gets you the same accuracy without the ceremony.
Does this record the meeting without telling anyone?
Earkeep announces itself to nobody: there is no bot in the participant list and no banner on anyone's screen, so telling the room is yours to do and you should. What it changes is what you can honestly say when you do, because nothing leaves your device and no IT system gets a copy. Telling people you're recording covers how to say it in a sentence, and our privacy page covers what the app itself sends.
Can I get the minutes without letting an AI read the transcript?
Yes. The transcript is a plain text file on your own disk and the template above is a template: open one, fill in the other, and no model is involved at any point. The agent step is a convenience for people who do not want to type, not a dependency. Private by design covers what stays local either way.