AutomataGet Started

Tutorial: Free AI Chief of Staff for your WhatsApp

Build a free, read-only AI chief of staff for WhatsApp with Claude and Automata. Turn chats into tasks, get a morning brief, track what people owe you, and keep your messages on infrastructure you control.

8 min read

If your work runs on WhatsApp, the important things get buried. Someone says "I'll send the quote by Friday," a site visit is confirmed in a group chat, you promise something at 11pm and forget it by morning. A chief of staff is the person who catches those for you.

You can build that with Claude and a free, open-source WhatsApp MCP server. Claude reads the chats you allow, pulls out commitments in both directions, and writes you one calm brief each morning. It never sends a message unless you give it write access, and by default it can't.

This tutorial sets up the whole loop: read-only access, a reusable set of instructions, a morning brief, a "who owes me what" check, and an optional scheduled run.

What you need

  • A WhatsApp account. Use a spare number while you test, because unofficial clients carry some risk of rate limits or bans.
  • A Claude account on a plan that supports custom connectors. Anthropic changes plan availability over time, so check their current details.
  • Automata running somewhere Claude can reach. If you have not done this yet, follow How to connect WhatsApp to Claude first; it takes about ten minutes.

What a chief of staff actually does

Before writing any prompts, it helps to name the jobs. A WhatsApp chief of staff does five things, and each one maps to a prompt you will write below:

JobWhat it looks like
Capture commitments"I'll send it Friday" becomes a task with a deadline, in both directions: what others owe you, and what you promised
Catch meetingsAppointments confirmed over chat are listed with a date, time, and place
Brief youOne page each morning: what needs you today, who is waiting on you, what is coming up
Chase quiet threadsSurfaces people who promised something and have gone silent
Answer questions"What is still pending from Ramesh?" answered from your chats, with the source message quoted

Step 1: Give it read-only access

The safest chief of staff is one that can only read. When you create the connector token, set each chat to one of three levels:

LevelWhat Claude can do
ReadList the chat, read its history, and search inside it
WriteEverything in read, plus send messages to it
No accessThe chat does not exist as far as Claude can tell

For this setup, use Read only. Start with the five or ten chats where work actually happens: your team, key clients, suppliers, and one or two family groups if they hold real commitments. Leave everything else at No access.

Only the tools you enable are registered, so a read-only token cannot send a message even if you ask it to. The check happens in Automata, not in the prompt. See how permissions are enforced for the details.

Step 2: Set up the instructions

In Claude.ai, create a Project, enable the WhatsApp connector inside it, and paste the following into the project instructions. Every chat in the project then starts with the same behavior.

You are my chief of staff. You work from my WhatsApp chats through the
WhatsApp connector. You can only read; never offer to send a message
from your own account.

Rules:
- Only use messages you have actually retrieved. If a chat has no
  relevant messages, say so. Never guess or invent a commitment.
- For every task, meeting, or claim, quote the source message and name
  the chat and the date, so I can check it in one tap.
- Separate commitments into two lists: "I owe" (things I promised) and
  "Owed to me" (things others promised).
- Convert relative dates ("Friday", "tomorrow") into absolute dates
  using today's date.
- When a reply is needed, write a short draft for me to copy and send
  myself. Match the language and tone of the chat.
- Be brief. Lead with what needs me today.

Two of these lines do most of the work. Requiring a quoted source for every item makes mistakes easy to spot, and the "never invent" rule keeps the brief trustworthy. If you use Claude Code or another client instead of Claude.ai, put the same text in your CLAUDE.md or system prompt.

Step 3: Run your first morning brief

Start with a narrow window so you can verify the output against what you remember. Paste this into a new chat in the project:

Write my morning brief. Look at all allowed chats from the last 24
hours. Use this structure:

1. Do first: the 3 most time-sensitive items, each with a deadline
2. I owe: things I promised, with who and by when
3. Waiting on others: things people promised me, with how long ago
4. Coming up: meetings and appointments in the next 3 days
5. Drafts: one short reply for anything that needs an answer today

Quote the source message for each item.

Claude calls list-chats to see what it may read, then read-messages for each active chat, and returns the brief. Read it against your own memory. If it misses something, check that the chat is allowed on the token and that message history has synced.

Step 4: Track what people owe you

This is the prompt that earns its keep. People forget their own promises more than yours, and a chief of staff remembers both. Run it weekly, or any time you suspect something has slipped:

Find every commitment in the last 14 days where someone else told me
they would do something ("I'll send", "will confirm", "by Monday"). For
each one, check whether a later message shows it was done.

