SmartTransport
A dispatcher's workstation: a breakdown on the line, a replacement picker that shows the price of every choice, and an assignment in two key presses.
Open the live prototype smarttransport.foxdim.ruSmartTransport is a workstation for a city passenger-transport dispatcher. The prototype's demo data holds seven routes and 37 buses: 32 on the line and 4 in reserve. The interface has to keep that picture in the dispatcher's head and, at the right moment, pull one thing out of it: what broke, where, and who can cover the trip.
Why we took it on
A dispatcher's job is long observation interrupted by minutes in which a decision is needed. A bus breakdown is the main such event: the route interval grows, passengers pile up at stops, and what is known about it is scattered across the radio, schedule tables and phone calls to the depot. I designed the product around that moment: whatever doesn't help decide within minutes moves to a second level, and whatever does is gathered on one screen.
What blocked — and what changed
What blocked
- The dispatcher hears about a breakdown over the radio — with no coordinates, telemetry or impact estimate.
- A replacement is found through release tables and calls to the depot, and arrival time is estimated in one's head.
- The price of a decision is hidden: a free-looking bus may be busy on another route or sitting in the depot.
- After the assignment there is no feedback: did the driver get the order, is the bus on its way, has technical aid been called, were passengers notified.
What changed
- A breakdown is the only loud element: a banner with a timer, the bus and its route highlighted on the map, the rest of the network muted.
- The replacement panel gathers candidates and sorts them by arrival time and availability; the best is marked “Recommended”, approach paths are drawn on the map.
- The price of the decision is visible before it is made: interval, stops at risk, number of waiting passengers.
- The assignment launches accompanying actions and shows their progress; it can be cancelled within 10 seconds.
How I worked
- 01
One main scenario
I picked the breakdown as the scenario the product exists for and broke the path from signal to assignment into steps. The interface structure follows that path.
- 02
The map as home, five sections
The map is the main screen, the rest lives in the left rail: routes, rolling stock, incidents, analytics. A badge on the logo and an incident counter report a breakdown from any section.
- 03
“List + detail” everywhere
Routes, rolling stock and incidents work the same way: a registry with search and counter filters on the left, the selected object's card and its action on the right. Learn one section and you know the rest.
- 04
One language of statuses
Status colour — on schedule, delay, over 5 minutes, breakdown, and an outline for reserve — is the same on map markers, chips, regularity bars and the legend with counters.
Screens that move the work
Breakdown on the line
A banner on top: “Bus 1047 broke down on the line”, the route, a timer from the start of the event and the consequence — interval 10 → 20 min. The broken bus and its route are red, the rest of the network is muted. On the right, the event rises to the top of the shift feed with “Show” and “Resolve”.
- Cause: the driver's button and telemetry — no radio call needed
- Timer from the start of the event and “Resolve” from the keyboard, Enter
- Shift summary at the bottom: 32 of 33 on the line, regularity, delays, breakdowns, reserve
Who covers the trip — and what it costs
The replacement panel opens over the feed while the map stays in place. On top is the broken bus: where, when, passengers on board. Below are candidates sorted by arrival time and availability: the recommended bus is highlighted, the others carry a status — “Busy on M20”, “In depot”, “On a break”. Approach paths with ETA are drawn on the map. At the bottom are three accompanying actions as checkboxes (technical aid, passenger pick-up, notification) and an “Impact on the route” block: interval 10 → 20 min, 4 stops at risk, ≈ 62 people waiting now.
- An unavailable candidate stays in the list but is dimmed — you can see why it doesn't fit
- A warning on the depot bus — before the choice, not after
- “Assign to route” answers to Enter, “Cancel” sits next to it
Assignment and execution progress
After the press the panel turns into an execution feed: “Bus 2210 assigned to route 10”. Three tiles — reaction time 05:46, arrival 14:03, interval 20 → 10. Below are the steps: the order went to the on-board terminal, waiting for the driver's confirmation, the bus is travelling to the breakdown (0.8 km, 02:22 left), technical aid called, passengers notified — boards at 4 stops and the app.
- The assignment can be cancelled within 10 seconds — the “Cancel · 9 s” button
- The summary under the map updates at once: breakdowns 0, reserve 3
- Each step has its own state: done, waiting, on its way
The map: layers, statuses, filters
In the calm mode the map works as a desktop. Layers “Stops” and “Reserve”, a dropdown “Vehicle status” legend with counters (on schedule 30, delay 2–5 min — 2, over 5 min — 1, reserve 3), a “Scheme / Map” toggle, a search by bus, route and stop opened with the “/” key. The chosen route becomes a filter chip and is highlighted; on the right the “Routes” tab shows each route's regularity as a bar.
- The legend both explains the colours and works as a filter
- The “Events” and “Routes” tabs share the right column with no screen change
- A line under the feed: “Telemetry: updated every second”
Routes and schedules
A registry of seven routes with search and an “All 7 / With deviations 4” filter. A row holds the number, name, how many vehicles are out, the interval, operating hours, status and regularity. On the right is the selected route's card: vehicles on the line, interval against plan (22 min, plan 22), regularity, length and turnaround, first and last trip, terminals, stops and a list of buses with schedule deviation.
- A red route number marks a breakdown, visible right in the list
- Each bus's deviation is a coloured chip: +7:12 in orange, +0:58 and −0:42 in green
- “Show on map” — a one-click jump to the route
Rolling stock
37 buses: 32 on the line, 4 in reserve. Counter filters “All / On the line / Reserve / Faulty”, search by bus, plate, driver or route. A row shows the bus, route and direction, model, plate, driver and status with schedule deviation. The bus card: driver, model, capacity, how full the cabin is, fuel with a bar, mileage per shift and distance to maintenance.
- Bus numbers in a monospaced font — they read down a column
- “Show on map” — the same jump as in routes
Incidents
The shift log: 5 incidents per shift, 2 open. Filters “All / Open / Resolved”, event type — breakdown, accident, equipment, congestion — and time. An open incident is highlighted, resolved ones have a green dot, observed ones a yellow one. The card on the right: type, number, reaction time, resolution and a timeline — “Driver's button + telemetry: engine overheating, coolant t° 118 °C” — with the same “Show” and “Resolve” buttons.
- The same “list + detail” pattern as in other sections
- A decision can be made from the log without going back to the map
Shift analytics
A section for the senior dispatcher and shift review: “Current shift / Yesterday / Week”. A 12-hour regularity chart with a dashed 92% norm line, delays by route sorted in descending order, incidents and reaction (5 incidents, average reaction 1:19, average replacement 12 min) split by type, and line exit — plan 33, on the line 32, reserve free 1 of 4 — per route as a plan-and-actual bar.
- The norm is a line on the chart, not a separate number: you can see when the shift crossed it
- Hatching in the line-exit bar marks the missing bus
The outcome in numbers
- The whole breakdown path — from signal to replacement assignment and passenger notification — lives in one product with almost no context switching.
- The decision is made with eyes open: interval, stops at risk and waiting passengers are visible before the button is pressed.
- Shared patterns — “list + detail”, statuses, actions — let a user learn the other sections by learning one.