← All projects

Civi — Mobile App

Creating a personal-safety app from scratch, used across São Paulo, Brazil

Role
Product Designer
UX/UI Designer
Graphic Designer
Timeline
Apr 2020 – Jul 2023
3.4 years
Part-time
Team
I worked as Civi's in-house product designer from the company's founding until its end. I was the only designer for over a year, until the team started growing.
Head of Product
Alex Tandy: Sep 2020 - Sep 2021 (1 year)
Rodrigo Kleinert: Aug 2021 - Feb 2023 (1.6 years)
Product Designer
Viviane Ducarme: May 2021 - Jul 2022 (1.3 years)
Caroline Toscano: Oct 2022 - Feb 2023 (5 months)
About Civi

Context

Civi believes safety is a right for everyone, and aligns information and technology to help individuals and communities stay better informed and safer.

Civi's goal is to become the number one security app in Latin America by empowering tens of millions of users to improve their personal security.

The company started focusing first on São Paulo, Brazil.

First wireframe (2020)

I made Civi's first wireframe, based on a sketch the founder made.

The goal was to build an MVP and launch fast.

That first version included a COVID-19 tracker, which was discontinued around 2021.

Interface overtime

Between April 2020 and September 2022, I took the app from MVP to a fully functional product — here are a few key moments from that evolution.

Main functionalities

Before I get into individual features, here's an overview of Civi's core experience — the map, search, saved places, contacts, and settings that made up what most users interacted with day to day.

Map of features from one of the first versions of the Civi app
Map of Civi's main features

The diagram below maps the app's core flow - navigating the map, searching places, saving places, adding contacts and checking contacts.

Civi app core flow
Civi app core flow

Design system (2021)

I created Civi's design system in the second half of 2021, together with another designer. The master components gave the app a consistent visual identity, sped up development, and made it easier to scale.

Check the full design system below, or open it in a new tab →

"Save places" discovery process (2021)

I built "Save Places" — one of the app's core features — based on user research and data analysis.

Planning research

Goal

My goal was to focus our efforts on the features that would make the app more useful and appealing to users.

I wanted to find out which event types were relevant enough to show on the map and/or trigger alert notifications.

Target group

These interviews focused on the app's most active users. I wanted to better understand the profile of people interested in our product — when they used the app, how often, and why.

Interview questions

  • What do you do for a living?
  • How did you find out about Civi?
  • How has your experience with the product been so far?
  • Has the app ever crashed for you?
  • Do you feel safer with the app?
  • Have you been receiving notifications from Civi?
  • What event types do you think are relevant for you? Why?
  • What event types do you think are irrelevant? Why?
  • Is there any functionality you would like the app to have?

User interviews

I interviewed about 15 active users for around 10 minutes each, and documented each session's questions, replies, and key insights.

User interviews with video call and notes
User interviews with video call and notes

Data compilation

From the interview notes, I built a spreadsheet summarizing the key insights, feature suggestions, and relevant/irrelevant event types, then turned it into three charts to visualize the patterns.

Data analysis and conclusion

The interviews showed people cared about their loved ones' safety as much as their own — they wanted visibility into their homes, workplaces, and other frequented places, and a way to confirm that family and friends were safe.

Over 23% of interviewees also wanted to filter notifications by maximum distance or event type, frustrated by alerts that felt too far away or irrelevant.

Interactive prototype & user test

I built an interactive prototype to validate the feature with users, which let me apply improvements and fix issues before shipping to production.

Try the interactive prototype or open it in a new tab →

Interactive prototype created to validate the Save Places feature with users
Interactive prototype created to validate the "Save Places" feature with users

Breaking the feature into smaller versions

I broke this feature into four smaller versions, which let us launch faster and validate with users throughout implementation.

New 'Save places' feature splited in 4 versions
New 'Save places' feature splited in 4 versions

"Save places" final version

After a few rounds of improvements, I landed on the version below.

The final 'Save places' feature
The final 'Save places' feature

You can also check out the Design Sprint we ran in 2022, where we created a feature that let users invite friends as safety contacts.

Onboarding redesign (2022)

Problem

Onboarding was one of the app's most elaborate flows, with a high drop-off rate — largely because it asked for a lot of personal information upfront: home address, work address, device location, and more.

