# AI meeting notes keep inventing deadlines? 4 prompt rules from 28 test runs

> When an AI cleans up meeting notes, it tends to add things the notes never said: a currency sign, "ASAP" and "Next meeting" as deadlines, and "Overdue" based on its own idea of today. Across 28 outputs, naming the reader, writing TBD instead of guessing, moving undecided items to open questions, quoting the source line and banning today’s date made every row traceable. An installable skill is included.

- URL: https://zero2.perhapxin.com/en/a/meeting-notes-three-prompts
- Published: 2026-10-27
- Updated: 2026-10-27
- Language: en

Below is a skill you can install that turns meeting notes into a to-do list where every row traces back to a quoted line, plus the test behind it. I gave Claude one set of meeting notes with three different prompts, tested a second set, removed the rules one at a time, and checked the skill itself: 28 raw outputs in all. A plain "clean these up" added a currency sign and deadlines like "ASAP" and "Next meeting". Asking for an owner and deadline on every item went further and marked a task "Overdue", based on the model's own sense of today's date. Three rules made every row traceable to a quoted line, but the model still flagged a task as "deadline already passed" using its own clock. A fourth rule, telling it to ignore today's date, fixed that in the skill version. The full notes, every output and an installable skill are below.

This is a small test. Each prompt ran one to three times, so treat everything here as what happened in these runs, not as a success rate. You can check every claim against the raw outputs linked at the end.

## The setup

I wrote notes from a 4-person marketing team's weekly meeting. The people and the webinar are made up for this test, but the gaps are the kind real notes have:

```text
Tue Oct 21 — Marketing weekly (notes: Ken)
Present: Amy, Ken, Josh, Vivian (joined halfway)

- November webinar: Amy says pencil in Nov 20, still needs the boss to confirm
- Sign-up page: Josh says the form tool we used last time is painful, wants to switch, but switching means redoing the tracking code
- Speaker slides — is Vivian on it? She joined and said she only handles speaker outreach, not slides
- Budget: we said 50k last time, Amy thinks it could go to 80k depending on ad performance
- Two email blasts, first one no later than two weeks before the webinar
- Ken asked about a replay video, everyone said yes, nobody said who edits it
- Josh: sign-up page done "before next week" (which day? he said Friday)
- Social assets: 3 images first, same style as last time, Amy will send copy
- Date came up again at the end: maybe Nov 27 because Nov 20 clashes with another event, not decided
- Next meeting Oct 28
```

The notes have four deliberate holes. There's no year. The webinar date and the budget are both undecided. Nobody owns the speaker slides or the replay edit. And "before next week, he said Friday" is ambiguous enough that the note-taker added a question mark.

I ran everything on Oct 27, 2026 (Taipei time) with Claude Code 2.1.177 in headless mode (`claude -p`), from an empty folder, with a one-line system prompt, no tools and no project settings. The model was Claude Sonnet 4.6. The extra experiments on Claude Haiku 4.5 and the rule-removal runs used a Traditional Chinese version of the same notes; I note where that applies.

The three prompts:

```text
① Clean up these meeting notes for me

② Turn the meeting notes below into a to-do list. For each item, list the owner and the deadline.

③ You're helping a 4-person marketing team turn their weekly meeting notes into a to-do list they can act on tomorrow. The reader is the team lead, who will use it to chase progress.
Rules:
1. Use a table: Task | Owner | Deadline | Source line from the notes
2. If the notes don't name an owner or deadline, write "TBD" and do not guess
3. Anything still undecided (e.g. date, budget) is not a task: list it separately under "Open questions", with who needs to answer
4. End with one sentence of self-check: is any item something you inferred that isn't in the notes?
```

## Prompt 1: "Clean up these meeting notes"

The output looked finished: a "Decisions & Updates" section, an action-item table, open questions and the next meeting. You could forward it without reading closely, which is the risk. Here is the action table:

```text
| Amy | Confirm webinar date with leadership | ASAP |
| Josh | Complete sign-up page | Friday, Oct 24 |
| TBD | Assign speaker slides ownership | Next meeting |
| TBD | Assign replay video editor | Next meeting |
```

