top of page

Multiple Calendar Sync Case Study: Building a Reliable Availability Infrastructure

Sep 2
7 min read

A Professional OS in Practice: Multiple Calendar Sync as Infrastructure


Managing several calendars sounds like a small productivity problem until personal commitments, business projects, team schedules, travel, and booking systems all need to agree on when the same person is actually available.


That was the problem behind this project. Different calendars were useful for keeping contexts separate, but that same separation made reliable availability harder. A booking platform could see one part of the picture while another commitment lived somewhere else. Manual blocking worked until the number of calendars and booking integrations made it fragile.


The solution was not to replace the calendars or force everything into one account. It was to build a small availability infrastructure between them: a deterministic system that reads trusted source calendars, applies explicit blocking rules, and writes anonymous availability blockers to dedicated output calendars.


There is another reason this case study matters. The system currently uses almost no AI in its runtime. Yet the project itself was designed, implemented, tested, debugged, and documented with AI throughout. It is a practical example of the difference between an AI-powered system and a system built with AI.


Context


The calendar setup had grown organically across several areas of work and life. Personal, work, study, and travel calendars lived in iCloud. Business and project calendars lived in Google. Several projects had separate booking flows. For example, Airbnb introduced another constraint because its calendar connection needed a single combined availability source.


None of these tools was wrong on its own. The problem emerged between them. Each application had only partial visibility, while accurate availability depended on the complete picture.


The Problem


The operational issue was not simply calendar clutter. It was that availability had become distributed across multiple systems.


  • Personal and business commitments were intentionally separated across different calendars and accounts.

  • Project and team calendars added more sources that could legitimately make a time slot unavailable.

  • Booking systems needed dependable availability without being given unnecessary access to private event details.

  • Native integrations solved parts of the problem but did not provide one stable model across every combination of calendars and booking tools.

  • Manual blocker events created maintenance work and increased the risk of omissions, duplicates, or stale availability.

  • Recurring events, moved instances, all-day events, and time zones made simple one-way copying less reliable than it first appeared.


The visible symptom was the risk of double-booking. The underlying problem was architectural: several valid sources of truth needed to contribute to one operational decision — whether a time slot should be bookable.


Why the Usual Fixes Were Not Enough


Most multiple calendar sync solutions start from the interface: show everything in one calendar view, subscribe one calendar to another, or ask a booking platform to check several calendars. Those approaches are useful, but they solve different problems.


Seeing all calendars in one interface helps a person understand their schedule. It does not necessarily create a dependable availability layer for external booking systems. Copying full events can expose information that the booking system does not need. Manual blockers preserve privacy but become another thing to maintain.


The objective therefore changed from ‘How do I see all my calendars together?’ to ‘How should availability move through the system?’ That shift is very close to the Professional OS approach: start from the operating requirement, then choose the technology and automation that support it.


The Approach


Instead of changing the existing calendar structure, I designed a standalone availability layer around it. The calendars people already use remain authoritative. The infrastructure reads them, normalizes the relevant events, decides which booking targets each event should block, and writes only the minimum information required downstream.


The architecture is designed to remain stable while adapting to different combinations of personal, business, project, team and booking calendars.


The implementation uses a Cloudflare Worker as the reconciliation layer. It reads iCloud calendars through CalDAV and Google calendars through the Calendar API, then maintains dedicated Google output calendars used by Calendly and Airbnb.


The System


The current V1 reads four iCloud sources together with several Google calendars and accounts.


It writes to three dedicated outputs named Availability Blockers. The first two complement the native calendars checked by each Calendly account. The third output combines external blockers into a single availability calendar because one of the booking integrations supports only one Google calendar connection.


Diagram showing source calendars feeding a privacy-preserving availability infrastructure, which creates anonymous busy blocks for booking systems and reconciles changes in a continuous feedback loop.
Source calendars remain authoritative while dedicated outputs expose only booking availability.

How It Works


The Worker runs on a schedule and performs reconciliation rather than blind event copying.


  • It calculates a rolling synchronization window, currently from yesterday through 90 days into the future.

  • It reads events only from configured source calendars.

  • Recurring events and time zones are normalized so individual occurrences can be compared reliably.

  • Each source occurrence becomes an anonymous blocker intent for the outputs it should affect.

  • A deterministic fingerprint identifies the relationship between the original event, recurrence instance, target output, and time range.

  • Existing managed blockers are compared with the intended state.

  • Missing blockers are created, changed blockers are updated, and stale blockers are deleted.

  • Output calendars are never read as sources, which prevents synchronization loops.


