Scheduling at scale, from manual to agentic

Scheduling at scale, from manual to agentic

Scheduling at scale, from manual to agentic

I designed one scheduling framework to unify all interview types. Built to handle formats from single phone screens to large-scale multi-candidate events, each with different constraints, roles, and coordination needs, and scale toward full agentic automation.

Role

I defined the framework and drove event scheduling as the first use case, working closely with engineering, research, and product across talent acquisition. I also shaped how AI integrates into the work.

Scope

Framework designed to scale from single candidate interviews to large-scale multi-candidate events. Built alongside active legacy systems without disrupting existing workflows.

Outcome

Set the product direction for interview scheduling at Amazon.

Event scheduling shipped first, replacing 8 tools with one and reducing scheduling defects by [X]%.

Single loops and other interview types follow on the same foundation.

Slow, manual, and exhausting

Scheduling at Amazon covered far more than interviews, and all of it ran on people.


A scheduler pieced every session together by hand across 6+ disconnected systems, and the same willing interviewers got asked until they burned out. The biggest events multiplied everything. One change could ripple across dozens of people, and someone had to catch every ripple by hand.

6

disconnected systems across scheduling

95%

of the work happening in spreadsheets

70%

of scheduling done through manual steps

6

out of 10

average recruiter satisfaction score

I set out to make scheduling that scales from a single call to the most complex event, structured enough for agents to handle the repetitive work, flexible across every org.

I set out to unify scheduling and automate repetitive work, without losing org flexibility.

I set out to unify scheduling and automate repetitive work, without losing org flexibility.

Built on a shared data layer across interview types, validated through interactive prototypes before committing to production.

Mapping shared logic across tool silos

Having worked across event scheduling and other interview types firsthand, and consulting with designers across related scheduling domains, I looked for the common thread. The tools had evolved separately for specific needs, but the core work largely overlapped. Variations boiled down to two: pre-scheduled vs on-demand, and single vs multi-candidate.

Jobs-to-be-done across 8+ interview types (simplified version), fragmented across tools

Jobs-to-be-done across 8+ interview types (simplified version), fragmented across tools

Define interview structure

Define interview format (virtual/in-person)

Match structure to hiring needs (sequential/parallel)

Define slots and required components

Set slot durations

Decide competencies to assess

Build interviewer pool

Set minimum interviewer qualifications

Add interviewers to roster

Define competency-to-interviewer mapping

Choose how Bar Raiser is determined

Identify backup and shadow interviewers

Capture interviewer preferences

Capture candidate info

Gather candidate availability

Capture special needs (timezone, accommodations)

Understand urgency / priority

Define interview structure

Define interview format (virtual/in-person)

Match structure to hiring needs (sequential/parallel)

Define slots and required components

Set slot durations

Decide competencies to assess

Build interviewer pool

Set minimum interviewer qualifications

Add interviewers to roster

Define competency-to-interviewer mapping

Choose how Bar Raiser is determined

Identify backup and shadow interviewers

Capture interviewer preferences

Capture candidate info

Gather candidate availability

Capture special needs (timezone, accommodations)

Understand urgency / priority

Define interview structure

Define interview format (virtual/in-person)

Match structure to hiring needs (sequential/parallel)

Define slots and required components

Set slot durations

Decide competencies to assess

Build interviewer pool

Set minimum interviewer qualifications

Add interviewers to roster

Define competency-to-interviewer mapping

Choose how Bar Raiser is determined

Identify backup and shadow interviewers

Capture interviewer preferences

Capture candidate info

Gather candidate availability

Capture special needs (timezone, accommodations)

Understand urgency / priority

Match & Schedule

Define targeted dates

Assign interviewers and shadows

Add Bar Raiser (BRRS or manual)

Define slot sequence

Configure breaks

Schedule debrief/pre-brief

Send invites to interviewers

Monitor & handle changes

Track interviewer responses, follow up on non-responses, find replacements for declines

Send candidate confirmation

Handle reschedules (interviewer declines, candidate requests, competency changes)

Update calendar invites with changes

A fresh look at a decade-old platform

There was no BRD or product spec. I built an interactive prototype connected to real backend data and stress-tested it with talent acquisition teams. Live sessions surfaced where the design held and where users needed more flexibility.

Defining the foundation

This data model is what lets the same framework produce different workflows and interfaces depending on scale and situation. Rather than organizing by interview type, I separated the stable foundation from the per-instance inputs from the system's actions. It became the foundation for one framework that handles every interview type, and the substrate for agentic scheduling.

The shared data model underneath the scheduling flows

The shared data model underneath the scheduling flows

What's reusable

Reusable, defined at the job code level

Session sequencing

can be ai-assisted

Parallel (event) or sequential (loop), applied automatically from context

Competency mapping

can be ai-assisted

Ensures every required skill is covered across sessions

Format rules

can be automated

Sets duration, format (1:1 or panel), and mode (virtual or in-person)

What varies

Changes per situation

Interviewer pool

can be ai-assisted

Auto-derived from requirements, refined by real-time availability and interview work load

Candidate constraints

Human input

Availability, accommodations, pipeline stage

Context

Human input

Scale (phone screen to 40-person event), urgency (first available vs specific executives), mode (schedule around candidate vs pre-build slots)

What the system handles

System responds accordingly

Match and balance

can be ai-assisted

