How FerryFriend Predicts Ferry Delays

6 min read

A technical overview of how FerryFriend generates Washington State Ferries (WSF) delay predictions. Last reviewed for the Spring 2026 schedule.

FerryFriend is a companion app for Washington State Ferries (WSF) riders, and one of the things people rely on it for most is knowing whether their boat will actually leave on time. On a busy summer day WSF runs close to 500 sailings across ten routes and about twenty boats. A late departure never stays contained to one sailing. The boat carries the delay into its next crossing, and usually onto whatever vessel it shares the run with. FerryFriend's job is to forecast, for every WSF sailing still ahead in the day, how late it will actually leave and arrive, and to keep revising that delay prediction as things change.

Why FerryFriend uses machine learning for delay predictions

FerryFriend's first delay estimates were hand-written rules. If the current boat was fifteen minutes down, we figured the next sailing would run some fraction of that late, and so on down the day. Easy to reason about, and wrong often enough that riders noticed.

The trouble is that the same delay plays out differently depending on the sailing, and there are more factors pulling on it than we could pin down by hand. We tried for a long time. Every rule we wrote turned up two exceptions we had missed, and then WSF would reshuffle the seasonal schedule and we were back to the start. So we handed the problem to a machine learning model instead. It learns the patterns from four years of Washington State Ferries history, including the ones we would never have thought to write down, and it re-learns them each quarter when the timetable changes.

It beats the old rules, but we have stopped quoting a single accuracy figure, because the honest answer depends heavily on the route. On the frequent central Sound runs the model is usually within a couple of minutes. Out in the San Juans, where there is far less traffic to learn from, it can be off by considerably more. Any fleet-wide average just flatters the easy sailings.

The data behind FerryFriend's delay predictions

It all starts with vessel position. FerryFriend pulls the public WSF vessel feed, which gives each boat's latitude, longitude, speed, and heading, and we sample it every five seconds. We have been archiving it for a little over four years, and that archive is what the delay prediction models train on.

For labels we lean on WSF's own numbers. The feed carries both the scheduled departure and the time the boat actually left the dock, so we take the difference and call it the delay. No cleverness required on our end.

Past position, the models take in a few other things. Tide and current readings from the nearest NOAA station to each terminal. Wind and visibility from the National Weather Service. The schedule itself, meaning the headway, how much slack is left in the day's rotation, and how many runs the boat has already made. And the recent behavior of the specific sailing, like the trailing two-week median delay for the weekday 5:30 off Bainbridge.

The models

FerryFriend runs a two-stage system.

The first stage is a nowcast. From the live WSF feed, a gradient boosted model estimates where every active vessel actually stands against its schedule right now. It is deliberately simple and quick, because it runs constantly.

The second stage is the propagation forecast. A temporal sequence model takes the nowcast and the schedule and rolls the day forward, sailing by sailing, learning how a delay spreads as the day goes on. We train one model per route family and give them a shared vessel-class embedding, so the Issaquah boats on the Fauntleroy triangle can share what they learn without losing what is specific to each route. It puts out a range rather than a single number, so the app can show more or less confidence depending on the sailing.

The inputs are not equally useful. The strongest by a wide margin is the sailing's own recent history, that trailing two-week median. After that comes the live state of the fleet, how far behind the assigned boat already is. Past those two the importances flatten out and stop making much intuitive sense, which is exactly what hand-tuning could never keep up with. The vessel embedding pulled its weight too, roughly an eight percent cut in error over a plain one-hot.

Training and evaluation

The models retrain nightly on the full four-year archive, split by time so we are always testing on days they have never seen. There is a champion and a challenger, and a new model only ships if it beats the current one on the last eight weeks held out. We track mean absolute error, and separately a plain late-or-not score, since being right about the direction ("your boat is running late") matters to people even when the minutes are off.

None of this works without history. On a brand-new route, or right after WSF adds sailings, FerryFriend's delay predictions are visibly worse for a few weeks until real departures pile up. In practice it takes close to two years of a given sailing before the model reliably beats a dumb "same as last week" guess.

Serving and limits

When you open a sailing in FerryFriend, we compute the live features, run the model, and cache the result briefly, so a full boat's worth of people checking at once does not each kick off a fresh run. A delay prediction refreshes about once a minute as new positions come in.

The thing FerryFriend cannot do, and we say as much in the app, is call a delay that has not happened yet. A mechanical problem or a medical hold is invisible to us until the boats start showing it in their tracks. Where the model actually helps is the other direction: a delay already exists, and the real question is how far it spreads across the Washington State Ferries schedule before the day is done. That is hard to eyeball, and it is what people open FerryFriend to find out.

FerryFriend is a product of True Course LLC

Reach the team with bug reports, ideas, or just to say hello at help@ferryfriend.com.

FerryFriend is not affiliated with Washington State Ferries. All data is provided by Washington State Ferries and is subject to their terms of use. All features may not be available on all routes.

Copyright © 2026 True Course, Inc.