Nobody in the notes said "ASAP". Nobody said those two items were due at the next meeting. "Before next week, he said Friday" became Oct 24, which is one of two Fridays it could mean.

Two smaller additions are easy to miss. The budget line became "Previously set at $50K; may increase to up to $80K". The notes say "50k", with no currency. The next meeting became "Tuesday, October 28", a weekday the notes never give. The webinar date also sits under "Decisions & Updates" even though the notes say it's not decided.

## Prompt 2: Ask for an owner and a deadline

One extra sentence, "list the owner and the deadline", improved the structure and made the model fill every cell:

```text
| 1 | Confirm webinar date (Nov 20 vs. Nov 27) and get boss sign-off | Amy | Before Oct 28 meeting | …
| 2 | Build sign-up page (incl. decision on form tool + tracking code) | Josh | ~~Fri, Oct 24~~ ⚠️ **Overdue** | …
| 4 | Confirm budget ($50k or up to $80k) | Amy | Not specified | …
| 7 | Send first email blast | **Unassigned** | ≥ 2 weeks before webinar (Nov 6 if Nov 20 / Nov 13 if Nov 27) | …
```

"Before Oct 28 meeting" is borrowed from the last line of the notes.

"Overdue" comes from comparing its own guess (Oct 24) with the date it believed was today; I ran the test on Oct 27. The budget, which nobody has decided, became a task assigned to Amy. The email dates are arithmetic on a webinar date nobody has confirmed. A section at the bottom then lists "Josh's deadline already passed" as something to resolve. The unowned speaker slides got a deadline too: "ASAP". Of the nine deadlines, five are honest blanks ("TBD" or "Not specified"). The other four are "Before Oct 28 meeting", "Overdue", "ASAP" and dates computed from an unconfirmed webinar day, none of which the notes state.

Each of these guesses is plausible enough that a team lead reading the table would not stop to question it.

## Prompt 3: Name the reader, add the rules

This time every row carried the line it came from (excerpt):

```text
| Get boss to confirm webinar date | Amy | TBD | *"Amy says pencil in Nov 20, still needs the boss to confirm"* |
| Complete sign-up page ⚠️ *deadline already passed* | Josh | Oct 24 (Fri) | *"Josh: sign-up page done 'before next week' (which day? he said Friday)"* |
| Edit replay video | TBD | TBD | *"Ken asked about a replay video, everyone said yes, nobody said who edits it"* |
```

The budget, the webinar date and the form-tool decision moved to "Open questions", each with who needs to answer. Unowned work stayed "TBD".

Two things still slipped through. The "deadline already passed" flag is the model using its own clock again. And the self-check flagged something harmless (splitting "send copy" and "create images" into two rows) while missing the date it had picked.

That's why the source column matters more than the self-check. "Oct 24" is not inside the quote, so you can see at a glance that it was the model's choice and ask Josh.

The self-check failed the same way on the smaller model. On the Chinese version of the notes, Claude Haiku 4.5 converted "next Friday" into a date and then wrote that the date was "converted from what the notes clearly say, not a guess". On the second set of notes it converted "before Wednesday" and "next Monday" into dates and reported "no inferred content". In both cases the conversion was reasonable. The self-check just didn't count it as an inference, so it never told the reader to check.

## The same "Friday", four different dates

Across all the runs, the line "before next week (which day? he said Friday)" was converted into four different dates. All three English prompts chose Oct 24. Most Chinese runs chose Oct 31. A Japanese run chose Oct 30, and one Haiku run chose Oct 27.

Oct 24 and Oct 31 are both reasonable readings: the Friday of the meeting week, or the Friday after. The notes don't settle it. Oct 27 is not a Friday in 2025 or 2026. Oct 30 is a Friday in 2026, but in 2026 Oct 21 falls on a Wednesday, not the Tuesday the notes give. Without a year in the notes, the model can get the weekday wrong or quietly switch years.

Picking a Friday is fine. The trouble is that the first two prompts write the pick into the deadline column as if it came from the notes, and the reader has no way to tell.

## Why it fills the blanks

