The commitment ledger: every promise you made (or made to you) tracked
A running file that captures every commitment you made and every commitment people made to you. Refreshed weekly from your meeting transcripts. Walk into every 1:1 knowing what's outstanding on both sides.
What you'll have when you're done
A single file called commitments.md (or a Notion page, your choice) that lists every promise you've made and every promise made to you, with the date, the person, and the source meeting. It refreshes weekly with no manual input. You open it before any 1:1, board call, or pipeline review and see exactly what's outstanding on both sides.
You stop forgetting what you owe people. You stop watching commitments to you quietly slip. Your 1:1s start producing decisions because nothing has to be re-discovered first.
My single biggest leak
Losing track of commitments has been my single biggest leak for years. I'd say something on Tuesday's leadership sync. I'd totally plan to follow up - and in the moment be 100% confident I’d remember. Then the rest of the week would happen and I’d forget all about it. Then I’d lose a tiny unit of trust with my team. Multiply that by twenty-six meetings a week and I’d lose serious trust over time. Not to mention the tax on our company’s effectiveness.
I tried every system. Notion databases. A spiral notebook. An upgraded notebook with a sick fountain pen. Every task management system / tracking system. David Allen’s “Getting Things Done.” None of them survived a few busy weeks.
The commitment ledger closes the leak from both directions. I see what I promised, so I don't drop it. I see what others promised, so I don't have to chase them (or just let things slip). Combined, it changes the texture of every 1:1 I run. I walk in already knowing what’s up. The other person knows I’m tracking them which helps make expectations clear. It’s honestly the best posture for a working relationship.
This is the workflow that, more than any other, made CEOs I've shared it with say their team noticed something changed. They started keeping EVERY promise they made, and the team can’t help but notice.
What you need first
- The [Granola][7] → markdown pipeline already running. This workflow runs on the [markdown][8] library the pipeline produces. If you haven't set it up yet, do [Granola → markdown][1] first. Should take about 30 minutes. Come back to this when that’s done.
- Claude Code installed and pointed at the same folder your Granola transcripts land in. If you already did the [Claude memory workflow][2], you're set.
- A file location for the ledger. Anywhere Claude Code can write. A markdown file in your notes folder is the simplest. Notion or Linear works too with a small adapter (Step 5, Option C).
- 15 minutes for the first run.
Step-by-step
Step 1Pick your ledger location
The ledger needs to be one file in one place. Don't scatter it across tools. The point is to open one doc and see everything.
Easiest default:
touch ~/notes/commitments.md
This creates an empty commitments.md in your notes folder. Claude Code will append to it on each refresh. If you live in Notion or Linear, skip to Step 5 / Option C for the adapter.
Step 2Write the refresh prompt
This is the load-bearing block. Save it once so you can re-run it any time without re-typing.
mkdir -p ~/.claude/prompts
touch ~/.claude/prompts/commitment-ledger.md
Paste the prompt below into that file.
[VERIFY: Andrew to confirm or replace with his exact prompt during co-edit.]
Scan every meeting transcript in ~/notes/granola/ from the last 7 days.
Update ~/notes/commitments.md as follows:
## My commitments
Items I committed to during the week. Append new ones. For each existing
item, check whether a later meeting confirms it as complete; if so, mark it
completed and add the completion date.
Format:
- [ ] {task} · committed {date} · to {person} · source: {filename}
- [x] {task} · committed {date} · to {person} · completed {date} · source: {filename}
## Commitments to me
Items others committed to me. Same format, flipped:
- [ ] {task} · {person} committed on {date} · source: {filename}
- [x] {task} · {person} committed on {date} · completed {date} · source: {filename}
## Slipping
Anything past due. Flag explicitly with the days overdue and the source meeting.
Be blunt. No softening language.
Rules:
- Use verbatim quotes when possible. If paraphrasing, make the meaning unambiguous.
- Skip vague commitments ("let's talk about it sometime"). Only include items
with a clear action and either an explicit or strongly implied deadline.
- Deduplicate. If the same commitment appears in two meetings, keep one entry
with both source filenames.
- Only mark complete if a later meeting explicitly confirms the work was done,
or if I confirmed it in writing.
Step 3Run the first manual refresh
Open Claude Code in your notes folder:
cd ~/notes
claude
Paste the prompt from Step 2 directly into the session. Claude reads the last seven days of Granola transcripts, scans for commitments, and updates commitments.md. The first run typically takes 30 to 60 seconds depending on how many meetings you had.
Step 4Verify the output
Open commitments.md and read the first batch. Look for:
- Real commitments you made, captured with the right person and date
- Commitments to you that you'd forgotten about (this is the unlock moment)
- Vague items you don't want in there (refine the prompt's "skip vague" rule if needed)
- Anything overdue (the "Slipping" section is where the real work surfaces)
If something looks off, edit the prompt and re-run. The first three or four runs are about tuning. After that, the prompt stabilizes and you stop touching it.
Step 5Schedule the weekly refresh
Three paths, in order of effort:
Option A · Manual Friday afternoon trigger (lowest effort). Block 15 minutes on your Friday calendar called "Commitment ledger refresh." During that block: open Claude Code, paste the prompt, scan the output, edit anything off. Most CEOs will live here forever.
Option B · A Claude Code Routine (most automated). Open Claude Code and create a new Routine:
Every Friday at 5pm:
Run the prompt at ~/.claude/prompts/commitment-ledger.md.
After the file is updated, post a summary to my #ledger channel in Slack:
- Number of new commitments added
- Number of commitments completed this week
- Number of items now in the "Slipping" section
Trigger: scheduled, Fridays 5pm.
Connectors: Slack workspace.
The routine handles the refresh and pings you when it's done. You open the ledger Saturday morning with a coffee, scan the slipping section, and have your Monday already shaped.
Option C · Notion or Linear adapter (only if you live in those tools). Add a step in the prompt that pushes the output to the destination's API instead of writing to a markdown file. Claude Code can write the adapter for you in about 20 minutes if you give it your workspace ID and table schema.
Step 6Open the ledger before every 1:1
This is the step nobody skips after they try it once.
Five minutes before any 1:1 with someone on your team or a customer:
- Open
commitments.md - Search the file for that person's name (Cmd-F in any editor, or
/searchin Claude Code) - Read the open items in both directions
You walk into the meeting already knowing what they owe you and what you owe them. The first time this catches a forgotten promise from the other side, you'll understand why this gets called the highest-leverage doc in your week.
Step 7(Optional) Monthly pruning
After a few months the ledger gets long. Once a month, run a second prompt that archives completed items older than 90 days into commitments-archive.md. Keeps the active file scannable. Five minutes a month.
How you'll know it's working
Three checks, in order:
- The first refresh produces a real list. Open commitments you forgot you made, names you forgot you needed to follow up with, dates a customer was waiting on.
- You catch something in the "Slipping" section that would have leaked. First time this happens, you save a deal, a hire, or a board relationship.
- You open it before a 1:1 and it changes the meeting. The other person notices you came in prepared. They start coming in prepared too. The 1:1 produces a decision instead of a re-orientation.
When it breaks
The ledger captures noise. First few runs include vague commitments and trivial asides. Refine the prompt's "skip vague" rule. Add a minimum bar: "Only include items with a clear deliverable and either an explicit deadline or a strongly implied one."
Commitments are missed entirely. Usually a Granola export issue. Check that the meeting actually exported as markdown (see [Granola → markdown][3] Step 3). If the transcript is in your meeting library, Claude will find the commitment. If it isn't there, the commitment doesn't exist as far as this workflow is concerned.
The "completed" detection is wrong. Claude marks something done when it isn't, or misses an obvious completion. Tighten the verification rule: "Only mark complete if a later meeting explicitly confirms the work was done, or if I confirmed it in writing."
The ledger gets noisy without pruning. After two months, run the monthly archive step in Step 7. Stale items kill scannability.
Claude is too gentle on the Slipping section. Adjust the prompt: "Be blunt. Past-due items show the number of days overdue and the original commitment, no softening language."
Where this fits in your harness
This is the accountability layer of your [harness][6]. The [Granola → markdown pipeline][4] made every conversation searchable. The commitment ledger turns that searchable vault into an active accountability system for both sides of your week.
Pair it with the team-todos-from-meetings workflow (forthcoming): that one ships extracted action items to your team after every meeting; this one is yours, for you. Both run on the same meeting library. Both close different kinds of leak.
Together, they're the difference between a CEO who tries to remember everything and can’t (because we’re all human) and a CEO who built infrastructure that remembers everything. See the [Granola pillar][5] for the full pipeline and the other workflows that compound on top.
[1]: /workflows/granola-to-markdown [2]: /workflows/claude-memory [3]: /workflows/granola-to-markdown [4]: /workflows/granola-to-markdown [5]: /blog/granola-for-ceos-highest-roi-ai-install [6]: /workflows/what-is-a-harness [7]: /workflows/what-is-granola [8]: /articles/what-is-a-markdown-file
Get three workflows like this every Thursday
The Thursday 3 is a free weekly email. Three workflows that put you in the top 1% of CEOs. 90-second read. Every card links back to a step-by-step guide like this one.
Get the newsletter →The architecture behind this workflow.
Two operator's manuals for the same job, run two different ways. OpenCLAW for the always-on agent harness; Claude Code for the focused-work CLI. Pick one, or get the bundle for $149.
Browse the books · $99 each