ViaLynk - Consumer EV Charging App

Redesigning the map experience for 20,000+ EV drivers to find available charging stations quickly and confidently.

ViaLynk map showing green clusters of available chargers


Project overview

Impact

USABILITY TESTING

18 → 7 minutes

Average task time with five operators

POST-LAUNCH

15% fewer support tickets

Tracked over three months after launch

Role: Product Designer Scope: End-to-end design of the map experience Timeline: 2 months Team: 2 Designers (shared research), Engineering Platform: iOS, Android I redesigned the ViaLynk map experience to help EV drivers quickly locate available charging stations. The previous map design made it difficult to find stations, understand availability, and navigate dense areas without excessive zooming and trial-and-error. Drivers open the map from the bottom navigation bar. It is the main way they find a charger in the app, so every extra zoom or tap added time at the moment they needed to charge. I owned the map experience end to end: markers, availability states, clustering, filters, search, the path to station details, the motion prototype, handoff and design QA. I planned and ran the research with another designer.

Role: Product Designer Scope: End-to-end design of the map experience Timeline: 2 months Team: 2 Designers (shared research), Engineering Platform: iOS, Android I redesigned the ViaLynk map experience to help EV drivers quickly locate available charging stations. The previous map design made it difficult to find stations, understand availability, and navigate dense areas without excessive zooming and trial-and-error. Drivers open the map from the bottom navigation bar. It is the main way they find a charger in the app, so every extra zoom or tap added time at the moment they needed to charge. I owned the map experience end to end: markers, availability states, clustering, filters, search, the path to station details, the motion prototype, handoff and design QA. I planned and ran the research with another designer.

Impact

USABILITY TESTING

18 → 7 minutes

18 → 7 minutes

18 → 7 minutes

Average task time with five operators

Average task time with five operators

POST-LAUNCH

POST-LAUNCH

15% fewer support tickets

15% fewer support tickets

15% fewer support tickets

Tracked over three months after launch

Tracked over three months after launch

Usability outcomes

USABILITY TESTING

20-30 sec

20-30 sec

Time to find an available charger and select the station. The original map took 2-3 minutes.

FINAL DESIGN

4 taps

4 taps

From the map to the exact station, with no manual zooming. The original map took 8-12 taps and zooms in testing.

From the map to the exact station, with no manual zooming. The original map took 8-12 taps and zooms in testing.

Baseline measured on the original map. The redesign time comes from round 2, which tested my first redesign with an optional availability filter. Each round had 15 drivers.

1

Patients needed clarity

Could the pharmacy help them get medication delivered, handle insurance, and start intake without confusion?

Messaging + intake CTAs
2

Providers needed trust

Could the pharmacy reliably support referrals, prior authorizations, coordination, and patient updates?

Provider path + referral messaging
3

Offline users needed a bridge

Flyers and business cards had to move people from a physical touchpoint into the digital intake flow.

QR handoff to intake

The main UX challenge was translating several pharmacy services into audience-specific paths that made the next action obvious.

Before the redesign

The original Station page provided a point-in-time snapshot.


Real-Time Logs became the fallback for deeper investigation.



It confirmed configuration and current connection status, but provided little history or operational context to explain why the station disconnected.



Every OCPP event appeared in one continuous stream. Operators had to scroll through unrelated entries and open raw payloads individually to trace what happened.


Operators learned about station issues through offline notifications, driver reports, support tickets, and unresolved work orders.

The Station page confirmed configuration and current connection status, but gave operators little information about how the station had been behaving over time.


Patients needed clarity

Understand medication delivery, insurance support, and how to start intake.

Service messaging + intake CTAs

Providers needed trust

Understand referral support, prior authorizations, insurance coordination, and patient updates.

Provider information + referral guidance

Connecting print to digital intake

Flyers and business cards needed to guide people into the online intake flow through QR codes.

Finding the station was only the first problem

The original Station page provided a point-in-time snapshot.

Real-Time Logs became the fallback for deeper investigation.

It confirmed configuration and current connection status, but provided little history or operational context to explain why the station disconnected.


Every OCPP event appeared in one continuous stream. Operators had to scroll through unrelated entries and open raw payloads individually to trace what happened.


Finding the station was only the first problem

Operators learned about station issues through offline notifications, driver reports, support tickets, and unresolved work orders.

The Station page confirmed configuration and current connection status, but gave operators little information about how the station had been behaving over time.

Operators learned about station issues through offline notifications, driver reports, support tickets, and unresolved work orders.

The Station page confirmed configuration and current connection status, but gave operators little information about how the station had been behaving over time.


What drivers told us

Research conducted

