AI agent · Messaging
WhatsApp AI Assistant
A personal assistant that lives in WhatsApp, chats in the user's language and never lets them forget things: reminders from plain conversation, caring check-ins and a web dashboard on the same thread.
- Claude tool use
- Agent SDK
- MCP
- Prompt caching
- Agent memory
- Scheduling
- Webhook security

Product screens with sample data. Names and figures inside the screens are illustrative.
The problem
Reminder apps need opening. People already live in WhatsApp, and they talk in mixed languages like 'kal subah 9 baje yaad dilana'.
- 8
- Agent tools
- 11
- Languages incl. Hinglish
- 1.5 s
- Debounce per turn
What I built
Say it the way you'd say it to a friend
Claude resolves times like 'tomorrow', 'in 2 hours' or 'yaad dilana' against the current time and calls tools to create, update, snooze or cancel reminders. Several quick messages are read as one thought.


It notices when you didn't
Read receipts shape the follow-up: if a reminder isn't read after 20 minutes, the assistant checks in gently. Daily check-ins are skipped if you chatted in the last 45 minutes, and the model can choose to stay silent.


Memory you can read and edit
Facts learned from chat, custom instructions and personality live in one place. Every change applies to the very next message, on WhatsApp and on the web.

The same assistant on the web
A dashboard with upcoming reminders, activity and the same conversation thread as WhatsApp. Sign-in is passwordless with a WhatsApp OTP.

03 AI integration
How a WhatsApp message becomes an agent turn
Each incoming message runs through a small, strict pipeline before Claude sees it, and every tool call is a real write to the database. The trace below illustrates one turn as a developer would inspect it.
- 01Webhook, HMAC verified
- 02De-duplicated by message id
- 031,500 ms debounce batches bursts
- 04One serial turn per owner
- 05Claude with 8 tools, up to 8 rounds
- 06Tool results written to SQLite
- 07Reply sent in 4,000-char chunks

Illustrative developer view of a single turn, with sample data.
Eight tools, real side effects
create, list, update and cancel reminders, update the profile, schedule and cancel check-ins, and update memory. The model never writes to the database directly.
Two backends, one toolset
The Messages API with prompt caching and a server-side fallback, or the Claude Agent SDK serving the same tools as an in-process MCP server.
Context that stays small
A current-time header, the owner's profile and memory go in every turn; history is summarised once it passes 120 messages.
Allowed to say nothing
Check-ins can return NO_MESSAGE, so the assistant stays quiet when a message would be noise.
Never send twice
Reminder state advances before sending and rolls back if the send fails; webhooks are idempotent.
Honest limits
Voice notes get a friendly 'please type it' instead of a guess, in the user's language.
- Model
- Anthropic Claude · tool use
- Agent runtime
- Messages API or Agent SDK + MCP
- Tools
- 8 · up to 8 rounds per turn
- Languages
- 11, including Hinglish
- Server
- Node.js · TypeScript · 18 endpoints
- Data
- SQLite · 11 tables
- Web
- React 19 · WhatsApp OTP sign-in
- Safety
- HMAC webhooks · idempotency · rollback
Key decisions
One turn per owner
Messages from the same person are processed serially, so two quick replies can't create two reminders.
Debounce before thinking
Waiting 1.5 s lets bursts of short messages arrive, so Claude answers the whole thought once.
Read receipts as signal
Follow-ups depend on whether a reminder was actually read, not on a fixed timer alone.
