How we helped people avoid parking tickets and find open spots — Design Case study

Florent Lenormand
6 min readJan 28, 2019


I am Product Designer at SpotAngels — mentored by Jonah Jones, Lead designer of Google Maps.


At SpotAngels, we are building a community-based app which helps you find open spots and avoid parking tickets.

When we detect that a user leaves a parking spot, we display an open spot on the map. And because we know where her car is parked, we can send her a notification before the parking duration expiration.

In this design case study, we’ll explain how we designed those services.

The problem

When we talk to users, there are two recurring problems:

  • They often have parking tickets
  • It’s hard to find an open parking spot

How can we help users avoid parking tickets and find open spots?

Metrics we want to increase with this project

↗ Activation
↗ % users selecting “Always” for the Location Permission
↗ Number of open spots


  1. Parking detection
    The primary solution is to detect when a user finds a spot and when she leaves her spot.
    → If we know when she finds a spot, we can notify her when it’s time to leave her car.
    → If we know when she leaves a spot, we can alert other users where there is an open spot.
  2. Crowdsourcing
    To improve the number of open spots displayed in the app, we can also ask users after they parked how crowded is the street.

Design Challenges

  1. Ask for touchy permissions
    To be able to detect when and where a user parks and leaves, we always need access to her location and to her motion & Fitness sensor.
    We also need her permission to send push notifications.
  2. Let users edit their car location
    Sometimes the GPS location is wrong. In that case, we could send a wrong parking notification and display a wrong open spot.
    We have to let the user correct manually her position.
  3. Ask users for spot availability on streets
    The more users we have, the more open spots we detect. We also are a community-based app, so the community can tell us when a street is full or empty.

Onboarding — Ask for touchy permissions

To be able to detect when a user parks or leave, we need to:

  • Always have access to the user location — On iOS, if a user gives the ‘While using the app’ location, we can’t detect any park.
    The location helps us to know where the user is.
  • Always allow Motion & Fitness sensor
    The sensor helps us know when the user drives or walk and detect when she is in her car.
  • Push Notifications
    Notifications are useful to alert a user when it’s time to leave to avoid tickets.

My goal as a designer was to make the onboarding process as smooth and unintrusive as possible. Here’s our solution.

The onboarding checklist

The first onboarding screen is a checklist. Users can select features they want to enjoy.
→ For users, it’s the first step of an account configuration.
→ For us, it’s a user survey that indicates which feature is the most important.

Ask for permissions

Depending on the answer, we ask for permissions. Obviously, we don’t need any permission if you only want to see free and cheap parking.

Classic prompt

For the access to push notification and Motion & Fitness sensor, we just prompt a classic alert view.

Fake prompt

But for the location access, we do something different.
Because we need the ‘Always allow’ access, we prompt a fake alert with a fancy blue button.

→ If users tap on ‘Only while using the app’ or ‘Don’t allow’, we display an error alert.
→ If users tap the fancy blue button, we display the real iOS alert.

Thanks to this fake prompt, 45% of users select Always for the Location permission.


Users have direct feedback when permission was given or not.
If users want to have access to the feature, they press again the button and land on the ‘second chance’ screen.

Second chance

The second chance is tricky because we can’t prompt an iOS alert a second time. We ask to go to Settings and manually change the permission.

The onboarding is done

Everything is set and a big blue button pops. Users can finally join the community.

Let users edit their car location

Our goal is to save users from parking tickets.
But if we park a car on the wrong side of the street due to a GPS issue, we will send a wrong notification.

That’s why we ask users to confirm their parking location.
If the position is wrong, they can edit it and park at the correct spot.
Then, we can send them a notification prompting them to move their car, and we display an open spot on the correct location.

Ask users for spot availability on streets

When users select a spot close from their position or when we detect a park, we ask them how crowded the street is. It helps us provide parking recommendations.
70% of the times users were asked about occupancy after a confirmed park, they answered. It allowed us to provide way more open spots for the community.


The global experience allowed us to push our activation up to 54%.

Project Learnings

Base yourself on user needs, not assumptions
We do research, analyze data, we talk to users and prove our assumptions. We have empathy for users and remember that what they ask for isn’t always what they need.

Done is better than perfect
We don’t build perfect experiences because our time is precious and we want to provide the maximum impact.
We always ask ourselves how to obtain 80% of the value with 20% of the work. We are not famous or beautiful, we are efficient.

I would like to thank the members of the amazing SpotAngels team, who helped me design this experience: Hamza, CEO — Youcef, Product Manager — Jonah who brilliantly mentored me during all the design journey.

Thank you for your reading.
If you are curious about SpotAngels,
download the app! If you are curious about me, visit my website




Florent Lenormand

I am a Product Designer based in San Francisco. Currently, I design at SpotAngels.