We ran two rounds of in-person sessions with 15 drivers each. Round 1 tested the original map, and round 2 tested my first redesign. In each round, twelve participants were drivers at a mall where ViaLynk chargers were installed, recruited on site with a $5 gift card, with different people each round. The other three were colleagues who charge there daily and joined both rounds.

Every participant did the same task: open the map, find an available charger where you are parked, and select the exact station number.

I timed each session from opening the map to selecting the exact station, and logged taps, manual zooms, wrong selections, and whether drivers finished or gave up. The three daily users finished faster but needed about the same number of taps, which pointed to the interaction model as the source of friction. The time figures on this page are observed ranges from these sessions.

Key Insight: drivers check availability before distance.

A nearby charger only helps if a driver can use it. Drivers wanted to see which stations were free before they started navigating, and repeated zooming felt stressful when the battery was low. Finding out late that a station was taken was the most frustrating moment in the flow.


Why the previous design failed

The original map showed every station with the same blue marker, so drivers had no way to judge availability at a glance. As station density increased, the map became harder to use and pushed drivers into slow, manual exploration. Some drivers gave up partway through and switched to another charging network or called support to start a charge.

Design Goal

Help drivers find an available charger nearby with less zooming, clear visual signals, and predictable interactions.


Key Design Decisions & Tradeoffs

Decision 1: Introduced color-coded availability

What changed

  • In my first redesign, the map opened on all stations in blue, and drivers could turn on an availability filter that showed available chargers in green.

  • Testing showed the filter was easy to miss, which led to Decision 5.

Tradeoff

The markers show availability only. Charging level, cost and other details stay in the filters and the station view.

Why

Drivers needed to see availability before tapping into a station.

Two map screens comparing the availability filter in green with the all-stations view in blue
Left: Available chargers show in green. In a few places, a location with none available stays on the map as a gray (0) marker.
Right: All stations in blue, the default in the first redesign.

Decision 2: Implemented clustering to manage density

What changed

  • Stations group into clusters based on density.

  • Circular clusters group stations across more than one location.

  • Square markers show a single location, with the number of stations there.

Tradeoff

Individual stations stay hidden until the driver zooms in, which keeps the map readable.

Why

My first color-coded version showed every station as its own marker. Green and gray made availability easy to scan, but in dense areas dozens of markers overlapped and were hard to tap. Availability and density had to be solved together, with a hierarchy that changes as the driver zooms in.

Comparison of overlapping individual markers and the clustered map
Left: My first color-coded version, with every station as its own marker.
Right: Clustered by scale.

Decision 3: Enabled progressive zoom through interaction

What changed

Tapping a cluster automatically zooms in to the next level of detail, down to individual stations.

Tradeoff

Drivers have less manual zoom control in exchange for faster access to detail.

Why

Drivers wanted to reach a station quickly while scanning for availability, and manual zooming slowed them down.

What changed

  • Added a search bar for direct location lookup.

  • Added filters for available chargers, charging level, and free chargers. The filters open in a bottom sheet, so the map stays visible while results change.

Tradeoff

Additional controls increased visual density on the map.

Why

Drivers wanted faster ways to narrow options without repeated zooming or trial-and-error.

Filter sheet with available-only, charging level and free charger toggles

Decision 5: Made availability the default view

What changed

The map opens with the available-only filter on. Drivers can switch to all stations in one tap.

Why

In the second round of testing, the filter was optional. 8 of 15 drivers turned it on without being asked, and 7 never found it. The core task depended on drivers discovering an optional control, so I made it the default. Making it the default also removed the one or two taps it took to turn the filter on.

Tradeoff

Drivers who want to see every station need one extra tap. I kept the switch visible because an unavailable charger may be occupied or briefly offline, and drivers still want to see stations they know. I verified the new default in design QA. There was no third research round.


On by default in the final design. All stations is one tap away.


The Before/After Experience

Flow comparison of the original map loop and the four-tap redesigned path

Before figures are observed ranges from testing the original map. The redesign time comes from round 2.



This would’ve saved me so much stress last week when I was almost out of battery. I can actually see which stations are open without clicking on every single one.

Frequent ViaLynk User


After launch

The team saw app downloads and charging sessions increase after launch. I no longer have the exact figures, so I'm not stating a percentage or attributing the change to the map alone. The core discovery model is still in production.


What this taught me

  • Availability is the first thing drivers check, so it should be the first thing the map shows.

  • A dense map stays readable when color, shape and grouping follow consistent rules.

  • Zoom, clustering and filters work best when they are designed together as one system.


Reflection

If I revisited this work, I would define success metrics before launch so I could report outcomes after release as well as test results. I would test very dense urban areas earlier to tune clustering thresholds. Availability still relies mainly on green and gray, so I would add a second cue, such as an icon or shape, and run a full accessibility review.

.say hello

Interested in working together?
Let's talk.

.say hello

Interested in working together?
Let's talk.