This part is my reading of the outputs, not something I measured inside the model.

Almost every addition has a nearby source. "Before Oct 28 meeting" comes from the next-meeting line. "ASAP" and "Next meeting" are stock phrases from countless real meeting notes. The year, "overdue" and "deadline already passed" come from the model's sense of the current date.

When the format asks for a value in every cell, it reaches for the closest plausible value instead of leaving a blank. Prompt 2 adds exactly that pressure, and it produced the most fills.

That suggests what works: give the blank a legal answer ("TBD"), give undecided items somewhere to go ("Open questions"), and tell it not to use today's date.

## What each rule blocks

I removed one rule at a time from prompt 3 and ran each version once. These runs used the Traditional Chinese notes, with Sonnet 4.6:

| Rule removed | What happened |
|---|---|
| "Write TBD, don't guess" | It still didn't guess (it wrote "not mentioned"), but added a row "attend next meeting, everyone, 10/28" and dated the list with the run date |
| "Undecided items go under Open questions" | The budget disappeared entirely, and "confirm the webinar date" became Amy's task |
| The source column | No guesses this time, but nothing to check against |
| The opening "who reads this and why" | It left "Friday" unconverted, so fewer inferences |

The most useful result was the second row. With no place for undecided items, the budget stopped being anything at all: not a task, not a question, just gone. The last row was a surprise. Describing the reader ("act on it tomorrow", "chase progress") seems to push the model to turn vague timing into concrete dates. That's useful, as long as the source line sits next to the converted date.

## A second set of notes

To check this wasn't a quirk of one example, I wrote a second, made-up set of notes. A 3-person web agency reviews a website redesign with a client, with lines like "he'll send them next week", "decide next Monday" and "who follows up? no conclusion".

With "clean these up", Sonnet 4.6 kept "next week" as written and didn't compute any dates this time.

It still turned the client's photo delivery into an action item for Mr. Chen and gave the banner update a "TBC" deadline, and it wrote the meeting up as a formal record with bold labels the notes never had. With the rules (only the reader changed to "the project manager, who will chase progress and reply to the client"), it left unstated deadlines as TBD and moved the launch date and the open legal follow-up to "Open questions". It did add one thing on its own: "first: Nov 7" for the weekly progress email. Its self-check flagged the Nov 5 conversion and missed that one.

## The skill: rules plus "ignore today's date"

Pasting the rules every time is tedious, so I wrote them up as a skill. Besides the three rules, it adds what these runs showed was missing:

- Never use the model's own idea of today's date to mark anything overdue, "tomorrow" or "this week"
- Converting vague timing is fine, but the deadline cell has to say how; no year unless the notes give one

I ran the English skill on both sets of notes. Neither output contained "overdue", "tomorrow" or any run date. Both explained every converted date in the deadline cell. Both self-checks listed every conversion. On the second notes that included "next week" for the client's photos becoming "week of Nov 10". The Chinese version, run four more times on Sonnet and Haiku, showed the same.

**[Download SKILL.md](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/skill-en/meeting-notes-to-actions/SKILL.md)** (a [Traditional Chinese version](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/skill/meeting-notes-to-actions/SKILL.md) is also available)

To install:

- Claude Code: put the `meeting-notes-to-actions` folder in `~/.claude/skills/` to use it everywhere, or in a project's `.claude/skills/` for one project. Paste notes and ask for action items; Claude loads it on its own
- Claude apps: upload the folder as a zip in the Skills settings
- ChatGPT, Gemini and others: paste the Steps and Output format sections into custom instructions, or in front of your notes. I haven't tested it there

## Five checks before you send an AI to-do list

Even with the rules, read the table once before you send it. Each step below matches a mistake that showed up in these runs:

1. Look for a year or a currency the notes don't have
2. Look for "ASAP", "Next meeting", "overdue" and "tomorrow" in the deadline column. In these runs every one of them was added by the model ("tomorrow" showed up in the Chinese runs)
3. For every specific date, check whether it appears in the quoted source. If not, it was converted; redo the arithmetic yourself
4. Find every "maybe", "not decided", "depends on" and "needs to confirm" in the notes, and make sure each one is an open question, not someone's task
5. Count the items in the notes and the rows in the table. That's how you catch a budget that disappeared

