All CUJ Case Studies
Critical User Journey Case Study

Google Calendar Schedule Helper: Multi-Caregiver Family Logistics & Dispatch

📅 2026-09-02 👤 Daniel Herrington
GitHub Repository
Google Calendar Schedule Helper: Multi-Caregiver Family Logistics & Dispatch Hero Graphic

A Critical User Journey (CUJ) and system architecture for multi-caregiver households to assign, swap, and synchronize school and activity pickups/drop-offs across shared Google Calendars without recurrence corruption or manual calendar chaos.


🔍 The Problem Space

Context

In active multi-caregiver families (parents, nannies, grandparents, and family helpers), managing children's daily logistics is a complex, high-velocity scheduling puzzle. On any given weekday, multiple children must be transported to and from schools, ballet, chess, gymnastics, sports practices, and tutoring:

The Core Friction

Google Calendar was designed for individual calendar owners and business meetings—not dynamic, multi-person operational dispatch. When a family attempts to coordinate daily handoffs, the workflow collapses:

  1. The Recurrence Duplication Trap:

When a parent tries to reassign Tuesday's pickup from the nanny to the grandmother or dad, Google Calendar's native "Copy to Calendar" or drag-and-drop duplicates the entire recurring series onto the target calendar. The family ends up with dozens of redundant phantom events and phantom notifications across all calendars.

  1. The Multi-Calendar Blindspot:

Looking at 10+ overlapping colored calendars simultaneously creates extreme visual noise (cognitive overload). It is nearly impossible to answer the single most urgent daily question: "Who is picking up Izzy from gymnastics today at 4:00 PM, and who has Vale?"

  1. High-Stakes Error Rate & Manual Drag:

Reassigning a single pickup currently takes 6–8 manual taps per event: opening the event, detaching the single instance from the recurring series, changing the calendar owner/attendees, deleting the original instance, and verifying the change didn't break future recurrences.

  1. Asymmetric Caregiver Access:

Non-manager caregivers (nannies, grandparents) simply need a clean, authoritative view of their daily duties, while parents need full manager-level controls without exposing sensitive personal calendar entries.


🚦 Critical User Journeys (CUJs)

CUJ 1: One-Click Caregiver Reassignment & Shift Swapping

CUJ 2: Consolidated Family Logistics & Dispatch Matrix

CUJ 3: Clean Recurrence Exception & Native Calendar Synchronization


🗺️ The Ideal Flows

Flow 1: Fast Single-Instance Caregiver Reassignment

sequenceDiagram
    autonumber
    actor Parent as Parent (Manager)
    participant UI as Schedule Helper UI
    participant Backend as Sync Engine / Dispatcher
    participant GCal as Google Calendar API
    actor Caregiver as Caregiver (Nanny / Grandparent)

    Parent->>UI: Drags "3:00 PM Izzy Pick Up" from Dad to Nanny (Lucila)
    UI->>Backend: POST /api/schedule/reassign { eventId, instanceDate, fromCal, toCal }
    Backend->>GCal: GET /calendars/{fromCal}/events/{eventId}/instances
    Backend->>GCal: PATCH /calendars/{fromCal}/events/{instanceId} (status: cancelled / removed)
    Backend->>GCal: POST /calendars/{toCal}/events (create isolated single instance with master ref)
    Backend-->>UI: 200 OK (State Updated)
    UI-->>Parent: Visual Confirmation ("Assigned to Lucila")
    GCal-->>Caregiver: Native Google Calendar Push Notification & Watch Sync
  1. Trigger: A change in daily availability (e.g., meeting conflict, illness, traffic).
  2. Action: Manager opens the web UI and reassigns the target duty via a drag-and-drop caregiver board.
  3. Automated Response: The backend retrieves the specific event recurrence instance, creates a single-instance exception on the target calendar, suppresses the source calendar instance, and logs the assignment.
  4. Resolution: The child's pickup is covered, native calendar notifications route to the correct caregiver, and no recurring series are duplicated.

Flow 2: Weekly Dispatch Overview & Gap Detection

  1. Trigger: Weekly family planning session (e.g., Sunday evening).
  2. Action: Manager loads the Weekly Dispatch View.
  3. Automated Response: The system aggregates recurring templates across all family children (Izzy, Vale) and flags any unassigned drop-offs/pickups with amber warning badges.
  4. Resolution: Manager batch-assigns caregivers for open slots in under 60 seconds; Google Calendar API executes atomic batch updates.

🛠️ The Solution: Google Calendar Schedule Helper Architecture

graph TD
    subgraph Authentication & Access Control
        M1[Parent 1: Daniel\nManager OAuth] --> Auth[Auth / Session Manager]
        M2[Parent 2: Elizabeth\nManager OAuth] --> Auth
    end

    subgraph Schedule Helper Core
        Auth --> WebUI[Caregiver Dispatch UI\n• Daily Board\n• Weekly Matrix\n• Unassigned Gap Alerts]
        WebUI --> DispatchAPI[Dispatch & Sync Engine]
        DispatchAPI --> Rules[Recurrence & Exception Engine]
        DispatchAPI --> Cache[Family Schedule State / Roster DB]
    end

    subgraph Google Calendar Infrastructure
        DispatchAPI <-->|OAuth 2.0 / Service Account| GCalAPI[Google Calendar API v3]
        
        GCalAPI --> Cal1[(Family - Daniel)]
        GCalAPI --> Cal2[(Family - Elizabeth)]
        GCalAPI --> Cal3[(Family - Lucila)]
        GCalAPI --> Cal4[(Family - Matilde / Abu)]
        GCalAPI --> Cal5[(Family - Shared / Kids)]
    end

    subgraph Caregiver Experience
        Cal3 -.-> Phone1[Lucila's Phone / Watch\nNative Calendar Alerts]
        Cal4 -.-> Phone2[Abu's Phone\nNative Calendar Alerts]
end

💻 Under the Hood (Architecture & API Implementation)

1. Google Calendar Recurrence Handling Strategy

To avoid the classic Google Calendar bug where moving recurring events clones the entire series, the Schedule Helper implements an Atomic Recurrence Splitter:

2. Streamlined Multi-Calendar Role & Permission Architecture

3. Dispatch Matrix UI Design

4. Technical Feasibility & Security Assessment


🔗 Repository & Open Source Code

The full full-stack application (React 18 + Vite + TypeScript frontend, Node.js + Express + Google Calendar v3 API backend) is available on GitHub:

Have thoughts on this CUJ or framework?

Let's discuss product strategy, machine learning engineering, or system architecture.

Connect on LinkedIn Explore Other CUJs