Personal project · UX case study

PureGym Swiss App redesign

Introduction

In April 2025 PureGym removed live occupancy from its app. What followed in the reviews wasn’t a complaint about convenience. Members had lost the thing that told them whether a visit was worth making.

Role

Solo Project

Year

2026

Tool

Figma, Framer

Methods

Methods

/Review analysis

/Competitor analysis

/Data analysis

/Thematic coding

/Wireframing

/Prototyping

Problem

The app averages 1.63 out of 5. Reviews naming the removed indicator start in April 2025 and don’t stop, while PureGym’s website still advertises the feature.

It was the most frequent complaint across 100 reviews: not convenience, retention.

The app averages 1.63 out of 5. Reviews naming the removed indicator start in April 2025 and don’t stop, while PureGym’s website still advertises the feature.

It was the most frequent complaint across 100 reviews: not convenience, retention.

The occupancy feature existed to protect exactly that. Removing it didn’t make the app less pleasant; it removed the mechanism that protects attendance, and attendance is what protects revenue.

A gym is a subscription business, and the number that predicts cancellation is visit frequency. Members who drop below about one visit a week are the ones who cancel.

A gym is a subscription business, and the number that predicts cancellation is visit frequency. Members who drop below about one visit a week are the ones who cancel.

Website: Advertising Feature

App: Feature Missing

Lade kostenlos die PureGym App herunter und überprüfe die Live-Auslastung in deinem Fitnessclub.
Download the PureGym app for free and check the live occupancy in your gym.
Website: Advertising Feature
But the app's home screen:
App: Feature Missing
App: Feature Missing

Research and discovery

100 App Store reviews and 6 comparable apps, analyzed to answer one question:

is the occupancy complaint an annoyance, or a pattern?

100 App Store reviews and 6 comparable apps, analyzed to answer one question:

is the occupancy complaint an annoyance, or a pattern?


Goals

Goals

• Understand user pain points

• Identify gaps in the current experience

• Discover patterns across fitness app experiences

• Understand user pain points

• Identify gaps in the current experience

• Discover patterns across fitness app experiences

Method

Method

How I coded the reviews

⌄

I read all 100 reviews first, then used Claude for keyword-based theme coding. The first pass produced false positives (“about” matching “Abo”), so I added word boundaries and checked every flagged result against the original review text.

Reviews

Reviews

100

100

corrected

corrected

43→35

43→35

after removing false matches

after removing false matches

Top Theme

Top Theme

35%

35%

Occupancy removed

Occupancy removed

35%

35%

Confusing UI/navigation

Confusing UI/navigation

13%

13%

App crashes/bugs

App crashes/bugs

11%

11%

Login/account access

Login/account access

9%

9%

Review highlights

26 Mar · AppStore User

Confusing and unnecessary

Unfortunately, the app is very confusing: too many menus, and it’s easy to get lost. Plus, the promised occupancy data isn’t displayed either…

Occupancy removed

6 Jul · AppStore User

Make the app useful again

Why did they remove two essential items from the app that was the occupation and the training guide?

Occupancy removed

24 Aug · AppStore User

Occupancy rate

They removed the occupancy rate function, which was the only useful and unique function of this app

Occupancy removed

24 Aug · AppStore User
Occupancy rate
They removed the occupancy rate function, which was the only useful and unique function of this app
Occupancy removed
6 Jul · AppStore User
Make the app useful again
Why did they remove two essential items from the app that was the occupation and the training guide?
Occupancy removed
26 Mar · AppStore User
Confusing and unnecessary
Unfortunately, the app is very confusing: too many menus, and it's easy to get lost. Plus, the promised occupancy data isn't displayed either...
Occupancy removed
Drag a card away
24 Aug · AppStore User
Occupancy rate
They removed the occupancy rate function, which was the only useful and unique function of this app
Occupancy removed
6 Jul · AppStore User
Make the app useful again
Why did they remove two essential items from the app that was the occupation and the training guide?
Occupancy removed
26 Mar · AppStore User
Confusing and unnecessary
Unfortunately, the app is very confusing: too many menus, and it's easy to get lost. Plus, the promised occupancy data isn't displayed either...
Occupancy removed
Drag a card away

