Project kickoff meeting agenda template

Last updated: · Reviewed quarterly

A kickoff is the meeting whose decisions have the longest half-life. Scope, owners and what done means all get settled in one room, by people who will each remember it slightly differently, and then get argued about for the rest of the project. The template is below, free and complete. After it, how to stop typing it out: the meeting is already recorded on your device, and an agent writes this template from the transcript into a file you keep.

The project kickoff meeting agenda template

Three blocks a kickoff needs that a status meeting does not. An explicit out-of-scope list, because that is the only part anyone litigates later. An assumptions block, because a kickoff's real risks are almost always unexamined assumptions rather than the risks somebody thought to name. And roles by person, not by team, since "design will handle it" is not an owner.

markdown
# <Project> kickoff, <date>

**Present:**
**Absent:**
**Sponsor:**

## Why this project exists
<the problem, in the sponsor's own words. One paragraph. If the room cannot agree on this, stop here.>

## In scope
- <thing we are doing>

## Out of scope
- <thing we are explicitly not doing, and who asked about it>

## What done looks like
<success criteria, measurable where possible, as stated in the room>

## Who does what
| Role | Person | Decides |
| --- | --- | --- |

## Timeline and milestones
| Milestone | Date | Depends on |
| --- | --- | --- |

## Assumptions
<what this plan rests on and nobody has checked. Each one is a risk with better manners.>

## Risks
| Risk | Owner | Mitigation |
| --- | --- | --- |

## How we will communicate
<cadence, channel, who gets told what, and who is told when a date moves>

## Decisions
| Decision | Owner | Date |
| --- | --- | --- |

## Actions
| Action | Owner | Due |
| --- | --- | --- |

## Open questions
<raised and not answered today. Each needs a name and a date.>

## Next meeting

The out-of-scope list is the block to fight for. Everything else on this page will be written down somewhere eventually, in a plan or a ticket or a spec. The list of things somebody asked about and was told no exists nowhere else, and it is the one people come back for.

That is what gets written down. This is the order to work through to fill it in, for a ninety-minute internal kickoff. Move scope and the action items earlier if the project is contentious, and never let scope run short:

  • 0:00 Introductions by role (10)
  • 0:10 Why this project exists, in one sentence, plus questions (10)
  • 0:20 Scope, and the out-of-scope list, written live (20)
  • 0:40 Deliverables and acceptance criteria (10)
  • 0:50 Walk the responsibility matrix (10)
  • 1:00 Schedule, milestones, critical path (10)
  • 1:10 Risks, assumptions and dependencies (10)
  • 1:20 Communication cadence, decision path, tools (5)
  • 1:25 Action items, each with an owner and a date, read back aloud (5)

Reading the action items back aloud at the end is the highest-yield five minutes in it, because it is the only moment where somebody discovers they have been assigned something they cannot do while it is still cheap. Why the meeting exists at all, when to hold it against the charter, and the six ways it fails are on kickoff meetings.

What has to survive a project kickoff

What it decides. Scope, owner and definition of done, plus the communication plan that determines who finds out when something slips. These are the four decisions that everything later in the project either follows or contradicts.

Who is in it. Everyone who will later disagree about what was agreed, which is the honest description of a kickoff's attendee list. The record is for a person who is not in the room: whoever joins in month three and has to work out why the project is shaped this way. What UX designers keep covers the version of this that has to survive as a problem framing rather than a plan.

What must survive it. The out-of-scope list, because in week nine somebody will say the project always included the thing it explicitly did not. The success criteria in the sponsor's own words, because a paraphrase drifts toward whatever is achievable by then. And the assumption the whole plan rests on, which nobody writes down precisely because it was too obvious to state.

What a kickoff's notes need that others do not. The out-of-scope block, recorded with who raised each item, so a later request can be answered with "we discussed that on the ninth" rather than a shrug. An assumptions block kept separate from risks, because the two get managed differently and merging them buries the assumptions. And roles named as people with a decision right attached, since the argument in month two is never about who does the work, it is about who gets to decide.

The meeting that outlives its own notes

