Skate: Building a better bus dispatch app (and how it will improve your ride)

Logan Nash
7 min readAug 26, 2019


Let’s talk about what it takes to run bus service.

You need buses (we have around 800 on the road at peak times). You need operators (we have over 1,000 of them). You need to make sure all of your operators have buses to drive. You need to make sure every bus and operator is at the right place to start their trips on time. You need to make sure your operators get breaks and days off — they’re humans, not machines. The buses are machines, but they still need to get back to the garage every night. And someone needs to help out if a bus has trouble on the road.

Who does all this stuff?

A uniformed MBTA employee uses a tablet at a busway with passengers boarding a bus in the background.
MBTA bus inspector Francis Gilmore using Skate at Forest Hills Upper Busway

At the MBTA, bus inspectors do. You’ve seen them in white uniforms at major stations like Ruggles and Sullivan, or in yellow-and-blue striped cars helping if a bus breaks down.

At the T, we have over 150 bus inspectors. Along with other bus officials (e.g., dispatchers downtown, instructors that teach new operators) they make bus service happen. Inspectors are the watchers on the wall, standing between the pandemonium of Boston’s streets and your routine commute home.

But they’ve been doing all this important work primarily with paper and technology that was built for other uses — tools that work and are safe but are also cumbersome. If we’re serious about using technology to make the T better (and we are), we need to get these people some awesome, modern tools (and we are).

Meet Skate.

That’s why, in April, MBTA Customer Technology and Bus Operations started building “Skate,” a web-based dispatch tool for MBTA bus inspectors to use on off-the-shelf Android tablets. Imagine an app like that helps you track the one bus you want to catch, but instead it’s helping us track all the buses that everyone wants to catch! It has the rich location data now driving our and rider apps, but also info that matters for keeping things running smoothly (operator names, bus numbers, shift schedules). And we built it by doing what we do best: Focusing on the user (usually that’s riders, but in this case it’s people who keep the buses running).

A person taps on a tablet running the MBTA Skate application
Skate running on a bus inspector’s Android tablet

Why did we build a mobile bus dispatch tool?

Because no one else was doing it.

Bus Operations, especially our Road Control Supervisors (who oversee all bus inspectors in the field) wanted inspectors to have modern mobile tools. Building a custom tool wasn’t our first choice, and we looked into mobile apps from dispatch vendors. Almost every transit agency (including the MBTA) works with a vendor that provides bus dispatch and tracking solutions.

Unfortunately, the mobile apps we saw from these vendors were various combinations of:

  1. Nonexistent.
  2. Locked into a specific vendor, i.e., “If you want to use this app you have to replace your entire dispatch system including the hardware on all 1,000 MBTA buses”
  3. Not close to the quality our bus inspectors need.
  4. Almost-but-not-quite-there.

We tried out a few of the almost-but-not-quite-there options with bus inspectors, but adoption was low. Inspectors preferred to make do with the tools they already had: Paper schedules, consumer apps like, and a whole lot of talk over the radio (“Hey, did that driver check in for their shift on time?”). A few bus inspectors had access to old “portable” Windows computers mainlined into our dispatch system, but those were few, clunky, unreliable, and expensive to maintain.

Example of current paper resources bus inspectors use

