Automatic schedule

When the schedule falls apart

When a flight is late, the schedule fixes itself. You approve it.

In the clip: 10D and 10E are late, so the assistant moves them into 13A’s car. What it touched glows until a person approves it.

Summary

Seattle STS · October 2026 · A self-initiated concept

Where it comes from
My job. I dispatch at Seattle STS, from Florida. The company on the board, Sunset & Palms, is invented, and so is everyone on it. The places, the airlines and the shape of the day are real. The quotes on this page are mine.
My role
Research, UX and UI, and directing the prototype.
Built with
Figma for the first comps, then a clickable prototype built with Claude Code.
Timeline
10 days, October 2026.
Status
A self-initiated concept. The assistant in the prototype is a rule engine built from my own moves, not a language model. It shows how the assistant should behave.

Sixty-four rides in one head

Most of our rides are airport pickups. A driver does four or five a day, chained one after another. When a flight is late, the chain breaks.

On September 4, 2025, we had 64 rides. Thirty-one were one corporate group flying into SeaTac for a retreat at the Fairmont Olympic, booked to share vans. Then flight after flight ran late, some before they even took off.

“I was alone that day. I had to change everything by hand and let each driver know. The greeter at the airport was helping, of course. And I was taking phone calls to book new rides. It was a complete mess.”

It took until the last ride at night. Nothing went to another company and no family was split, but only because of experience.

When a flight slips, Limo Anywhere, the tool I use every day, moves the pickup time and tells no one.

“It just changes to 8 AM, and that driver already has an 8 AM pickup. That’s when the juggle starts.”

One wrong detail ruins a phone booking, like 8 AM instead of 8 PM. That night I checked mine against the call recordings. There were mistakes.

The dispatcher on a bad day

Attention gets cut. Tracks flights by hand and re-plans the day while taking calls.

The new dispatcher

Doesn’t have the experience yet. The rules live in a veteran’s head.

The family at the curb

Rules keep them from waiting too long.

The business

Every ride handed to another company or an Uber Black is margin lost.

What I had to go on

I dispatch, so most of the research wasn’t planned. Three sources:

  • I wrote down the rules I follow without thinking, so a newcomer could follow them too. Swap our own drivers before calling another company. Never split a family. Don’t plan around a delay until the plane takes off. A first-class passenger with a carry-on is at the curb in twenty minutes; an international one with checked bags can take ninety.
  • Besides moving the time, the tool I use every day doesn’t show what a delay broke: the driver’s next job, the shared van, the family waiting at the curb. Noticing is up to you.
  • Four other tools, from their public pages: Limo Anywhere, Moovs, LimoCaptain and Limo Flow. The ones that say how they work either flag a problem and leave the thinking to you, or act on their own: Limo Anywhere’s Auto Farm sends rides to other companies by rule.
ToolWhen the plan breaksSuggests a fixSays whyWho decides
Limo AnywhereMoves the pickup time to the flight, and marks “potential issues”Not that we foundNoThe dispatcher, by hand
Limo Anywhere, Auto FarmSends rides to other companies by ruleIt actsNoThe rule
Moovs“Dispatch automation”UnclearNot that we foundUnclear
LimoCaptainGives cars to drivers by distance and availabilityIt actsNoThe rule
Limo Flow“AI-powered dispatch”, no detailUnknownUnknownUnknown

From public pages only. These tools may do more than their pages say.

None of them suggests a fix, says why, and lets a person decide.

Suggest, explain, let a person decide

The board watches every flight and every driver. When something breaks the plan, it changes nothing. It brings a card: the move, one line on why, and what it costs.

10D + 10E ride with 13A

act by 13:05
10D, breaks the van10E, breaks the van⟶13A

10D + 10E are late (DL 889, 40 min). $0, no extra car

  • A veteran works the fix out in their head. A new dispatcher can read it: “10B would wait 40 min for 10D + 10E. Our limit is 25, so 10A–C go at 13:35.”
  • It keeps a person where people want one. Passengers tell us, in reviews and on calls: “It’s so nice talking to a human nowadays.”

My first cards read like reports

My first cards explained the problem in a paragraph, then the fix. First in Figma, with the assistant on the right. Then in the prototype, on the real day.

Figma, 7 Oct
The first card, in Figma: Two shared vans broke, then a paragraph about which family would wait for which, then the suggested regroup into two Sprinters.
The prototype, 9 Oct
The card on the real day: Group 3 van broke, a paragraph of facts, an email note, the suggested fix with two cars, a cost line, three options, and Approve, Adjust and Why this.
  1. The title names a problem, not a move.
  2. A paragraph of facts comes first.
  3. The fix sits under it.

On October 13 I walked through them as a dispatcher, out loud, and wrote down what I said.

“AI suggestions right now are very vague. To understand them, you need to really dive into the topic.”

On the second card: “The title of the card is bad.” It said “No driver for Kevin Doyle”. At the third card I stopped. The problems I’d staged weren’t how a real day breaks, so no wording could fix the cards.

“Let’s scratch everything.”

I reset the board to the plan as booked, with the real delays and nothing fixed. Then I dispatched it by hand, and wrote down why after every move.

DL 889 is 40 minutes late, so 10D and 10E would make 10B wait 40 minutes. I drag them into 13A’s car and write down why.

Three moves became the rules

The late family rides in a car with empty seats.

10D 10E ride with 13A

13A is a sedan job going out in Jason’s SUV, with four seats free. Group 10’s van leaves on time.

