Weekly team and investor updates, generated from your meetings
Two drafts every Friday morning. One team-facing, one investor-facing. Both pulled from the week's meeting record. You edit for tone and ship.
What you'll have when you're done
Every Friday morning, two [markdown][8] drafts waiting in your notes folder. One written for your full team, one written for your board, advisors, and key investors. Both pulled from the week's meeting transcripts. You spend twenty minutes editing for tone and the updates ship by 9am Friday.
The "I owe an update" backlog disappears. The updates that used to take two hours to write (or that you kept putting off) become an enjoyable Friday-morning ritual.
Sending updates sucks
Sending team and investor updates sucks. I used to spend hours writing them and I dreaded the whole process. They never felt urgent enough to take time away from building, but they were heavy enough that the cold start always felt like an hour I didn't have.
The cold start is the problem. The actual content of the update already exists. It lived in the conversations I had that week. It's in the sales calls, the leadership 1:1s, the customer feedback, the hiring debriefs. The bottleneck isn't the content; it’s putting it all together (and remembering what I need to put in there).
This workflow closes the bottleneck. [Granola][6] does the capture. Claude does the assembly. I do the editing. And the crazy thing is the updates are WAY better than the ones I used to send, because Claude captures things I would have totally forgotten to add.
What you need first
- The Granola → markdown pipeline already running. This workflow runs on the markdown library the pipeline produces. If you haven't set it up yet, do [Granola → markdown][1] first. Come back when done.
- Claude Code installed and pointed at your Granola folder.
- A team-update template. Rough is fine. Two or three of your past updates work as the style guide.
- An investor-update template. Same deal. If you've never sent one, write a one-paragraph sketch of what you'd want in it.
- 45 minutes for the first Friday. Ten to fifteen minutes a Friday after.
Step-by-step
Step 1Capture your two templates
Templates teach the prompt what "your voice" looks like. Without them, Claude will write competent updates in generic operator voice. With them, the drafts sound like you on the first pass.
Save two files in your notes folder:
mkdir -p ~/notes/templates
touch ~/notes/templates/team-update-template.md
touch ~/notes/templates/investor-update-template.md
In each file, paste one of your past updates (or write a rough sketch if you don't have one). Then add a short block at the top explaining the audience, tone, length, and sections.
Example for the team template:
# Team update template
Audience: full team, ~40 people, mixed levels.
Tone: candid, specific, no jargon, light humor OK.
Length: roughly 300 words.
Sections:
1. Wins this week
2. What's next
3. What I'm thinking about
4. Where I need help
---
[PASTE 2-3 PAST UPDATES BELOW AS STYLE EXAMPLES]
Repeat for the investor template, adjusting audience (board + advisors + key investors), tone (confident, candid about challenges, specific numbers where available), length (~500 words), and sections (highlights, lowlights, asks, key metrics).
Step 2Write the generation prompt
Save this as ~/.claude/prompts/weekly-updates.md:
Generate two drafts from this week's meeting transcripts in ~/notes/granola/
(last 7 days).
## Team update draft
Read ~/notes/templates/team-update-template.md for audience, tone, length,
and section structure. Match it.
Source meetings: every internal meeting from the past 7 days. Include 1:1s,
leadership team, all-hands prep, and any planning sessions. Exclude
customer-facing calls unless the team needs to know what happened.
Cite source filenames as evidence for each non-trivial claim. Flag anything
the team doesn't already know with [NEW:].
Save to ~/notes/updates/{YYYY-MM-DD}-team.md.
## Investor update draft
Read ~/notes/templates/investor-update-template.md for audience, tone,
length, and section structure. Match it.
Source meetings: leadership team, customer calls (for revenue and pipeline
color), board prep, fundraising conversations.
Confidential team info stays out (compensation specifics, individual
performance issues, internal politics by name). If something is borderline,
leave it out and flag it in a "FOR YOUR DECISION:" note at the end.
Cite source filenames as evidence. Flag any number I should verify before
sending with [VERIFY:].
Save to ~/notes/updates/{YYYY-MM-DD}-investor.md.
The audience-boundary block at the bottom of the investor section is the load-bearing safety. It tells Claude what NOT to leak between the two audiences. Read it once. Tighten it until it matches your own instincts.
Step 3Run the first manual generation
Friday morning, open Claude Code:
cd ~/notes
claude
Paste the prompt. Claude reads the week, applies the templates, and writes both drafts to ~/notes/updates/. The first run takes one to two minutes.
Step 4Edit and ship
Open both drafts. For each:
- Read top to bottom once without editing
- Cut anything that doesn't sound like you
- Verify any numbers flagged with
[VERIFY:] - Resolve any
[NEW:]flags (decide what's worth surfacing, what isn't) - Resolve any
FOR YOUR DECISION:flags in the investor draft - Ship
The first Friday this takes about 45 minutes total. By the third or fourth Friday, both edits combined are under fifteen minutes.
Step 5Tighten the templates over time
Every Friday, the edits you make are signal. If you keep cutting the same kind of paragraph from the team update, drop that section from the template. If you keep adding a "shoutouts" block at the top, add it to the template.
Spend two minutes after shipping each week tightening the template. By month two, the drafts come out close to publish-ready.
Step 6(Optional) Schedule a Friday-morning Routine
Once the prompt is stable and the templates are tight, automate the generation step. Open Claude Code and create a Routine:
Every Friday at 6am:
Run the prompt at ~/.claude/prompts/weekly-updates.md.
After both drafts are saved to ~/notes/updates/, post a short note to my
#friday-updates Slack DM:
"Team draft and investor draft ready in ~/notes/updates/.
Team: {team-word-count} words. Investor: {investor-word-count} words."
Trigger: scheduled, Fridays 6am.
Connectors: Slack workspace.
Now Friday morning you wake up, see the Slack DM, open the drafts, edit, ship by 9am. Twenty-minute routine. The hardest part of your week becomes the easiest part of your Friday.
How you'll know it's working
Three checks, in order:
- The drafts sound like you. Not generic operator voice. If the team draft sounds like a memo a stranger wrote about your company, the template needs more of your past updates pasted in.
- You ship the first Friday in under an hour total. Cold start eliminated.
- The "I owe an update" backlog clears. No more April 9 update sitting in your drafts in June. The cadence holds because the cost dropped from two hours to twenty minutes.
When it breaks
Confidential team info leaks into the investor draft. Tighten the audience-boundary rules in the prompt. Add an explicit "always exclude" list: comp specifics, individual performance issues, internal politics named by employee. Add a final scan step: "Before saving the investor draft, re-read and remove anything that names a specific employee in a sensitive context."
The drafts feel generic. Templates are too thin. Paste two or three more of your past updates into the template file. The model needs enough of your voice to mimic it.
Tone mismatch. Common in the first weeks. The team draft is too formal, the investor draft is too casual, or vice versa. Add a one-line tone instruction to each template. Examples: "Write like I'm explaining this to a smart friend over coffee," or "Write like I'm briefing a busy board director who has 5 minutes."
Numbers don't match reality. Claude pulled a pipeline figure from a meeting where someone was speculating, not stating a number. The fix is the "Flag any number I should verify with [VERIFY:]" line in the prompt. Treat the flag as a hard rule before sending.
The update misses something important. Usually a meeting that wasn't in your meeting library. Either the meeting wasn't recorded in Granola, or the export didn't run. Check the Granola folder for the date range; if a meeting is missing, that's a pipeline issue (see [Granola → markdown][2] Step 3).
Where this fits in your harness
This is the communication layer of your [harness][7]. The [Granola → markdown pipeline][3] made every meeting into infrastructure to run workflows from. The [commitment ledger][4] turned that infrastructure into accountability. This workflow turns the same infrastructure into the two updates that keep your company and your investors aligned every week.
Pair it with the content-ideas-from-meetings workflow (forthcoming): both pull from your transcripts, both produce drafts you edit on Friday. The cadence becomes a Friday-morning ritual. See the [Granola pillar][5] for the full pipeline and the other workflows that compound on top.
[1]: /workflows/granola-to-markdown [2]: /workflows/granola-to-markdown [3]: /workflows/granola-to-markdown [4]: /workflows/commitment-ledger [5]: /blog/granola-for-ceos-highest-roi-ai-install [6]: /workflows/what-is-granola [7]: /workflows/what-is-a-harness [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