Solution

Together with another designer, we redesigned the onboarding flow to strike a better balance — collecting what we needed while keeping it short and easy to get through.

Pending permissions and settings (2022)

Problem

Civi's value depended heavily on device permissions — location access, notifications, saved places, and contacts.

Many users were finishing onboarding without turning these on, so the app couldn't deliver its full value, and retention suffered.

Solution

To fix this, I designed a pending-settings carousel and a settings review flow that explained why each permission mattered and how it kept users safer.

Check the flow below, or open it in a new tab →

Virtual contact "Civiana" (2023)

Problem

Civi also depended on users adding contacts — friends and family who could see each other's location, get nearby alerts, and receive automatic notifications when someone arrived at or left a saved place. However, data showed a low rate of sent invitations, and an even lower rate of accepted ones.

In user interviews, I found that many people rushed through onboarding without reading the explanations — they wanted to finish registering as fast as possible to start exploring the app and learn how to use it by using it. Without understanding the possibilities of the app they had no motivation to invite anyone to join.

Solution

To solve this, I created Civiana — a virtual contact that shows users what an added contact looks like in the app, complete with location, distance, battery level, and nearby occurrences. I gave her a home and work address too, to demonstrate the auto-check-in feature.

This way, users could see the value of adding contacts firsthand. Contact invitations went up significantly as a result.

Places suggestions (2023)

Problem

I built an auto-check-in and auto-check-out function that notifies users when a contact arrives at or leaves a saved place — for example, "Mary arrived at home" or "John left work." The problem: users were adding contacts but not places for them — someone might add a partner but never that partner's office, leaving the feature unusable for that place.

Solution

I added a list of suggested places, pulled from the places a user's contacts had already saved. It became much easier for users to add these places and use the auto check-in feature.

Event icons redesign (2022)

Problem

Initially, each of the app's 80+ event types had its own detailed icon. In testing, I found that most users couldn't tell them apart — they were too small on the map to read at a glance.

Color was a problem too: the app used blue, gray, yellow, and red backgrounds to show how recent an event was, but since the icons were colorful as well, it was hard to tell what the background color meant. Instead of helping, the icons made the map visually noisy and confusing.

Goals

  • Simplify the event icons, making them more intuitive and accessible.
  • Make the pins on the map clear and easy to understand.
  • Create event type categories to allow the implementation of simple map filters by event type.
Icons (2021) — Images used in the map pins to indicate the event types
Icons (2021) — Images used in the map pins to indicate the event types

Process

I used card sorting to organize the event types into categories that would feel intuitive to users.

Participants sort a set of cards into groups based on how they relate — it's a simple way to learn how people naturally categorize information, so the product's structure matches how they actually think.

Dynamic instructions

The participants were asked to do the following:

  1. Read the post-its one by one.
  2. Organize them into groups that make sense to you, by dragging the cards to the columns on the side. There's no right or wrong — follow your intuition.
  3. You can move cards between categories if you change your mind during the process.
  4. Use as many categories as you like — you don't need to fill every column. Duplicate the last one if needed. Colors are for visual clarity only.
  5. Name each category as it makes sense to you.
Card sorting board — Event types cards on the left, empty categories on the right
Card sorting board — Event types cards on the left, empty categories on the right

Gathering and analysing results

I collected all the results into one big matrix, then looked for patterns across categories.

Matrix of card-sorting results across 13 participants
Matrix of card-sorting results across 13 participants

Card sorting result

The analysis led me to 19 event categories, and I designed a monochromatic icon for each one.

Final result: 19 event categories with subcategories and icons
Final result: 19 event categories with their subcategories and icons

Testing new icons with users

I applied the new icons to a map simulation, then asked a few people what they thought each one meant, without giving them any context.

Map with new icons used to test with users
Map with new icons used to test with users. Users' responses in green (right) or red (wrong)

Icons Final Design

This is the result of the new event categories and their icons.

New event categories and their icons

Event density

Problem

As all the pins on the map had these new icons, the map was still looking very dense in information. It was difficult to decide which pin to click first.

Besides that, back in the Save Places interviews, many users had asked for an event type filter to see only the event types relevant to them on the map.