Late families move into a van with room, so their driver makes the next ride.

8A 8B ride with 9A

Otherwise Danny is 35 minutes late for 27A. 9A’s Sprinter has room.

Nobody to share with: book a new ride.

3C gets own car, Chris drives

The smallest car that fits, with a free driver of ours.

And the limits, in my words:

  • Only colleagues share a car. A private booking always rides alone.
  • Nobody waits more than 25 minutes. “After that it’s too much, and frustration is going to crawl up.”
  • A bigger car is a free upgrade, with a text to the passenger. A smaller one, never: “the luggage would not fit.”
  • Our own drivers first, then another company, then Uber Black.

The assistant runs these rules on the board and offers my moves, in my order. At 09:50 it finds four fixes. Each card shows the first move that works, and what it costs. In the prototype, that’s all the assistant is: these rules, written as code.

Codes instead of names

Names were too much.

“Too many names on top of flight numbers and everything being late. When you see the same surname in a suggestion and again in a reservation, it’s a lot. Just put 3C.”

So every family got a seat-style code: the group number plus a letter. Group 3 is 3A, 3B and 3C. A move reads like a sentence: “10D rides with 13A.” The names sit one line below.

  • 10D and 10E in red: the families that break the van.
  • The flight says why: DL 889 is 40 minutes late, so 10B would wait 40 minutes. The limit is 25.
  • 13A rides alone, two people.

Customers got the same idea: a confirmation code they can say over the phone, like RT 33, instead of a six-digit record number.

Show it on the grid, then wait

First I described the move in words. Then I tried a two-step animation: a row slides in, then a driver’s name drops into another row. I rated it bad. It had to be one simple picture, on the grid, right next to the card.

“I moved the assistant to the left so there can be arrows from it, pointing to where it wants to add a group, or make a new ride.”

Now a click on the card acts the fix out. The families’ chips fly from their old car to the new one, an arrow links the two rides, and everything the assistant touched glows. The glow means “not saved yet.” Approve saves the whole fix as one step and tells the drivers. Undo takes all of it back.

  • The move, in codes, and the time to act by.
  • Who moves where: 10D and 10E into 13A’s car.
  • What happened, and what it costs.
  • Why, against the 25-minute limit, with the confirmation codes last.
  • Who hears about it.
  • Approve, or decline.
Approve, then Undo. The decisions count drops to 3, and comes back.

On the same four fixes I tried three cards: Story, Before / after, and 5 questions. Story won: it leads with the move, and it’s less than half the height.

The same suggestion in three card styles side by side: Story, 209 px tall; Before / after, 442 px tall; and 5 questions, 352 px tall.
Story is 209 px tall, Before / after 442.

Smaller calls

A label I couldn’t explain.

The first header said “0 watching”. I’m the dispatcher it’s for, and I couldn’t tell what it meant. It’s now “Waiting for takeoff”: nothing is replanned until wheels-up.

One meaning per color.

27 of 34 flight rows were green twice, so the problems drowned. Now on time is quiet, amber is late but fine, and red is act now, always with an icon. On a board warm means trouble, so the sunset colors stay in the frame: the header’s edge and the sky behind each part of the day.

The routine email.

“Could you pick us up at 7:45 instead?” arrives with the ride found and the reply written. One Approve sends it and moves the pickup.

Simon’s flight moved. The assistant found his ride, checked that Tony still makes his next job, and wrote the reply.

Search by anyone on the ride.

A caller who booked a ride couldn’t be found in Limo Anywhere by her own name or phone. Here the passenger, whoever booked it, and every phone and email find it.

  • Barlow. SF Pro, Inter and Geist ran 21–37% wider, and cut “Bellevue” to “Bellev…”.
  • How I worked. Figma for the first comps. Then Claude Code, because drag, approve and undo can’t be judged in static frames: “you see your actual work, and where it falls apart.”

How I’d know it works

It’s a concept, so there are no live numbers. In the prototype, the assistant is a rule engine on a staged day.

What I’d measure:

  • minutes at the curb, against the 25-minute limit
  • rides kept in-house, and what went to other companies or Uber Black
  • time from an alert to a decision
  • whether a newcomer makes the same call as a veteran, and can say why
  • mistakes in bookings taken on a bad day, checked against the call recordings, the way I check mine

The first test is written and hasn’t run yet. Its first question is mine:

“It’s your first day as a dispatcher. Do you understand what you see, without me explaining it?”

I always come from the same place: it needs to be simple.

What I’d do differently

  • Dispatch the day by hand first. I designed cards for problems I’d staged, before I’d solved the real day myself, and had to throw them away.
  • Get other eyes sooner. I’m one dispatcher, and so far the only person who has used it.
  • Set the color rules before coloring anything.
  • Make search broader. Even right now, it’s not showing accurate results.

Still open

  • Tomorrow’s schedule, built around each driver’s day.

    “One driver lives in Tacoma, so his first ride preferably starts from Tacoma, to Seattle airport. The second goes from the airport somewhere else. And his last ride ends closer to his home. Happy driver, happy customer. Less mileage on the car, less maintenance.”

  • Grace periods per passenger, by cabin, bags and international, learning from each pickup.
  • Two bookings under one name: confirm, never merge. Designed, not on the board yet.
  • A live flight feed, and a model behind the rules.

A self-initiated concept, from my job at Seattle STS. Built with Claude Code. Sunset & Palms and everyone on the board are invented.