Pairs interviewers to slots based on availability, qualifications, and pool load

Send confirmations and track

can be automated

Sends invites, tracks responses, follows up when interviewers don't respond

Handle exceptions

Human input

Manages declines, competency changes, and late additions

The same structure applies whether scheduling a phone screen or a 40-person event. What shows up depends on the scale and situation

Where AI fits in complex scheduling

The same foundation also defined where AI fits. Leadership expected a chatbot-first experience. I pushed back: scheduling is not a linear task, and a conversational interface can't surface the full picture a coordinator needs to make tradeoff decisions in real time. I positioned AI as a layer that works alongside the tool.

AI handles routine requests through chat

AI reacts to events that need attention

From here, I tackled how one tool could adapt to different starting points, scale, and coordination needs.

From here, I tackled how one tool could adapt to different starting points, scale, and coordination needs.

Building the framework on top of the data model

The data model gave us the structural answer, but an answer on paper isn't a framework. The framework is the set of decisions that determine how the data model shows up in practice, across every scheduling situation. That's what this part of the work figured out.

01 / First direction

Two views split by scale

My first direction built two scheduling views sized to the situation. A per candidate view handled single candidate situations: phone screens, recruiter calls, and single loops. An event coordination view handled multi candidate events. Separating the two kept each focused, so neither had to carry the other's weight.


I built an interactive prototype to stress test it in cross functional workshops. It worked conceptually, but didn't hold in practice. Walking through real scenarios surfaced the underlying issue.

Simplified view of the initial prototype: one candidate scheduling view for all interview types, with a separate layer for event coordination

Illustrating why the direction didn't hold in practice

02 / The shift

One experience that adapts

One scheduling experience driven by the shared data model. It reads the data model and composes the experience from what the schedule contains, expanding for scale, handling shared interviewers, and applying org-specific rules.

Static mocks couldn't validate a framework. Stakeholders needed to experience the tool adapting across scenarios. I built a second interactive prototype and roadshowed it across talent acquisition teams, including interview types we hadn't built for yet. It held. This became the product direction.

One framework composing every scheduling case from the same data model

A subset of the prototype, showing the framework across two situations

Shipping the hardest case first

Event scheduling was the first use case to ship — multiple candidates on one coordinated schedule, where a change to one part can affect the rest. The strongest test for the framework, and the research showed why:

  • 103 min average time to schedule one event of 5 candidates

  • 51% said securing interviewers is their biggest frustration

  • 70% of scheduling time spent in spreadsheets and manual workarounds

Designing for this meant holding three tensions at once:

Flexibility vs standardization

Teams have legitimate reasons to operate differently. The design needs to support those variations without becoming a different tool for each team.

Enabling parallel work

Interviewer securement, candidate assignment, and logistics happen at different speeds by different people. A change to one can affect the others.

Scheduling interdependencies

Interviewers and candidates are connected across sessions. A single change creates a cascade the design has to make visible and actionable.

A fresh look at a decade-old platform

There was no BRD or product spec. I built an interactive prototype connected to real backend data and stress-tested it with talent acquisition teams. Live sessions surfaced where the design held and where users needed more flexibility.

A / Pain point

Locking in interviewers causes delays and constant back and forth

Locking in interviewers involved a mix of offline agreements, email requests, and follow-ups. Many went unanswered or got declined, pushing the schedule back.


I designed one place where recruiters and schedulers lock in interviewers two ways: pick directly, or open up signup, a new path I introduced where interviewers opt in based on eligibility and workload. Signup launched first for events, designed to extend to other interview types.

Recruiter/Scheduler view

One workflow per role. A hiring manager might be directly assigned while an interviewer role is open for signup

One workflow per role. A hiring manager might be directly assigned while an interviewer role is open for signup

Interviewer view

Interviewers see their eligible roles and choose which slots to commit to

Interviewers see their eligible roles and choose which slots to commit to

Interviewer view

When an interviewer declines, alternative availability is captured so the RC can act on it

When an interviewer declines, alternative availability is captured so the RC can act on it

Scheduler view

The RC acts on declines with full context

B / Pain point

Schedule changes with invisible ripple effects

Schedulers had no complete picture of whether an event was on track. When an interviewer declined or a candidate needed to move, the scheduler had to figure out which sessions were affected, with no tools connecting those relationships.


I designed the scheduling experience around three principles: consistency by default, exceptions that don't break the structure, and complexity surfacing only where it matters. When something changes, the system shows what's affected and what to do next.

Scheduler view

As scheduling progresses, the scheduler focuses on what needs attention without losing sight of how it connects to the rest of the event

As scheduling progresses, the scheduler focuses on what needs attention without losing sight of how it connects to the rest of the event

Outcome

Event scheduling shipped first, with the framework setting the foundation for what comes next.

  • 8 → 1 disconnected tools consolidated into one scheduling experience

  • 103 min → [X] min average scheduling time per event of 5 candidates

  • [X]% reduction in scheduling defects

Where the framework goes from here

Each new scheduling type becomes a configuration of the same underlying model rather than a standalone solution. Single loops, phone screens, and other interview types build on what's already there instead of starting over.


Now partnering with the science team on agentic scheduling, with early results reducing manual scheduling from 30 minutes to under 5. The structured context captured in the system is what makes that possible. The foundation was designed to support it.

Built by Fangru Wu 2026

Craft matters