Show only the ones with no follow-through, oldest first, with:
- who, what, and the date they promised
- the original message, quoted
- a one-line nudge I can send

Claude uses search-messages to look for phrases like these, then reads the surrounding thread to see whether the loop closed. You get a list of open loops and ready-to-send nudges, and you stay in control of sending them.

Step 5: Ask it anything

Once the setup is in place, the everyday use is simply asking. Because the instructions require sources, every answer comes with proof:

  • What is still pending from Ramesh?
  • What did Anita say about the documents?
  • Which meetings did I confirm for next week, and where?
  • Did the bank ever confirm the payment schedule?
  • What did I promise in the Suppliers group this month?

If you also connect a calendar to Claude, you can ask it to add the meetings it found. That step goes through your calendar connector, not through WhatsApp, and Claude will ask before creating anything.

Step 6: Make the brief automatic (optional)

A chat-based brief is on demand: you ask, it answers. If you want the brief waiting for you every morning, run it on a schedule with Claude Code in non-interactive mode and send the output wherever you read things.

First add the connector to Claude Code, replacing the URL with your own:

claude mcp add --transport http automata \
  https://your-automata.example.com/mcp/<connector-token>

Then run the brief with a single command:

claude -p "Write my morning brief from the last 24 hours of my allowed \
WhatsApp chats. Do first, I owe, waiting on others, coming up. Quote \
the source message for each item." \
  --allowedTools "mcp__automata"

The --allowedTools flag lets a non-interactive run use the connector without stopping to ask permission. Because your token is read-only, that is safe: the worst it can do is read the chats you already allowed.

Put the command in a script and run it from cron at 6am, or from a scheduled job on your server. Pipe the result to email, a notes app, or a message to yourself, depending on what you check first each day.

How this compares to hosted apps

You have three ways to get this. Some products package the idea as a closed, ready-made app. Munshi, for example, is a hosted iPhone and Android app that links to your WhatsApp, writes tasks automatically, and delivers a brief at 6am. Automata also offers a hosted version if you want to skip running a server. Or you can self-host Automata and keep everything on infrastructure you control.

Closed hosted app (e.g. Munshi)Automata hostedAutomata self-hosted
SetupInstall, sign in, link WhatsApp in a few minutesSign up and link WhatsApp, with no server to runDeploy a server and write a few prompts; plan on 20 to 30 minutes
Who can see your chatsThe vendor (Munshi states messages are deleted after 7 days)The host, since messages are stored on its serversOnly you, in a database you run and can inspect
Which chats it readsPer-chat selectionPer-chat access scoped by tokenRead, write, or no access per chat, enforced by the server
Source codeClosed, so you cannot audit itOpen sourceOpen source, so you can audit exactly what it does
CostFree for early users at the time of writingCheck the signup page for current pricingFree software; you pay for your own Claude plan and hosting
Proactive daily briefBuilt inOn demand, or scheduled with the optional step aboveOn demand, or scheduled with the optional step above
What it can do beyond tasksFixed feature setAnything you can prompt: summaries, drafts, research across chats, other MCP toolsAnything you can prompt: summaries, drafts, research across chats, other MCP tools

None of these is strictly better. A hosted option trades control for convenience, and Automata hosted gives you an open, general-purpose assistant without the server work. Self-hosting is the only route where your messages stay entirely on your own infrastructure. Pricing and features for hosted products change, so check their sites for current details.

Keep it safe

  • Stay read-only. Add write access to a chat only if you have a specific reason, and only for that chat.
  • Treat the connector URL like a password. Anyone with the token can read the chats it allows. If it leaks, revoke that one token and create a new one.
  • Prefer header authentication when your client supports it, since URLs often end up in logs.
  • Keep a spare number for experiments, and avoid bulk or unsolicited messaging.
  • Review the first week. Compare the briefs with what actually happened until you trust them, and tighten the instructions where they drift.

Troubleshooting

SymptomLikely cause and fix
The brief is emptyThe chats are not allowed on this token, or history has not synced yet. Check the permissions and the history setup.
It misses a promiseThe phrasing was unusual, or the chat is outside the time window. Widen the window and add examples of how you and your contacts phrase commitments.
Dates are wrongClaude resolved "Friday" against the wrong day. Tell it today's date in the instructions, or ask for absolute dates in every item.
Scheduled run asks for permissionThe --allowedTools flag is missing or the connector name does not match the one you added.
Claude says it cannot connectClaude.ai needs a public HTTPS URL, not localhost. See the troubleshooting guide.

Next steps

Comments

Questions, corrections, or your own setup? Join in below. Pick any name to post.