Two screenshots of the Road Closures tracker: One on desktop, and one on mobile.
UX Case Study

Helping drivers avoid delays from road closures

Road Closures Tracker
City of Bloomington, Indiana
Timeline: 3 months

Our web app published road closures data we already had as a map, and reduced the manual labor of data entry. This enabled internal employees to deliver more value with less work.

The Problem

Drivers could only learn about road closures from subscribing to the newspaper, or a mailing list

Even though the City is the official data source on which roads will close, this data was mostly used for internal processes.

The City published a weekly mailing list of road closures. However, the Mayor felt political pressure to get the City’s data on road closures into the hands of the public in a format they can understand.

Research

Illuminating the process with user shadowing

Emails about road closures accumulated throughout the week. Starting on Friday morning, our maintainer opened every single one, copying and pasting the information into a new email window.

What we observed: Copying and pasting text was fast, but manually formatting it was slow.

Design and Development

Replacing the mailing list with a web app

Before shot

Before the redesign. The developer was tasked with proving we could layer our road closures on top of a map. After that, I smoothed out the rough edges.

Wireframing

Rapid iterating in mixed fidelity

A screen shot showing four wireframes that show different approaches to the overall layout, elements of maps, and amorphous blocks representing elements to be designed later.

Early, rapid explorations. I used more fidelity to indicate where I wanted feedback, and less fidelity to defer feedback for later discussions.

Pulling the best pieces together on a whiteboard

A drawing of the app, with two sidebars on the left, and a map on the right.

Group whiteboarding. The team and I discussed the rapid iteration wireframes and did some whiteboarding to come to consensus on what worked, what was missing, and how to structure the screen.

Designing high-fidelity in code

There were no high fidelity mockups for this project, because some design I did directly in code earlier in the year was a step up in design quality compared to what the team had delivered before I joined.

Public beta release
A screen shot of a web app, with a filters panel, a listing of road closures, and a map.

The public beta. We went from the whiteboard straight to development, where I used HTML and CSS to create the high fidelity look and feel.

If I designed this with what I know now

UI Remix, 2023

I’ve learned a lot about how to make a design look cleaner, and make the product look more dependable since I did this project. In 2023, I remixed this project in Figma, to show what it might look like if I designed this today.

Screen shot of the updated design

Remixed index for drivers. This remix shows how my knowledge of UI craft has evolved. It also addresses some shortcomings of the original design, like only showing the filtering panel when it’s needed, or improving accessibility by using more than colors alone to convey the road closure type.

Responding to public feedback

Can we make this responsive?

Public feedback revealed demand for this web app to work on phones. I quickly did some sketches on note cards to show how a responsive design could work.

Note cards with wireframes of the UI, and process diagram arrows showing how interactions would work.

How I pitched responsive design. I slid these cards on the table to illustrate panels sliding in and out of view, and explained how each card made use of UI elements already in the app.

Three screen shots of the mobile presentation for this web app: Listing of closures, a slide panel with filters, and a road closures detail screen.

The responsive UI. My design saved an estimated 75% of development time  by repurposing UI code we had already shipped.

Bringing it all together with the admin UI

The developer and I sketched out form fields based on what we observed when we shadowed the mailing list maintainer.

A paper with a sketch of some form fields that guided discussion about the admin UI.

Sketches. The developer and I used pen and paper to visualize our ideas as we worked through the details of what we needed to capture.

A screen shot of the admin UI.

The Admin UI. Our stakeholder wanted this done as quickly as possible, so I repurposed UI patterns we had already built.

A screenshot showing how admins browse through the road closures they’ve created.

Remixed index for admins. Using mostly the same components as the front end index, this also adds a search bar, to make it faster for admins to find a closure they need to edit.

A screenshot of the remixed road closure editor UI.

Remixed closure add/edit screen. Here I’m showing how I would lay out the form differently, making better use of space, color, and adding icons for the drawing tools.

An unexpected twist

“Ugh. I clicked wrong again.”

When the developer and I tested our work, we both said out loud that we made a mistake, and we just needed to learn the UI correctly. But when it happened several times, I realized we weren’t the problem—the problem was the UI, and we can fix it.

We kept accidentally drawing on the map, when we intended to drag, because the UI started with drawing mode enabled by default. I solved the problem by having it start in dragging mode, letting us choose the drawing tool when we’re ready to draw.

Results

The Admin UI enabled a game-changing productivity trick

Our UI enabled the admin to enter road closures in short bursts throughout the week. Compared to the old workflow, this changed their Friday schedule from being completely full, to completely open.

They told us, ”I keep joking with my coworkers, if you have a hard problem, just have the folks in IT make an app for you! It’s as  simple as that!”

The app was a winner at the Code for America Technology Awards, for putting government data in the hands of the public.

What I learned

Don’t let technology become a barrier to giving users what they expect

Let users choose what they want to do before they do it. In hindsight, we made that mistake with the drawing tool because we were excited about working with a new technology. This showed me how important it is to put the user’s needs ahead of our excitement.

Sharing elements between the desktop and mobile UI made it possible to deliver what users expected. Even though this app shows a lot of information, I was able to make it work on a mobile device by showing fewer parts of the UI at a time.

What I would do differently

Questions and research that feel obvious to me now

If a stakeholder approached me about replacing a mailing list with a web app, the first question I would ask is, “How many subscribers are on this list?” to get a ballpark estimate of user engagement.

Run a user survey to check some basic assumptions. What devices users expect to see road closures information with? Would they use a dedicated app? Or do they expect this information in an app they already use?

Want to see more?
Let’s get in touch.

Much of my work is under NDA, and I’m also often working on new projects that aren’t ready to be published here. The best way to learn about my capabilities is to get in touch and talk shop!