Meeting minutes

Minutes record what a meeting decided, and who will do what by when. chaff finds by machine a wrong weekday, a skipped item number and a count that does not match its list. It also finds decisions with nobody behind them. The genre is business/meeting-notes. Meeting notes are checked under the same genre.

What usually goes wrong

Minutes are written in a hurry, during or right after the meeting, often by copying last week’s.

What goes wrongExample
A weekday that is wrongLast week’s date line was copied, and only the date changed
A skipped item numberItem 3 was dropped and the items were not renumbered
A count that does not match“The meeting agreed on three points:” above two points
Nobody decided it“it was decided that design B would be used”

The last one leaves a later reader unable to find out who decided.

What chaff checks, and what it does not

These are the main rules for this genre. All of them run by default.

RuleWhat it finds
date-weekday-mismatchA date whose weekday disagrees with the calendar
numbering-gapA skipped or repeated item number
announced-count-mismatchA count announced that differs from the list below it
heading-echoA first sentence that only repeats its heading

What it does not do is decided too.

  • It does not check that the minutes are true. Whether the meeting really decided that is for the people who were there.
  • It does not check that every action has an owner. An empty cell in the table is for a person to fill.
  • The due dates in the table give no weekday, so there is nothing to check there. A date without its year that does give one is read in the year that puts it within five months of the dated date before it, and checked.
  • It does not flag passives with nobody behind them (“it was decided”). Minutes record what the meeting did, so the meeting is the actor by the form. The rule would fire on almost every set of minutes.

Try it

If you have not set up yet, do Getting ready first. The minutes below were saved as minutes.md.

# Website redesign weekly meeting: minutes

- Date: Tuesday, October 7, 2026, 10:00 to 11:00
- Place: Head office, Room B
- Attendees: Yamada (Sales), Suzuki (IT), Sasaki (Sasaki Studio)
- Minutes taken by: Suzuki

## 1. Actions from last week

All actions from last week are done. The contact form bug was fixed on September 30.

## 2. Home page designs

Sasaki presented two designs for the home page. Design A uses a large photo; design B puts the news at the top.

After discussion, it was decided that design B would be used.

## 4. Launch date

The launch date is November 20. The date may be moved if the KPI review requires it.

## Decisions

The meeting agreed on three points:

- The home page will use design B
- The launch date is November 20

## Actions

| Owner | Action | Due |
| --- | --- | --- |
| Sasaki | Finish design B | October 14 |
| Suzuki | Check the steps for the server move | October 14 |
| | Get permission to use the photos | October 10 |

The next meeting is on Wednesday, October 14, 2026, at 10:00 in the same room.

Without a genre, chaff reads these as a tech article. Name the genre. --compact prints each finding on two lines.

$ npx chaffjs minutes.md --genre business/meeting-notes --compact

minutes.md   business/meeting-notes · English   genre from --genre

  3:18    error   October 7, 2026 is a Wednesday, not a Tuesday
                  date-weekday-mismatch
  18:1    error   "4" follows "2" (expected number 3)
                  numbering-gap
  22:1    info    The heading "Decisions" has no number, while 3 of its siblings do ("1. Actions from last week")
                  heading-numbering-mix
  24:23   warning "three points" is announced, but the number of items in the list below is 2
                  announced-count-mismatch
  29:1    info    The heading "Actions" has no number, while 3 of its siblings do ("1. Actions from last week")
                  heading-numbering-mix

5 findings, 89 rules not run

The guide that comes first

With the genre set, chaff opens the report with the genre’s guide: what good minutes do, as questions to check the draft against. Under them is a line naming the rules that matter most for this genre. Most of the questions are ones no rule can answer, so read them before the findings. An AI that rewrites the text works to the same lines (Using the guide with an AI).

$ npx chaffjs minutes.md --genre business/meeting-notes

Guide: Meeting notes (business/meeting-notes)

  Before the findings below, check the draft against these.

  - Are the date, the attendees and the agenda at the top?
  - Are decisions kept apart from what was only discussed?
  - Does each action item have an owner and a deadline?
  - Are the next meeting and the items carried over recorded?

  Rules that matter most for this genre: cushion-phrase-density, preamble-length, request-without-deadline, risk-disclosure, unsourced-number
  Change it with guide: in chaff.yaml; leave it out with --no-guide.

════════════════════════════════════════════════════════════

minutes.md   business/meeting-notes · English   genre from --genre
…

A genre that was guessed from the path or the content, or left at the default, prints no guide. A guide for the wrong kind of document would mislead. --compact and --no-guide leave it out. A team changes the lines with guide: in chaff.yaml (Changing the genre’s guide).

What each finding means

LineFindingWhat it meansHow to fix it
3date-weekday-mismatchOctober 7, 2026 is a WednesdayFix the weekday. If the meeting was on Tuesday, fix the date
18numbering-gapItem 2 is followed by item 4Renumber to 3, or add the missing item 3
22, 29heading-numbering-mix“Decisions” and “Actions” have no number, while the agenda headings beside them doNumber them too, or put them at a different heading level from the numbered agenda items
24announced-count-mismatchIt says “three points”, but there are twoAdd the missing decision, or say “two points”

“It was decided” and “may be moved” do not say who decided or who moves it. This genre leaves passives alone, so a person reads for them. The third row of the action table has no owner. chaff does not check that either, so a person fills it in.

Checks that read meaning go to an AI

npx chaffjs test can have an AI read whether the minutes leave out something to watch for. npx chaffjs test minutes.md --genre business/meeting-notes --dry-run says 1 passage would be sent. What minutes must keep differs from meeting to meeting. Read the AI’s answer and decide.

A starter chaff.yaml

Put this chaff.yaml in the folder that holds your minutes.

genre: business/meeting-notes
language: en

required_sections:
  - Decisions
  - Actions

With this file in place, npx chaffjs minutes.md --compact needs no --genre. required_sections lists the headings every set of minutes needs. Minutes without a “Decisions” or an “Actions” heading are flagged by required-sections. How to write it is in Configuration, under “Deciding the team’s jargon and required headings”.