System prompt · Writing
Meeting summariser system prompt: decisions and actions
Use this to summarise meeting transcripts from your recorder or video tool. A useful meeting summary is not a shorter transcript; it is the three things people need afterwards: what was decided, who is doing what by when, and what is still open. The usual AI failures are an action item with an owner nobody agreed to, a decision that was only discussed, and a polished summary of a meeting that went in circles. This prompt asks for evidence-based items only, marks unclear owners and dates as unclear, and keeps discussion separate from decisions.
Prompt
The system prompt
294 tokens with OpenAI o200k_base (gpt-tokenizer 4.0.0), placeholders unfilled. Original writing, free to copy and adapt.
You summarise meeting transcripts for {{team}}. People who missed the meeting use your summary to know what was decided and what they need to do, so accuracy matters more than polish.
<input>
The transcript arrives in <transcript> tags, with speaker names where available. Transcripts contain speech-recognition errors; if a word seems wrong, use the meaning that fits the context, and don't quote garbled text.
</input>
<rules>
- A decision is only a decision if the transcript shows agreement ("let's go with", "agreed", no objection to a clear proposal). Otherwise it's a discussion point.
- An action item needs an owner who accepted it or was clearly assigned it. If the owner or due date isn't clear, write "owner unclear" or "no date" rather than guessing.
- Use people's names as they appear in the transcript. Never add attendees, numbers or dates that weren't said.
- Leave out small talk, repeated points and anything off the record ("don't minute this").
- If the meeting reached no decisions, say so.
</rules>
<format>
**Summary:** two or three sentences on the purpose and outcome.
**Decisions**
- decision, with the reason if one was given
**Action items**
- [owner] action, due date
**Open questions**
- question, and who raised it
Keep the whole summary under {{max_words}} words. Write in {{language}}.
</format>Variables
What to fill in
Fill these once per deployment. Anything that changes per request, such as the user’s name or today’s date, belongs in the user message so the system prompt stays identical and cacheable.
- {{team}}
- Whose meetings these are.
- e.g. the product team at Taskly
- {{max_words}}
- Length limit.
- e.g. 300
- {{language}}
- Output language and spelling.
- e.g. British English
Design notes
Why each part is there
Role line
Names the readers (people who missed the meeting) and their need, which decides what goes in. Anthropic’s guide stresses context and motivation; here the motivation explains why accuracy beats polish.
Follows: Anthropic: Prompting best practices
<input>
Warns about transcription errors and says what to do with them. Without this, models either quote nonsense or silently “correct” words into something nobody said.
Follows: Google: Prompt design strategies
<rules>
Definitions of a decision and an action item, in observable terms, plus permission to say “owner unclear”. Allowing the model to admit uncertainty is Anthropic’s first technique for reducing invented details.
Follows: Anthropic: Reduce hallucinations · Anthropic: Prompting best practices
<format>
A fixed skeleton people learn to scan. OpenAI and Anthropic both recommend stating the exact output format; showing it is clearer than describing it.
Follows: OpenAI: Prompt engineering · Anthropic: Prompting best practices
Try it
A message to test it with
<transcript>
Priya: So for the export bug, I think we ship the fix Thursday.
Tom: Thursday works. I'll do the release notes.
Priya: Great. And the pricing page, we still don't know if legal is OK with the new wording.
Tom: Someone should ask them.
Priya: Yeah. OK, let's go with Thursday then.
</transcript>Adapt
How to adapt it
- For your task tracker, switch the action items to JSON with
owner,actionanddue, and create tasks from it only after someone reviews them. - Long meetings can exceed what you want to pay for in one call: summarise in chunks, then summarise the summaries with the same format.
- Add your project names and people’s names to the prompt if transcription often mangles them.
- For customer calls, add a section for commitments made to the customer.
Failure modes
Common failure modes
- Action items with invented owners.
- The rule allows “owner unclear”. If it still assigns people, add an example where an action has no owner.
- Discussions reported as decisions.
- Quote the decision rule’s examples of agreement in your own team’s phrasing.
- Summary of a long meeting misses the end.
- Check the transcript wasn’t truncated, and put the transcript first and the instruction last in the user turn.
Cost
What it costs to send with every request
| Model | Without caching | With caching |
|---|---|---|
| Claude Sonnet 5.5estimate: this model’s tokenizer isn’t public, so its count may differ | $178.85 | Not cached: under the 512-token minimum |
| Claude Haiku 5.5estimate: this model’s tokenizer isn’t public, so its count may differ | $8.94 | Not cached: under the 512-token minimum |
| GPT-6.1 Solo200k_base count; OpenAI hasn’t published this model’s tokenizer | $178.85 | Not cached: under the 1,024-token minimum |
| Gemini 3.8 Flashestimate: this model’s tokenizer isn’t public, so its count may differ | $67.07 | Not cached: under the 4,096-token minimum |
A prompt under a provider’s minimum is still billed in full on every call. Tool definitions sit before the system prompt in the cached prefix, so together they may cross it. Price it at your own traffic.
Placement
Where it goes in each API
Transcripts are long, so the system prompt is a small share of each request; the transcript itself dominates the cost. Put the transcript in the user turn, then a one-line request after it; Anthropic and Google both recommend long input first and the question last.
| API | Where the system prompt goes | Worth knowing |
|---|---|---|
| OpenAI Responses API | instructions | Applies to that request only: with previous_response_id, send it again every turn. |
| OpenAI Chat Completions | a developer message first in messages | Replaces the system role for o1 and newer models; developer messages take priority over user messages. |
| Anthropic Messages API | top-level system | No system role inside messages. Pass it as a text block with cache_control to cache it. |
| Gemini generateContent | systemInstruction | Text only. Still supported; Google recommends the Interactions API for new work. |
| Gemini Interactions API | top-level system_instruction | Sent beside model and input. Applies to that interaction only: with previous_interaction_id, send it again every turn. |
Related
Related system prompts and tools
- Incident triage assistant for logs and alertsAgents
- Pull request description writerCoding
- Technical writer for developer docsWriting
Context window checkerTokens to words converterText chunkerAll system prompts