We all hate waiting, delays and missed trains - which happen too often to a Caltrain trip. The Arrival app helps you avoid them by planning and tracking your trip smartly, precisely, and with flexibility.

Timeframe:  Jul 2017 - ongoing

My Roles

Product design,
UX/UI design,
user research


By train

By car/bike/walk


Why is Arrival app different

Let the train find you

Planning ahead or searching ad hoc, we guess your need based on location and time. 

Show info not noise

Know "what's next" in a glance. For right now, right here.

OK to change plans

Running late or early? Ended up on a different train? We've got you covered.


User research

"It's slow because there aren't many trains. If you miss it, sometimes you'll need to wait for another hour."

- Kathleen
Took Caltrain the last time ~3 years ago

Delays happen to my morning train about 2/3 of the times , usually by < 10 minutes."

- Eric
Daily commuter between SF and Redwood City

"I would search for the train just like how I use Google Map for driving."

- Lezhi

Going from SF to Mountain View for a meetup after work



Affinity diagramming

Based on user research and affinity diagramming, I decided to focus on the time management experience of the Caltrain for the first iteration, specifically:

- Figure out the schedule
- Work with delays
- Minimize waiting time



Vicky, Josh, and Tatiana vary in their familiarity with the system, frequency of use, and their level of flexibility with time.

Vicky's user scenario

Vicky will plan the trip ahead of time, track her train throughout the ride, and also share it with her friend in Palo Alto.



Napkin sketch

The app has two modes: 'plan' (ahead) and 'track' (during the trip). Some ideas I put aside for the first MVP: 

- crowd-sourced delay notification
- first-timer toolkit
- nearby coffee shop in case you're early/late.


Vicky - planning around time

Vicky would spend the most time planning around a fixed arrival time before the trip.

Just in case she misses the train, knowing when the next train leaves would be great.

Once on boarded, Vicky also wants to constantly keep track of where she is, and also keep her friend updated.

Josh - daily rides

Josh knows the train schedule between home and work by heart, and cares about every minute of delay.

Still, there are times that he needs to take a later/earlier train that he needs to look up in advance.

Tracking is not that important once Josh is on board, as he can listen to the announcements.

Tatiana - spontaneity

Sometimes Tatiana will search in advance, and other times she just hops on the train.

As a one-time visitor, she is not familiar with stop names - nor is it very important!


Four ways to start using Arrival

Throughout the trip, a user would interact with the app frequently but briefly. A smart, dynamic home screen shows the traveler 80% of the info needed without father interactions. 

1. Plan a new trip

A user opens the app for the first time ahead of the travel.

2. Track a chosen trip

Have a previously selected train to track. Show different info before and after departure.

3. Change of plan

Have a previously selected train but geolocation suggests that the user is on a different train.

4. Find the train I'm on

No chosen trip to track. Guess based on geolocation + motion sensor.


Iterating + testing

This testing scenario is based on Vicky's use case. I tested this with 6 people on and off the Caltrain.

Top findings:

- Can you make a best guess for me, and let me correct you?

- Why should I see 'track' when I'm not even on a train?

- What if I miss the train?

- A one screen tracking page

- Back to home screen?


User flow - 3rd iteration

More mockups


Route details

Trip planning

Station map

More to come!


Yunjie Li, 2017
Using Format