Review highlights

Comparative &

pattern analysis

Alongside direct competitors, apps not in the fitness category were reviewed for how they solved individual problems well. A search across what worked and what didn’t.

Alongside direct competitors, apps not in the fitness category were reviewed for how they solved individual problems well. A search across what worked and what didn’t.

Direct competitor

High5 Gym

Navigation, booking

No live occupancy. Booking buried two levels deep.

Direct competitor

McFit

General app functions

No live occupancy. Entry code requires manual lookup.

Adjacent

Strava

Onboarding, goals

Goal selection before account creation.

Adjacent

Nike Training Club

Personalization

Shows a tailored result before asking to register.

Cross-industry

SBB Ticket App

QR scanning flow

Intuitive navigation. Scan reachable in one tap.

Cross-industry

Swica

Account verification

Clear step feedback during identity checks.

Adjacent
Strava
Goal selection before account creation.
Onboarding, goals
Direct competitor
McFit
No live occupancy. Entry code requires manual lookup.
General app functions
Direct competitor
High5 Gym
No live occupancy. Booking buried two levels deep.
Navigation, booking
Drag a card away
Adjacent
Strava
Goal selection before account creation.
Onboarding, goals
Direct competitor
McFit
No live occupancy. Entry code requires manual lookup.
General app functions
Direct competitor
High5 Gym
No live occupancy. Booking buried two levels deep.
Navigation, booking
Drag a card away

Limitations: n=100, Apple App Store only. That makes it a self-selecting sample that skews toward complaints. No access to PureGym’s support tickets or churn data.

Limitations: n=100, Apple App Store only. That makes it a self-selecting sample that skews toward complaints. No access to PureGym’s support tickets or churn data.

Limitations: n=100,

Apple App Store only. That makes it a self-selecting sample that skews toward complaints. No access to PureGym’s support tickets or churn data.

Insight & design principles

Three findings, each turned into a rule the design had to obey. Each is written so it can be broken. A principle that can’t be violated isn’t doing any work.

Three findings, each turned into a rule the design had to obey. Each is written so it can be broken. A principle that can’t be violated isn’t doing any work.

01. Answer the question before the app opens

⌄

Occupancy is checked before leaving the house, not on arrival. A pre-decision behind a tap gets checked once, then never again. It belongs on the first screen.

02. The most frequent action gets the shortest path

⌄

Check-in happens every visit; everything else occasionally. Frequency, not importance, decides what sits in reach. Scanning moved to a raised centre button at thumb height.

03. Show the value before asking for the commitment

⌄

Personalisation data now comes first and pays off immediately with a matched class, so the registration ask arrives only after the value has been shown.

UX process

The occupancy screen: from a number to an answer

UX process

The occupancy screen: from a number to an answer

Three passes. Each one cut something that looked informative but didn’t help anyone decide.

Three passes. Each one cut something that looked informative but didn’t help anyone decide.

First version. Everything at once: ring, full-day chart, best times, breakdown by area. All accurate, none of it prioritised.

Second version. Grouped into cards, with a plain-language reading of the number. The per-area breakdown was cut: no per-zone sensors exist, so it couldn’t be honest.

Final version. One job per card. The reading sits beside the number, the best window comes with a reason, and a last-updated line makes it actionable.

First
Second
Final
First version. Everything at once: ring, full-day chart, best times, breakdown by area. All accurate, none of it prioritised.

First version. Everything at once: ring, full-day chart, best times, breakdown by area. All accurate, none of it prioritised.

Tap for the next version

Onboarding sequencing

Personalization data is collected before the registration ask, and its value, a matched class recommendation, is shown immediately after. This reorders the typical "register first, personalize later" pattern: users see what their data bought them before being asked to commit.

Personalization data is collected before the registration ask, and its value, a matched class recommendation, is shown immediately after. This reorders the typical "register first, personalize later" pattern: users see what their data bought them before being asked to commit.

Login/Register

→

→

Choose 3 Goals

→

→

Fitness level

→

→

see your match

→

→

Create account

Final solution

