Skip to content

Systems / Product Thinking · FlytBase · Live

Pilot Shift Scheduler

Scheduling a drone ROC went from a 4–6 hour Sunday problem to a 15-minute weekly task. Built for the person who will not give up Excel.

Role
Product Designer and Builder
Duration
April 2026
Company
FlytBase
Status
Live · Deployed
Pilot Shift Scheduler — plan view

Scheduling rotating pilot teams across round-the-clock shifts was being done in spreadsheets.

Built a constraint-driven scheduler. Live, deployed, used every day.

01

The Problem

Every drone operation runs on a schedule. Every one of them lives in a spreadsheet.

"I spend Sunday evening building next week's schedule. Every week."ROC Operations Manager · 9 sites, 7 pilots, 60+ flights per day

ROC managers at drone operations companies build weekly pilot schedules in Excel or Google Sheets. One sheet per week. Updated manually. Sent by WhatsApp. When a pilot calls in sick, the manager rebuilds from scratch.

The bigger failure isn't the time. It's that the spreadsheet has no enforcement layer. Certification gaps, rest period violations, site clearance mismatches — none of these are caught by Excel. They're caught by memory. And when memory fails, a non-compliant schedule gets published. The organisation finds out when the regulator asks questions.

4–6 hrsper week on schedulingshould take 15 minutes
27validated problemsacross 6 workflow areas
0constraint enforcementin a spreadsheet

02

Who It's For

The person who will not give up Excel — and has very good reasons not to.

The ROC manager isn't resistant to new tools because they're not curious. They're resistant because the cost of a failed tool is higher than the cost of a slow one. A scheduling error at 06:00 on a Monday affects six pilots, nine client sites, and contracted SLAs. They cannot afford to trust a tool they haven't already proven.

One failed migration and this person returns to Excel permanently — and does not come back. This is the central design constraint of the entire project.

Goals

  • Publish the weekly schedule in under 15 minutes
  • Never miss a certification expiry or rest gap
  • Give each pilot their schedule without a phone call
  • Show clients schedule adherence with real data

Frustrations

  • 4–6 hours on a task that should take 15 minutes
  • Constraint errors discovered at the time of flight, not before
  • Pilots missing schedule updates sent via WhatsApp
  • No audit trail when a compliance question arises

Design response: Match Excel's sense of control and visibility first. Then go beyond it.

03

Governing Principle

"Enforce compliance. Don't override judgment."

The scheduler is a tool for the manager, not a replacement for them. Catch what they can't hold in their head — their certification gaps, rest period conflicts, site clearance mismatches. But never take the scheduling decision away from them.

This rules out two things immediately: forms (can't show 14 hours across 8 pilots at once), and auto-generation (overrides the manager's contextual knowledge). What it rules in: a Gantt canvas where the manager builds directly, and a constraint engine that flags problems as they're made.

04

Key Decisions

Three calls. Two were straightforward. One took the longest.

01

Auto-generate was built. Then killed.

The algorithm worked. Constraint-passing schedules in seconds. It was pulled back because a generated schedule that overrides the manager's judgment doesn't earn trust — it triggers abandonment back to Excel. Auto-schedule now exists as an opt-in draft in the AI Agent tab. Not a replacement for judgment. A shortcut available once trust is earned through correct publishes.

02

A Gantt, not a form or a calendar.

The ROC manager thinks across three axes simultaneously: time (which shift windows need covering), people (who's available and certified), sites (what each location requires). A form can't show that. A generic calendar has no constraint layer. A Gantt canvas — one row per pilot, time running left to right — mirrors how they actually think. The canvas is the form.

03

Constraint violations inline, not at publish.

The first build showed violations only after the entire schedule was complete. Managers finished building before seeing a cascade of warnings. Moved to running continuously — every assignment is validated at the moment it's made, inline on the affected block with no modal interruption. The constraint engine is a co-pilot, not a gatekeeper.

16 constraint rules — always on

RuleWhat it checksDefault
CR-1Overlapping shiftsWarning
CR-2Shift exceeds max duration (14h)Warning
CR-3Pilot exceeds weekly max hours (50h)Warning
CR-4Rest gap below minimum (10h)Warning
CR-5Missing or expired certificationWarning
CR-6Pilot not authorised for site / BVLOS supervisor missingWarning
CR-7Demand slot uncoveredWarning
CR-8Flights exceed operational drone limitHard block
CR-9Operational limit set above waiver levelHard block
CR-10Insufficient battery for missionStubbed
CR-11All docks occupied or recharging at mission timeHard block
CR-12Mission extends past shift endWarning
CR-13Coverage below contracted SLAWarning
CR-14Pilot exceeds overtime threshold (40h)Warning
CR-15Pilot has approved leave on scheduled dayHard block
CR-16Pilot scheduled beyond max consecutive days (5)Warning

Every rule is reconfigurable per organisation. Hard-block overrides are permitted but written to the audit trail.

05

The Product

Six screens. Each one answers a question a spreadsheet cannot.

ScreenQuestion it answersWhat's notable
Plan / GanttHow do I build this week's schedule?Timeline canvas, drag-drop shifts and flights, skeleton shifts, constraint violations inline. What you see is what gets published.
Ops DashboardWhat do I need to know right now?Live pilot status, site badges, alert feed. Width capped at 800px — no lateral eye movement on wide screens.
AnalyticsAre pilots flying what was scheduled?Actual vs. scheduled bar chart. Ad-hoc flights surface automatically alongside planned ones.
HistoryWhat was planned, what happened, can I prove it?Published snapshot + actual flight logs on one canvas. Five adherence states. The audit record the regulator asks for.
Pilot PortalWhen am I working and what am I flying?Mobile-first. Max 480px even on desktop. Calendar strip, day detail, .ics export. No new login.
SettingsHow does this organisation operate?Configurable notification reminders, per-org constraint rules, admin self-recovery.
Pilot shift scheduler — plan, ops dashboard, analytics, history, pilot portal, and settings screens

06

What Shipped

26 of 27 validated problems addressed. One deferred.

AreaStatus
Gantt — drag-drop, skeleton shifts, AI Agent, undo/redo, publishComplete
Ops dashboard — live status, site-coloured alert feed, stats gridComplete
Analytics — actual vs. scheduled bar chart, sortable tableComplete
History — published snapshot + actual logs, 5 adherence statesComplete
Mission panel — catalog, placement popup, preset systemComplete
Resource panel — supervisors and docks on the same time axisComplete
Constraint engine — 15 of 16 rules activeComplete
CR-10 (battery sufficiency)Stubbed — awaiting FlytBase battery telemetry API
Pilot portal — calendar strip, day detail, team view, .ics deliveryComplete
Pilot email delivery with configurable remindersComplete
Structured shift handoff documentationv2

07

What I'd Change

Two things that were discovered in use, not in design.

01

The empty canvas was paralyzing.

First-time users opened to a blank Gantt with no entry point and no guidance on what to do first. The canvas is only useful once there's a site, a pilot, and a mission to show — but nothing pointed them there. Fixed with a three-step setup checklist: first site, first pilot, first mission. Gantt appears once there's something to show.

02

Notifications had to be built from scratch after pilots kept missing schedules.

The first build assumed email delivery was enough. A customer flagged that pilots were missing WhatsApp messages and burying email threads. Configurable notification system added to the publish flow: formatted email, .ics attachment, multiple simultaneous reminders. Confirmed before shipping.