Mediocre tools will not not help our inspectors provide great bus service. So we decided to get our hands dirty: In-depth user research with bus inspectors, UI designs from our talented designers, and rock-solid engineering using modern frameworks and built on the same flexible real-time stack that powers our APIs. In short, we applied the skills and design thinking we use to solve problems for riders (e.g., on and applied them to operations staff, who (despite their important role in running good transit service) sometimes just get whatever product is available and convenient.

What does Skate do?

We started by working on the two biggest pain points bus inspectors shared with us:

  1. Monitoring status of scheduled bus service in a way that scales (e.g., the inspector at Sullivan Square is responsible for 12 bus routes).
  2. Tracking shuttles during subway disruptions.
Animation showing bus routes in Skate picked from a menu on the left side of screen and appearing as ladders in the app.
Adding ‘route ladders’ to Skate

Although it looks odd from a rider perspective, the “ladder” view, as our inspectors call this diagram, is a great way for operations staff to see the status of many bus routes at once. (It’s also a classic transit visualization. If you watch the original Taking of Pelham 123 movie from 1974, you’ll see a subway ladder that uses incandescent light bulbs!).

A man points to lightbulb-based subway route ladders in a control room
We’re taking a classic transit visualization and modernizing it for bus inspectors.

In our version, each “rung” on the route ladder is a timepoint, or a major bus stop like Ruggles or Harvard’s Holyoke Gate (“RUGG” or “HHGAT”). Each triangle is a bus drawn near the timepoint closest to where the bus is. The line stemming from the bus shows where it should be based on the schedule. Early buses show up in red, late in blue, and on-time buses in green. Incoming buses (on the bottom) show vehicles laying over or coming onto the route from a different part of the system.

Tapping on one of these triangles gives inspectors more detailed information about that particular bus, including the bus number, the operator, and that operator’s assigned work for their shift.

There’s also a “Directions” link that pulls up Google Maps with driving directions to that bus. This seems small, but has already proven extremely popular with bus inspectors in roving MBTA vehicles, who need to get to the site of a crash or disabled bus as quickly as possible. And, it’s not something we could get from any vendor.

Opening the vehicle status panel from a bus on the route ladder

It’s being used (and tested and iterated on) right now.

We started development work on April 1 and launched with the features above on July 10. From the first line of code, it took only three months to give value to our bus inspectors on the ground. It helps to be building on top of the same flexible MBTA real-time architecture that powers our public data, and we also took advantage of robust APIs from our prediction vendor, Swiftly.

And we’re not done. Our engineers and designers are working through our backlog to deliver new features every week, like:

  • Bus ladders tailored to our busiest bus routes like the 1, 28, or 66, where it’s more important for buses to be evenly spaced than it is for them to adhere to their schedule.
  • Tracking for shuttle buses (e.g., during subway track work). Bus shuttles are hectic and frustrating for riders and operations staff alike. Giving field staff an easily-accessible map of shuttle locations is one way to reduce that pain.
  • Mini-schedules to help inspectors manage tricky timing challenges like shift changes on buses that are in service.

But don’t think our engineering velocity means we’re all barricaded behind our desks downtown. In the three weeks since launch, we trained 81 inspectors with sessions at every single one of our bus garages and are following up with inspectors we missed on an individual basis.

A woman leads a small class of MBTA staff learning how to use Skate on a laptop and tablets.
Ashli Molina, a member of the MBTA Customer Technology team, leads a Skate training at Arborway Garage

The reactions we’re getting at those sessions are amazing and validate the impact of building a modern tool from the ground up for MBTA bus inspectors. Inspectors have been telling us things like:

“The T is coming to the 21st century!”

“Boy, this tool is doing my mind a favor. It’s so much more intuitive!”

“I’m not a man that gets along with technology, but I might just have to learn. This is awesome.”

Bus inspector Elloid Aguila. These are the reactions we want to see from our users.

That’s borne out in the numbers as well. Already about 50 inspectors log into Skate every day, which is impressive given that there are only about 70 on duty at a given time.

There’s much more to come.

Giving staff the tools they need is important, but we want to see how that benefits our riders. That’s why we’re working with our friends at the Office of Performance Management and Innovation to run an experiment: Are the new features in Skate helping us run better service on our most frequent bus routes?

Having full control over this dispatch interface will also help us give customers like you better predictions and information about bus service. While we’re serious about using the best possible algorithms for bus/train predictions, transit is a human exercise and we can’t solely “math” our way to better predictions. If inspectors and dispatchers have an intuitive tool that helps them flag important events like sending a bus out early to maintain even service, or pulling a bus from a route to run an emergency shuttle, we can pass that information on to you.

We need you.

Are you a software engineer, designer, product owner, or all-around talented human being? Would you like to apply your skills to making transit awesome? Check out MBTA Customer Technology job postings.

Are you a transit agency? Are your bus field staff also struggling with inadequate tools? That’s not right. We have made the Skate source code open source, and we would love to talk to you.