Three changes: occupancy where the decision gets made, check-in where the thumb already is, and onboarding that sets expectations before the first visit.

Three changes: occupancy where the decision gets made, check-in where the thumb already is, and onboarding that sets expectations before the first visit.

Home screen: occupancy card

The answer arrives without being asked for. No tab, no tap, no menu. The card is the first thing on the home screen, because occupancy gets checked before leaving the house, and anything that costs a tap is something a member checks once and then stops checking.

Live tab: the full picture

The card answers “now”; the Live tab answers “when”. Best time to go, today against yesterday, and a timestamp so the number can be trusted. The card was never meant to replace this screen. It removes the need to open it for the common case.

Live tab
The answer arrives without being asked for. No tab, no tap, no menu. The card is the first thing on the home screen, because occupancy gets checked before leaving the house, and anything that costs a tap is something a member checks once and then stops checking.

Occupancy card states

The card has to answer “should I go now” even when there is no number to give. Four states, so the answer is never a blank space.

The card has to answer “should I go now” even when there is no number to give. Four states, so the answer is never a blank space.

Gym Entry

Check-in is the most frequent thing a member does in the app, and it sat behind a menu. Swica’s insurance app puts the equivalent action in a raised centre button at thumb height, reachable from anywhere. I adopted the pattern directly. It solved a problem I’d otherwise have solved worse.

Check-in is the most frequent thing a member does in the app, and it sat behind a menu. Swica’s insurance app puts the equivalent action in a raised centre button at thumb height, reachable from anywhere. I adopted the pattern directly. It solved a problem I’d otherwise have solved worse.

Onboarding

Onboarding wasn't a review theme. It came from the comparative analysis, where Strava's overloaded flow and Nike Training Club's more fundamentals-first approach showed both ends of the range.

Onboarding wasn't a review theme. It came from the comparative analysis, where Strava's overloaded flow and Nike Training Club's more fundamentals-first approach showed both ends of the range.

Login/Register

Choose 3 Goals

Fitness level

see your match

Create account

Expected impact

Nothing here shipped, so nothing here is measured.

What follows is what I’d measure, and what would prove me wrong. One baseline comes from my own research; the other two would need PureGym’s analytics.

Occupancy

Baseline: 35% of negative reviews cite occupancy; rating 1.63/5.

Prediction: complaints drop below 10% and pre-visit opens rise.

Proved wrong if complaints persist after the feature returns.

Reviews citing occupancy: 35% → under 10%

Proved wrong if they persist after the feature returns.

QR/Entry

Baseline: none. Entry support volume and time-to-scan are PureGym’s data.

Prediction: fewer entry contacts, faster average scan.

Proved wrong if scan time stays flat.

Entry support contacts: no baseline → fewer, with faster scans

Proved wrong if scan time stays flat.

Onboarding

Baseline: none. Registration completion is PureGym’s data.

Prediction: completion rises, since value is shown before the ask.

Proved wrong if completion stays flat or drops.

Registration completion: no baseline → higher

Proved wrong if it stays flat or drops.

Reflection

The strongest input was treating 100 App Store reviews as qualitative data rather than a pile of complaints, and tightening the coding method once the first pass overstated the findings. If scope allowed more work, app crashes and stability (11% of reviews) would be the next priority.

What I'd do differently

⌄

• Moderated usability testing, not only review-mining. • Google Play reviews next to the App Store, for a less self-selecting sample. • PureGym's changelog, to confirm rather than infer the removal timeline.

Closing

A missing feature turned out to be a measurable business problem, not a complaint to be managed. That reframe is the part of this project I'd carry into the next one.

A missing feature turned out to be a measurable business problem, not a complaint to be managed. That reframe is the part of this project I’d carry into the next one.

What it can’t do is close the loop: every number under Expected impact is a prediction. The work I want next is where the change ships and the metric moves, or doesn’t.

Next case study

Usability tests on six car rental websites, 143 observations clustered into 11 themes, and a booking flow redesigned around one rule: the price you see is the price you pay, deposit included.

Login/Register

Choose 3 Goals

Fitness level

see your match

Create account

Welcome
Goals
Level
Plan
Register
Welcome