DocketNotes to Action Items
What it does for you
Meeting notes become a to-do list with owners and dates.
Paste meeting notes and get owners, real due dates, priorities, decisions, and open questions, each traced to its source line, with CSV, .ics, and recap email exports.

Who it's for
Teams that leave meetings with messy notes and nobody clearly owning each task. Every task links back to the line it came from, so you can check it.
Screenshots

In more detail
Docket reads messy meeting notes and hands back who owes what by when. Every task points back to the line it came from, so you can see why it was pulled out. You can export the list as a spreadsheet, a calendar file, a recap email draft, or a printable PDF.
Honest limits
The Claude mode has not been scored against real notes. The relative-date conventions are fixed defaults ("next Friday" means the Friday of the following week), and teams disagree about that, so a wrong guess is possible; the resolved date is always shown next to its phrase to make that easy to spot. It works on the three demo meetings and the test suite, not on months of real team notes.
How I built it
Claude Cowork built this in one autonomous pass, about 1.2 hours, as part of my "one-shot all the Cowork projects" run. It started from a single list line ("Meeting notes -> owners + due dates") and did the rest: the spec, the core, the page, a 297-assertion test suite, the screenshots, a sample PDF and exports, and the docs.
It also wrote three demo meetings and used them as fixtures, fixing the parser every time a demo line came out wrong. Most of the lessons below came from that.
The core, docket.js, finds action items, resolves owners from the attendee list and speakers, and turns phrases like "next Friday", "EOD Tue", "by the 15th", or "Q4" into real dates anchored to the meeting date. The date resolver is a list of regex rules, and the earliest match in the sentence wins, with the longest match breaking ties. That one rule is why "EOD tomorrow" beats a bare "EOD". The optional Claude mode asks for the same list as JSON, and every item it returns has to trace back to a real line in the notes or it gets rejected with a reason.
A Cowork skill runs the same rules against a Google Drive doc, read-only, and creates calendar events only after an explicit yes.
What I learned
- A header rule that fires on "Label: content" lines hijacks everything after it. "Decision: annual plan gets 2 months free" switched the parser into decisions mode and swallowed six action items. Now a bare "Decisions:" opens a section and "Decision: ..." applies to one line only.
- Transcripts need sentence splitting before classification, plus a filter so "I can do that" does not become its own task.
- Weekday names are often adjectives. "Saturday drivers" became a due date until the rule started rejecting a weekday followed by an ordinary word, while still accepting "Friday after lunch".
- RFC 5545 folds calendar lines at 75 octets, not characters. The folder counts UTF-8 bytes per code point, and the tests unfold and compare to prove the round trip.
What carried forward
It follows the same house pattern as the Claude Code builds: a DOM-free core shared by the page and verify.mjs. The "trace everything to a source" idea lines up with #38 Tidings from the same Cowork batch, where every fact in a draft has to exist in the intake. Both treat Claude as optional and check its output locally before trusting it.
If I took it further
I would make the date conventions a visible setting and build a small labeled set of real notes to score the local engine against Claude, so you could see where each one misses.
#039 Built with Claude Cowork September 23, 2026 297 automated checks