Reclaim sends users, its scheduler and AI agents through one write path
Dropbox's calendar app added agents by putting every writer behind shared "Schedule Actions" and rewriting its scheduler as a pure function to support dry-run previews.
Why it matters · The pattern applies to any system with more than one writer: route every writer through one validated command layer, and make the core computation side-effect free so you get previews for little extra work. Fair warning: the post gives no numbers.
The headline is about AI, but the useful part of this Dropbox post is the architecture. Reclaim, Dropbox's calendar assistant, wanted users to make scheduling requests in plain language. The engineers say the hard part was adding a third, nondeterministic writer to a system that already had two, without splitting it into separate code paths.
Three actors, one command path
Before the redesign, two things changed calendars. Users made direct edits, such as moving an event or changing a setting. A background automated scheduler placed and re-placed flexible blocks (tasks, focus time, lunch) based on each person's preferences and availability. An LLM agent would be a third writer, and an unpredictable one. The authors' example: "make time for this tomorrow" could mean finding an open slot, creating a new event, or moving an existing one, and some of those choices touch other people's calendars.
The team chose not to build a separate path for AI. Every capability is a Schedule Action, a standard operation such as create or update event, change RSVP, or find availability. All three actors use the same Schedule Action types, with the same validation and commit process. This matters because changes cascade: moving one meeting can change someone's availability and cause the scheduler to shuffle flexible events elsewhere. With one implementation, those rules live in one place instead of three copies that drift apart.
Previews from a pure scheduler
For review, Reclaim added , a temporary copy of the calendar where users check proposed changes and their side effects before anything is committed or sent to attendees. To make it fast, the team rewrote the automated scheduler as a : it computes a proposed schedule without saving anything, so Reclaim can rerun it every time the user tweaks the preview. Calendar data for busy users and multi-attendee meetings is cached in Redis. When an event moves inside the preview, attendee availability is updated there too, so the next run works from the proposed state rather than the real one.



