← All work
03

Case Study · Toddle · 2026

A calendar that works for every person in a school.

Role
Sr Designer · PM · Strategist · Tech writer
Scope
90+ screens · 22 sections · 4 PRDs
Users
Families · Teachers · Coordinators · Admins
90+
Screens across 22 design sections
4
PRDs authored and shipped to dev
40
Schools updated in 3 actions — was contact-each-one
13
Competing products researched for architecture

Context

One surface. Four completely different mental models.

Toddle Calendar is deeply embedded in a live institutional system — class schedules, curriculum deadlines, attendance, roles, and video conferencing all connect to it. A change to one event can propagate across 40 schools and affect 3,000 video meetings.

The 2.0 migration introduced a fundamental architecture change: Account → Schools → Classes. A large organisation could now have 10–100 schools under one account. This shift from single-school to multi-school was the primary driver behind almost every design decision.

I worked across four roles simultaneously: Product Designer, Product Manager, Product Strategist, and Technical Communicator — not because the team was small, but because the problems were interconnected and demanded one coherent point of view.

UserPrimary need
FamiliesKnow their child's schedule from their own calendar app
TeachersManage class events, assignments, and meetings
CoordinatorsOversee events across a programme
District adminsGovern calendars across 10–100 schools

The Problems

10 confirmed problems. 13 gaps. All found in a self-initiated audit.

01 — Critical

The "Missing Event" bug — silent and catastrophic

Teachers at multi-programme schools could create an event that didn't appear in that school's calendar. Creation succeeded silently. The event was lost. Every "where did my event go?" support ticket traced to this. When a system fails silently once, you lose confidence in everything it shows you.

02 — District scale

No way to manage a district's calendar at scale

"Holidays," "Holiday," and "School holiday" coexisted across schools in the same district. A district-wide event required contacting each school individually. No push mechanism, no audit trail, no bulk operations.

03 — Operations

Creator-only video meeting editing

Only the creator could edit a video meeting. If a teacher went on leave, a coordinator couldn't fix a broken Zoom link or cancel a session — even with full programme-level permissions. Schools running daily online classes were operationally blocked.

04 — Trust

Calendar subscriptions that silently break at scale

At schools with 3,000+ video meetings per month, ICS feed generation was causing API timeouts. Users noticed stale data days after a subscription silently stopped working. No admin monitoring. No failure detection.

"A district admin who previously had to contact each of 40 schools individually can now push an event type update to all of them in 3 actions."

Key Decisions

Architecture first. Screens second.

Governance model

Draft → Publish → Push with read-only inheritance

Three approaches considered: mirror school admin panels (visibility only, no governance), flat shared taxonomy (eliminates local flexibility), or Draft → Publish → Push with read-only inheritance. Adopted the third. Account admins define and publish; schools inherit and cannot override; schools can still create local types. Matches PowerSchool's proven model. Handles specialisation — "DP Internal Assessment" is not relevant to a PYP school.

Navigation

School switcher as first interactive element, with adaptive behaviour

Three options: schools in filter panel (conflates filter with context switch), schools as tabs (tabs imply parallel persistent contexts), or school switcher with adaptive behaviour. Adopted the third. Single-school users see a static label — no dropdown, no visual noise. Multi-school users see a chevron. On mobile, a native bottom sheet. Same component, two behaviours, zero added complexity for the majority case.

Permissions

Hierarchical video meeting authorization

The creator-only model was the most damaging operational failure. Fix: permission level determines edit access regardless of creator. Documented as a 5-step authorization algorithm — creator, account calendar manager, programme-level permission, class-level permission, deny — with 9 permission-combination test cases. Mirrors exactly how task editing already works in Toddle. Consistency was the anchor.

Infrastructure

Three-lever subscription resilience

School-level scoping alone wasn't the solution — just the right boundary. Three additional levers: rolling window (14 days past to 60 days forward, cutting feed size 5–8×), role-scoped feed defaults (admins default to holidays, not every VM), and server-side pre-computation (cache feeds every 30 minutes). Eliminates on-demand generation timeouts at the architecture level.

What I Learned

The realisations that changed the architecture.

1
Institutional users have zero tolerance for silent failure.A school that relies on calendar updates to communicate schedule changes to families cannot tolerate "the calendar stopped updating and we didn't know." Silent failure is not acceptable when institutional trust is on the line.
2
The most powerful users are the least well-served by per-school scoping.The original architecture was built for a teacher in one school. Multi-org creates cross-school coordinators — for whom the per-school view is actively painful. Every navigation decision should be tested against this power user first.
3
Creator-only editing is organisationally brittle.Organisations don't have single points of failure; their software shouldn't either. The video meeting permission failure was a v1.0 design assumption that was never revisited when the 2.0 permission model was built.