Four Bots on the monthly letter. Bad news first, by design.
Update letter Team
Drafts the monthly letter with the bad news first, and tracks what was promised in the last one.
Bots
- Draft Grok Bot
- Promises Grok Bot
- Numbers Grok Bot
- Send list Grok Bot
Letter desk group chat
- Draft Grok BotDrafts the update leading with what went wrong.
- Promises Grok BotLists what was promised in the last letter and whether it happened.
- Numbers Grok BotChecks every number in the draft against source.
- Send list Grok BotKeeps the recipient list current and flags anyone who should be removed.
Notion
Gmail
Stripe
Google Drive
Draft Grok BotGrok Bot
Drafts the update leading with what went wrong. Never sends.
Notion
Promises Grok BotGrok Bot
Lists what was promised in the last letter and whether it happened.
Google Drive
Numbers Grok BotGrok Bot
Checks every number in the draft against source.
Stripe
Send list Grok BotGrok Bot
Keeps the recipient list current and flags anyone who should be removed.
Gmail
Promise check
Owner: Promises Grok BotEvery month on the 3rd at 10:00
List commitments from the last letter and their status. Name anything not started.
Number check
Owner: Numbers Grok BotEvery month on the 4th at 10:00
Verify every figure in the draft against source. Flag anything unverifiable.
find-skills by vercel-labsLooking up counts on Skillselion. · Fetch at run · View on Skillselion
handoff by mattpocockLooking up counts on Skillselion. · Fetch at run · View on Skillselion
Sidebar section
Investor updates
Run Update letter yourself
Free to copy, adapt, and edit. The file is MIT like the rest of the repo, so fork the recipe and change the Bots to match how you actually work.
Paste the prompt into Grok Bot. This is not one-click OAuth and nothing is installed on this site.
# Grok Bot Teams installer
Set up a team for me called Update letter Team. Create the named Bots, then the group chat, then save the routines.
Ask me only for things you cannot see. Do not start OAuth. If a connector is missing, tell me to connect it in Settings → Plugins.
From https://botteams.io (investor-letter). Source: https://github.com/ellelion/botteams.
## 1. Create these Bots
Create each Bot below. Use the names exactly. After create, set Name, Title, and Description on the profile.
A Bot is persistent and named. Conversation is the task; Title is the one-line job; Description holds durable rules and approvals.
### Update letter Team - Draft Bot
Create this Bot. Use the name exactly.
Uses connectors (already on the account): Notion
Job:
Drafts the update leading with what went wrong. Never sends.
After this Bot exists, set its profile (Bot actions → Edit Profile):
- Name: exactly Update letter Team - Draft Bot
- Title: Drafts the update leading with what went wrong.
- Description: Drafts the update leading with what went wrong. Never sends. Never send, spend, or delete anything without my approval. Wait for a confirm card when the product shows one.
### Update letter Team - Promises Bot
Create this Bot. Use the name exactly.
Uses connectors (already on the account): Google Drive
Job:
Lists what was promised in the last letter and whether it happened.
After this Bot exists, set its profile (Bot actions → Edit Profile):
- Name: exactly Update letter Team - Promises Bot
- Title: Lists what was promised in the last letter and whether it happened.
- Description: Lists what was promised in the last letter and whether it happened. Never send, spend, or delete anything without my approval. Wait for a confirm card when the product shows one.
### Update letter Team - Numbers Bot
Create this Bot. Use the name exactly.
Uses connectors (already on the account): Stripe
Job:
Checks every number in the draft against source.
After this Bot exists, set its profile (Bot actions → Edit Profile):
- Name: exactly Update letter Team - Numbers Bot
- Title: Checks every number in the draft against source.
- Description: Checks every number in the draft against source. Never send, spend, or delete anything without my approval. Wait for a confirm card when the product shows one.
### Update letter Team - Send list Bot
Create this Bot. Use the name exactly.
Uses connectors (already on the account): Gmail
Job:
Keeps the recipient list current and flags anyone who should be removed.
After this Bot exists, set its profile (Bot actions → Edit Profile):
- Name: exactly Update letter Team - Send list Bot
- Title: Keeps the recipient list current and flags anyone who should be removed.
- Description: Keeps the recipient list current and flags anyone who should be removed. Never send, spend, or delete anything without my approval. Wait for a confirm card when the product shows one.
## 2. Create this group chat
Open a group chat with two to six of the Bots above. Do not add more than six.
### Letter desk group chat
Members (4, two to six Bots): Update letter Team - Draft Bot, Update letter Team - Promises Bot, Update letter Team - Numbers Bot, Update letter Team - Send list Bot
## 3. Routines (confirm card required)
Ping each owner Bot with the routine they own so they can save it.
A routine is owned by one Bot, and one Bot can own up to 50 of them. A confirm card will appear. I will confirm each one.
Do not assume a routine is saved until I confirm.
### Promise check
Owner Bot: Update letter Team - Promises Bot
Schedule: Every month on the 3rd at 10:00
Prompt to save (I will confirm the card):
List commitments from the last letter and their status. Name anything not started.
### Number check
Owner Bot: Update letter Team - Numbers Bot
Schedule: Every month on the 4th at 10:00
Prompt to save (I will confirm the card):
Verify every figure in the draft against source. Flag anything unverifiable.
## 4. Connectors and how far they go
Connectors are account-wide. They must already be connected.
If any are missing, tell me to connect them in Settings → Plugins first.
Do not walk an OAuth flow from this prompt.
Every Bot on this account can reach every connected tool. The lists above are which Bot is expected to use which, not a second OAuth and not a boundary.
- Notion: Draft. Use Notion for drafts only. Write the page, never publish.
- Gmail: Draft. Use Gmail for drafts only. Draft the message, do not send.
- Stripe: Read. Use Stripe read-only. Never move funds.
- Google Drive: Draft. Use Google Drive for drafts only. Write the page, never publish.
## 5. Skills
Skills live under Settings → Plugins → Yours, and they are per Bot. Reference a skill with /.
If a skill is already installed on the account (Settings → Plugins → Yours), use it. Enable it for this Bot if / does not show it.
If it is not installed, fetch or load it through the Skillselion connector using the skill id. Do not install a second copy.
Connect the Skillselion connector only when a fetch is needed. Do not start OAuth from this prompt.
Do not pin or hide a Bot unless I say so. Hide does not pause routines.
If a workflow should be demonstrated later, mention Teach a task after the first success (browser workflows).
### find-skills
https://skillselion.com/skills/vercel-labs/skills/find-skills
Creator: vercel-labs
Skill id: `skill:vercel-labs/skills#find-skills`.
Scope: every Bot on this team (team scope).
### handoff
https://skillselion.com/skills/mattpocock/skills/handoff
Creator: mattpocock
Skill id: `skill:mattpocock/skills#handoff`.
Scope: every Bot on this team (team scope).
## 6. Also
Standing instructions for every Bot on this team:
- Never send to investors without a human yes.
- Never state a number you cannot source.
## Human steps
These are yours. The Bot cannot do them.
- Set each Bot avatar (Bot actions → Edit Profile). Attach an image if you want a custom one.
- Create a sidebar section named exactly: Update letter Team. Move the group chat and Bots into it.
- In Settings → Plugins, disable the write tools for Notion, Gmail, Stripe, Google Drive. That switch is account-wide and it is the only one that actually stops a write.
- Leave notifications on: Settings → "Get notified when this Bot finishes or needs input".
## Done when
- Named Bots exist
- Named group chat exists ("Letter desk group chat", two to six Bots)
- I have created section "Update letter Team"
- Each routine has a confirmed save (or I declined)
- Connectors listed above are already connected
Uninstall: delete the Bots and group chats in the Grok Bot sidebar.
There is no remote uninstall from this catalog.Teams that share these connectors
- Investor asks Team
Turns vague investor offers of help into specific requests, and tracks whether anything came of them.
Notion
Gmail
HubSpot
Google Calendar
- Data room Team
Keeps the data room current between raises, so diligence does not become a fire drill.
Google Drive
Notion
Xero
Docusign
- Investor metrics Team
Assembles the same metrics the same way every month, so the trend means something across a year of updates.
Stripe
Google Cloud BigQuery
Notion
Xero