Kickoff notes do get written, which makes this failure different from the others in this pillar. They get written once, into a slide deck or a project charter, in the confident first week when everybody is paying attention.

Then the meeting keeps going after the deck is closed. The twenty minutes of discussion that produced the scope line, the question the sponsor half-answered, the thing the vendor said about lead times: none of that is in the charter, because a charter records conclusions and the argument is what you need in week nine. Six weeks later each attendee remembers a different scope, and every one of them remembers it sincerely.

Writing it from the recording

This half is a product feature. Exactly what it does, in four steps:

  1. 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.
  2. You mark the meeting once it is over. Select the range on the timeline and save it as a meeting. A kickoff is nearly always on a calendar, so connecting one means the event names and bounds its own span and the file is already titled after the project. Calendar connection has the detail.
  3. 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.
  4. 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/projects as the directory:

markdown
Write this kickoff up as a new markdown file in this directory, named
<project-slug>/kickoff-<yyyy-mm-dd>.md.

Use exactly these sections: Why this project exists, In scope, Out of scope, What done
looks like, Who does what, Timeline and milestones, Assumptions, Risks, How we will
communicate, Decisions, Actions, Open questions, Next meeting.

Quote the sponsor directly for "Why this project exists" and "What done looks like".
Do not tidy the phrasing. If two people described the goal differently, record both and
say they differed.

Put something under "Out of scope" only if it was actually raised and ruled out. Note who
raised it. Do not infer exclusions from silence.

Separate assumptions from risks. An assumption is something the plan treats as true and
nobody checked; a risk is something the room already named as possibly going wrong.

A role goes under "Who does what" only with a named person. If the room said a team
rather than a person, write the team and mark the owner as unassigned.

Anything raised and not resolved goes under "Open questions" with the name of whoever
raised it.

The instruction to record two different descriptions of the goal rather than reconciling them is deliberate. A kickoff where the sponsor and the delivery lead describe success differently is extremely common and completely survivable, but only if somebody notices in week one instead of week twelve.

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 kickoff the destination is a page per project, and it is the page every later status meeting writes into: the scope as agreed, the assumptions as they age, and a dated log of every change to either.

Keep the ingest instructions in a file so a scheduled run and a manual one read the same one. ~/wiki/INGEST.md:

markdown
Sources are the markdown files under ~/notes/projects. Never edit them.

Maintain one page per project in ~/wiki/projects/. Each page: why it exists, current
scope, what is explicitly out of scope, success criteria, roles, and the current dates.

The scope and success sections are append-and-supersede, never overwrite. When a later
write-up changes either, keep the original with its date, add the new one with its date,
and record who authorised the change and in which meeting.

Maintain an Assumptions section per project with a status for each: unchecked, confirmed,
or broken, with the date it changed and a link to the write-up that changed it. A broken
assumption stays on the page.

Every claim carries the date of the write-up it came from and links that file.

Never delete an open question. Mark it answered with the date and the answer.

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
<?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:

shell
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. The value shows up at the retrospective: a project page that kept its original scope beside its final one answers what actually happened to this project in a way no status report ever does.

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

Frequently asked questions

Is there a free project kickoff meeting agenda template?

The one above. It is complete, there is no email gate and nothing to sign up for. Copy it into your project folder, delete what does not apply, and keep the out-of-scope and assumptions blocks even if you cut everything else.

What should a project kick-off meeting cover?

Four decisions and one plan: why the project exists, what is in and out of scope, what done looks like, who decides what, and how the project will communicate when something changes. Anything else on the agenda is context for one of those five. A kick-off that ends without an owner for each of the four decisions has not finished, whatever the calendar says.

Who should run the kickoff, and who writes it up?

The project manager or delivery lead runs it, and the same person usually ends up writing it, which is the problem: facilitating a room of stakeholders and recording what they said are two jobs. That is what the second half of this page is about. What project managers keep covers the wider version of the same conflict.

How is a kickoff different from a project status meeting?

A kickoff decides the frame; a status meeting operates inside it and occasionally changes it. The practical difference in the record is that a kickoff is written once and reread for a year, while a status record is written weekly and reread rarely. That is why this template has an out-of-scope list and the status template has a date-change log.

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.