This reconciliation model is important because the desired state is recalculated on every run. If nothing has changed, nothing needs to be written. If a source event moves or disappears, its blocker can be updated or removed instead of leaving stale availability behind.


Privacy and Reliability by Design


The booking layer does not need to know why a person is unavailable. It only needs to know that the time should not be offered.


Generated events therefore use the summary ‘Busy’, are private and opaque, contain no location, and do not copy descriptions or source calendar names. Internal identifiers are stored only in private extended properties so the Worker can manage its own events without exposing source details.


Reliability was treated as a design requirement rather than an assumption. The architecture separates source and output calendars, uses deterministic identifiers, supports dry-run operation, and reconciles the intended state repeatedly. Recurrence and timezone handling were tested specifically because those are common places where apparently simple calendar syncs become unstable.


The Result


V1 was completed and verified in August 2026. A final full reconciliation processed 223 source events and produced 437 blocker intents with no source errors, no output errors, and no pending creates, updates, or deletes. Repeated full synchronizations produced no duplicates.


The production setup now provides correct availability to the separate Calendly flows, while Airbnb receives its own combined availability calendar. Generated blockers remain anonymous, iCloud timezone-specific events are converted correctly, moved recurring instances follow their new dates, and Apple-style weekly recurrences without an explicit BYDAY preserve the weekday defined by the original event.


The practical result is not a more impressive calendar interface. It is less calendar maintenance. Booking tools receive dependable availability while the underlying personal, business, and project calendars can remain organized according to their own purposes.


Built 100% With AI — But Barely Using AI


This project also illustrates an important distinction in AI implementation.


The current runtime is deterministic. Availability rules, event normalization, reconciliation, privacy boundaries, and duplicate prevention are better served by explicit logic than by probabilistic model decisions. An AI model is not needed to decide whether a known calendar event occupies Tuesday from 14:00 to 15:00.


AI was valuable somewhere else: throughout the creation process. It was used to analyse the problem, explore architectural alternatives, challenge assumptions, design the synchronization model, develop and debug the Worker, reason through recurrence edge cases, structure tests, and maintain the roadmap and documentation.


In other words, this is not currently an AI-powered calendar system. It is an operational system built with AI.


That distinction matters because good AI implementation is not about maximizing the amount of AI inside a workflow. The Professional OS principle is almost the opposite: standardize and structure the operating problem first, automate stable repetitive work with deterministic technology, and introduce AI where judgment, interpretation, or flexible reasoning actually adds value.


Why This Matters Beyond Calendars


Calendar management is a useful example because the problem is familiar. Many people already have some version of this setup: a personal calendar, a company calendar, a project calendar, team calendars, and one or more booking tools. Most arrangements evolve through incremental fixes until the person managing them becomes the integration layer.


The more general lesson is that operational friction often appears between tools rather than inside them. Adding another application does not necessarily solve that. Sometimes the useful intervention is a small infrastructure layer that clarifies sources of truth, defines how information should flow, and gives downstream systems exactly the information they need.


That is why I see this project as a Professional OS component rather than simply a calendar automation. It turns fragmented scheduling information into a reliable reusable capability.


What Comes Next


The architecture intentionally leaves room for later capabilities without making them requirements for V1.


  • A true soft/hard priority layer with override rules.

  • Travel buffers and location-aware availability.

  • A unified availability API for websites and other booking systems.

  • AI-assisted classification where context is genuinely ambiguous.

  • Agentic scheduling functions that can reason about preferences and constraints on top of the reliable availability foundation.


The order is deliberate. Agentic scheduling becomes much more useful when it operates on clean, dependable availability rather than compensating for fragmented calendar infrastructure.


Key Takeaways


  • The calendar problem was really an information-flow and systems-architecture problem.

  • Keeping source calendars separate can be a feature, provided availability is coordinated through a reliable layer.

  • Privacy can be preserved by exposing anonymous busy state instead of copying full event details.

  • Reconciliation and deterministic identifiers make the system easier to keep idempotent and loop-proof.

  • AI does not have to run inside a system to contribute substantially to how that system is designed and built.

  • A strong deterministic foundation creates a safer place to add agentic capabilities later.


Request the Calendar Infrastructure Playbook


If you manage several personal, business, project, team, or booking calendars and are trying to make availability more reliable, I am preparing a practical Calendar Infrastructure Playbook based on this implementation.


It will cover the architecture, source and output calendar model, blocking rules, privacy approach, reconciliation logic, testing considerations, and the decisions needed to adapt the pattern to a different calendar stack.



The broader lesson is simple: good AI implementation sometimes means knowing where not to use AI. Build the operating foundation first. Add intelligence where it can make that foundation more useful.

Comments


bottom of page