## Using it for other tasks

The approach comes down to three things: say who reads the output, give blanks a legal answer, and quote the source for every claim. Any job that pulls a list out of a document can reuse it by changing the columns. I haven't tested the examples below; they apply the same logic.

For a customer interview, the table could be Requirement | Who asked | Priority | Quote from the interview. If the customer never ranked anything, priority is "TBD". Don't let the model decide what matters to them.

For a contract, try Clause | Obligated party | Deadline or amount | Contract text and clause number. Anything ambiguous goes under "Open questions", noting whether legal or the other side should answer.

For support chats, try Issue | Page or feature | The user's own words | Reproducible. The chat rarely says whether a bug reproduces, so that column is usually "TBD" until someone tries.

Keep the rule about today's date in all of them. Any source with relative time ("next week", "by Friday") needs it.

## When it isn't worth it

For five-line notes you wrote yourself, I just say "clean this up"; the rules make the output longer for little gain. That's my habit, not something I tested.

It's also the wrong tool for formal minutes that need the full discussion, since it keeps only tasks and open questions. And vague phrases like "next Friday" stay vague. The table can only make the conversion visible; someone still has to ask Josh.

## No install? Copy this

```text
You're helping 〈team or role〉 turn 〈meeting notes / a transcript〉 into a to-do list. The reader is 〈who〉, who will use it to 〈what for〉.

Rules:
1. Use a table: Task | Owner | Deadline | Source line (quoted word for word)
2. If the notes don't name an owner or deadline, write "TBD". Do not guess
3. Anything undecided (dates, budget, whether to do it) is not a task. List it under "Open questions" with who needs to answer
4. You may convert vague timing into a date, but say how. Don't add a year the notes don't give
5. Don't use your own idea of today's date to mark anything overdue, tomorrow or this week
6. End by listing everything you inferred or converted that the notes don't state directly. If nothing, write "None"

Meeting notes:
<<<
〈paste notes〉
>>>
```

Try it on last week's notes: run "clean these up" first, then this, and count the cells in the first table you can't find in your notes.

## Raw outputs

- Notes: [first set](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/notes.en.txt), [second set](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/notes2.en.txt); all prompts: [prompts.json](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/prompts.json)
- First notes, Sonnet 4.6: [prompt 1](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.weak.sonnet.out.md), [prompt 2](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.mid.sonnet.out.md), [prompt 3](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.strong.sonnet.out.md), [skill](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.skill_n1.sonnet.out.md)
- Second notes, Sonnet 4.6: [clean up](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.s2_weak.sonnet.out.md), [rules](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.s2_strong.sonnet.out.md), [skill](https://zero2.perhapxin.com/media/cnt_mvpnqbjpmkbl/runs/en.skill_n2.sonnet.out.md)
- Rule removal, Haiku and other runs on the Traditional Chinese notes: see the [Traditional Chinese article](/zh-Hant/a/meeting-notes-three-prompts#原始輸出)


## FAQ

### What does AI add when it summarizes meeting notes?

In this test: a currency the notes never gave, deadlines like "ASAP" and "Next meeting", and "Overdue" or "deadline already passed" based on the model’s own sense of today’s date. Asking for an owner and deadline on every item produced the most additions.

### How do I stop the AI from guessing deadlines?

Give blanks a legal answer ("TBD"), move undecided items to "Open questions", quote the source line on every row, and tell it not to use today’s date. Removing the open-questions rule made the budget disappear from the table entirely.

### Can I trust the AI’s self-check?

Not on its own. The self-check flagged harmless splits and missed converted dates; Claude Haiku 4.5 twice converted dates and said it had inferred nothing. The quoted source column is easier to verify.

## Sources

- [Test log: prompts and raw outputs (Claude Sonnet 4.6, Haiku 4.5, Oct 27, 2026)](/media/cnt_mvpnqbjpmkbl/runs/prompts.json)
- [Claude Code headless mode (claude -p)](https://code.claude.com/docs/en/headless)
