← All projects

Ezra

A WhatsApp agent managing calendar, email and reminders, doubling as the alert hub for every other bot.

Ezra is a personal AI assistant living inside WhatsApp: a Hebrew-speaking agent that manages calendar, Gmail, reminders and project operations through a normal chat. It also acts as the alert hub for the other bots and systems, so everything important lands in one place. It is a single-user private system; this page documents it as an engineering case study.

How it works

You send a regular WhatsApp message and Ezra replies in Hebrew, short and to the point. Behind the scenes it runs an explicit tool registry: Google Calendar across multiple calendars, Gmail in read-and-send mode, reminders that fire back into WhatsApp, forwarded WhatsApp group messages, read-only Google Analytics, plus daily briefing, tasks, voice messages and remembered facts. A whitelist restricts who the bot answers, and sensitive topics like passwords and account numbers are explicitly out of scope.

The engineering story

The design is deliberately anti-framework-magic: FastAPI, direct calls to the model SDK, SQLite, and an explicit tool registry, so every line is readable. The bot's personality, tone, whitelist and scope live in a single spec.json file, making behavior configuration rather than scattered code. The system prompt is split into a stable cached part and a dynamic part, exploiting prompt caching to cut cost on every message.

Stack

Ezra itself is private, but its architecture is the exact template used to build and teach additional WhatsApp agents.

Technology

Python + FastAPIGreen APIClaude APIGoogle OAuth

FAQ

Can I get access to Ezra?

No. Ezra is a single-user personal agent with a whitelist of authorized contacts and no public access. This page documents its architecture as a case study.

What can Ezra do?

Manage Google Calendar, read and send Gmail, set reminders that fire back into WhatsApp, handle forwarded group messages, report Google Analytics data, and answer general questions. Passwords and sensitive details are explicitly out of scope.

How is it built?

A FastAPI webhook server connected to WhatsApp via Green API, an explicit tool-use loop with Anthropic's Claude, SQLite for memory, and a single spec.json defining personality, whitelist and scope. It is deployed on Render.

What language does it speak?

Hebrew only, by explicit configuration, with a friendly and professional tone and short default replies.