We didn't have a very big quantity of event submitions everywhere in the city. Filtering by event type would likely leave the map looking empty in areas without much activity.

Besides that many users would forget about this filter and they would never see lots of possibly relevant information.

Solution

To get around this, we designed an event relevance score instead of a simple filter.

We set a maximum number of pins that would appear expanded with icon on the map, the rest appeared as a smaller dot — just enough to suggest something had happened there.

Each event got a score based on recency, gravity, and distance — gravity being a 1–10 rating we assigned to each event type by severity.

The map showed the highest-scoring events larger and more prominently. By zooming in the users could see more local, lower-priority events as the view area shrank.

Event submission flow (2022)

Improving how users submit event reports — Civi's user-generated content (UGC) flow.

Problem

Before this, Civi directed users to a WhatsApp channel to report events, where the team would validate and publish them in the app. Sending people outside the app made the whole process feel unreliable — few users actually reported anything, and what we did get was often incomplete, with no photos or video to verify it.

Goal

My goal was to create an easy in-app flow for users to submit event details — clear enough for Civi's team to validate quickly before publishing.

Benchmark research

To understand how other apps handled event reporting, I ran a competitive audit of direct competitors like So Safe and SP + Segura. Since their UX wasn't great either, I also looked at indirect competitors — Waze, Instagram, WhatsApp, TikTok, Facebook, and Airbnb — for inspiration.

Benchmark research — Competitor UGC reporting flows
Benchmark research — Competitor UGC reporting flows: Waze, So Safe, and SP + Segura

UGC first version

I built a first version of the flow, but after launch, submissions actually dropped further. Firebase event data showed users were mostly dropping off at the upload-media step.

User interviews

To dig into why, I interviewed users who'd completed the flow successfully, to understand their experience and the real-life scenarios worth designing for. I also interviewed users who'd dropped off, to find out why and get their feedback.

Synthesis and conclusions of the user interviews
Synthesis and conclusions of the user interviews

New flow advantages

Based on what I heard in those interviews, I made several changes to the flow. Here's how the new version compares to the old one:

Simplicity and speed

The old flow had 7 steps; the new one has 3. Sending anonymously, picking a date/time, and writing a description are now all on one screen.

Location tracking

The new flow detects the user's current location automatically and shows it on a map, so there's no need to type an address — helpful for reporting something witnessed on the street without knowing the exact address.

Audio recording

Users can record audio to describe what happened instead of typing it out.

More intuitive flow

Some users didn't realize they could report events through the app at all, so the first step now shows every available event type upfront.

Comparison of the first and final version of the UGC flow
Comparison of the first and final version of the UGC flow

Check the flows below, or open it in a new tab →

Premium plan & free trial (2023)

One of the last major features we shipped at Civi was a paid premium plan, "Civi Protege," which let only premium users add contacts.

Free users got alerts close to themselves and their saved places. Premium users could also see their contacts' current location and location history, battery level, and get notified whenever a contact arrived at or left a specific place — home, office, or school, for example.

We also designed a free trial flow so free users could try the paid features for two weeks.

Premium plan architecture (Miro)
Premium plan architecture (Miro)

Check the flows below, or open it in a new tab →

The end of Civi (2023)

Around June 2023, Civi's founders shared that they hadn't been able to raise a new round of investment, and the newly launched premium plan wasn't generating enough revenue to keep the company running. Shortly after, they decided to close it down.

Looking back, a few things stand out to me:

Lack of user data from the start

It took us a long time to collect and present usage data clearly. For more than a year, I had no visibility into new users, retention, or heat maps — which made it hard to know where the real problems were.

Discovery took priority over shipping basics

I spent a lot of time on research and elaborate features before the basic experience was solid. The onboarding flow, for example, stayed buggy and visually inconsistent for too long — and that alone pushed away plenty of new users before they'd even tried the app.

Acquisition outpaced retention

We invested heavily in acquiring new users while retention was still low, so a lot of that spend went toward users who left the app almost as fast as they joined.

Monetization came too late

We wanted to build a large, popular app before introducing a paid plan. By the time Civi Protege launched, it was too late to change the company's trajectory.

This experience taught me to weigh business fundamentals — monetization, retention, team pacing — as closely as I weigh usability and visual consistency. It's a lesson I carry into every project since.