How the notes stay grounded
The model wrote a draft — a summary, some decisions, a list of action items. Now the question that matters: can you trust it? A wrong owner on an action item, a date that was never said, a decision that sounds firmer than it was — any of those, in an email everyone reads, is worse than no notes at all. So the draft never goes straight to the recap. Four small checks sit between the model’s output and the recap, and each one’s job is to catch a different way notes can go wrong.
Key takeaways
- Cite-or-drop: every decision and action item must point to a real transcript line, or it’s removed.
- Owner resolution: a spoken name is matched to a real person from the roster, or flagged.
- Date sanity: a fuzzy date (“next Friday”) becomes a real date, or it’s flagged.
- Needs-confirm queue: anything the checks can’t settle is held for the organizer.
- Every check is plain code, not another model — predictable, and free.
Four checks on every draft
Check 1: cite-or-drop
In Part 3 the model was told to attach the transcript line behind every decision and action item. This check holds it to that. For each item, the code looks up the cited line in the saved transcript and confirms two things: that the line actually exists (the model didn’t invent a quote), and that the line plausibly supports the claim (the words line up). If an item cites a line that isn’t there, or cites a line that doesn’t say what the item claims, the item is dropped — not kept, not guessed at. Better to miss one real action item the organizer can add by hand than to ship one the meeting never produced.
This is the single most important check, because it’s the one that catches a model that’s drifted into making things up. Everything that survives this gate is anchored to a real moment in the recording.
Check 2: resolve the owner
An action item with no owner is a wish. So each action item carries a spoken name — “Maria,” “Sam,” “the design team” — and this check tries to turn that into a real person. It compares the spoken name against the roster (name, email, and the nicknames each person goes by). One clear match: attach that person’s email and move on. Zero matches, or several plausible ones (two people named Sam): the owner is marked needs-confirm and left for the organizer.
The roster is deliberately the only source for owners. The check never invents an email address or assigns an item to whoever was loudest. If the meeting genuinely didn’t name an owner, the right answer is “a human decides,” not a guess.
Check 3: date sanity
People say dates loosely. “By next Friday,” “end of the month,” “before the launch,” “in a couple of weeks.” This check turns the ones it can into real calendar dates, measured from the meeting date — “next Friday” in a meeting on the 22nd becomes a specific date. The conversions are plain rules, not a model: a small table maps common phrases to offsets. Anything the rules can’t pin down — “before the launch” when no launch date was set, “soon,” “sometime” — is marked needs-confirm with the original phrase shown, so the organizer can set a real date.
The reason for being strict here is the same as everywhere else: a confidently wrong date is more dangerous than an obviously missing one. “Due: needs-confirm” prompts a fix; “Due: May 29” when nobody said May 29 quietly becomes a deadline somebody trusts.
Check 4: assemble, with the unsure items collected
The last step builds the draft recap from what survived: the summary, the kept decisions, and the action items that have a real owner and a real date. Everything that got marked needs-confirm along the way — a dropped citation worth a second look, an unresolved owner, an unpinned date — is gathered into its own section at the top of the draft, so the organizer sees exactly what needs a human before anything else. Every kept item still carries its transcript line and timestamp, so the organizer can check any of them in one read.
None of these four checks call a model. They’re plain Python: look up a line, match a name against a list, convert a date phrase, sort items into buckets. That’s on purpose. The model’s job is to read the meeting; the checks’ job is to be utterly predictable about what’s allowed through. A predictable gate you can reason about beats a smarter gate you can’t.
Why grounding is the whole point
The reason people don’t trust automatic meeting notes is that they’ve all seen the bad version: a confident recap with an action item nobody remembers agreeing to, assigned to somebody who wasn’t even there. One bad recap and the team stops reading them. These four checks exist so that every line in the recap can be traced back to the recording, and so that the things the system isn’t sure about are shown as questions, not stated as facts. The notetaker would rather hand the organizer three clean items and two questions than five items where one is quietly wrong.
Next post: how the recap reaches everyone — how the organizer confirms the draft, fixes the needs-confirm items, and sends the clean version to the whole room.
All posts