ChampX Digital
Studio · Ras Al Khaimah · Established 2014
ChampX Digital
✱ Case study № 042024 · 14 weeks · Dubai · UAE

A trainer marketplace where three taps got you a session.

17 disciplines, 500+ vetted trainers, three emirates. We rebuilt the booking funnel around the question users actually ask: who's free this Saturday near me?

fitlov.com
Fitlov — desktop walkthrough
Desktop
Fitlov — mobile booking flow
Mobile
Mobile · fitlov.com
Client
Fitlov
Sector
Fitness · Booking
Engagement
Discovery → Build → Launch · App + Web
Year
2024

✱ § 01 · The brief

What they actually needed.

Fitlov runs an in-home personal training marketplace across Dubai, Abu Dhabi, and Sharjah. Sessions start at AED 199. Disciplines run from boxing and MMA to yoga, pre-natal, post-injury rehab, and reiki — 17 in total. Trainers manage their own availability via the app; clients book through the website or the app.

The old funnel asked the user to choose discipline, then emirate, then language, then date — four screens before a single trainer card showed up. Mobile traffic, the bulk of sessions, dropped 67% before reaching trainer profiles. The trainers were the product, and they were three taps away from being seen.

We have 500 trainers. Customers should see them before we ask them what they want.
Founder, Fitlov

✱ § 02 · Our approach

Three bets, in order.

01

Surface trainers first, filter second.

Trainer cards on the landing page. Discipline + emirate as toggle pills above the grid. Filtering refines the visible set — it never blocks the page from rendering.

02

Three-tap booking on mobile.

Trainer card → date/time slot → confirm. The trainer detail (bio, certifications, reviews) opens as a sheet over the calendar — never a separate page that loses the user's place.

03

Trainer-side scheduling on a phone.

Trainers update availability from a mobile-native React Native app. Cancel-and-reschedule in two taps. No laptop ever required — Fitlov's trainers don't carry one.

✱ § 03 · Process · 14 weeks

From kickoff to shipped.

Wk 1–2

Discovery + customer interviews

Twelve customer interviews — 8 buyers, 4 trainers. Heatmaps on the existing funnel. Identified the pre-trainer drop-off as the single largest leak.

Wk 3–5

IA + design

Mapped 17 discipline taxonomy down to 6 parent categories with a 'see all' expand. Designed the trainer card pattern, the booking sheet, and the trainer-side scheduler.

Wk 6–10

Build · web + app

Next.js for the public marketplace, React Native for the trainer scheduler, Cal.com for the availability engine, Stripe for payments. Soft-launch in Dubai only at end of week 9.

Wk 11–12

Soft launch + measure

Dubai-only traffic for two weeks. Watched the booking-completion ratio per discipline, noticed that boxing/MMA trainers had 3x the inquiry rate but lower availability — added an 'request a time' fallback.

Wk 13–14

Full UAE cutover + trainer migration

Abu Dhabi and Sharjah live. Migrated 500+ trainer profiles from the old system, stripped duplicate listings, re-ran availability backfill.

✱ § 04 · Gallery · key screens

Selected screens.

Fitlov on desktop
Fitlov on mobile

✱ § 05 · Results · measured 6 months post-launch

What changed, in numbers.

+312%
Bookings

YoY, 6 months post-launch

−73%
Pre-trainer drop-off

67% mobile drop → 18%

38%
Repeat-trainer bookings

Up from 19% baseline

4.8★
Avg post-session rating

First 6 months, n=4,200

✱ § 07 · In their words

ChampX rebuilt the funnel around our trainers, not our taxonomy. Customers now see who's free before they're asked what they want.

Founder

Fitlov · Fitlov

✱ § 08 · Tech stack

What's running.

Marketplace
Next.js · Tailwind
Trainer app
React Native · Expo
Scheduling
Cal.com (self-hosted)
Payments
Stripe · Apple Pay · Tabby
Communications
WhatsApp Business API · Resend
Hosting
Vercel · AWS (app backend)

✱ § 09 · Team

Who built it.

Affan Manzoor
Project lead
ChampX design
Marketplace + app UI
ChampX engineering
Web + React Native
ChampX ops
Trainer migration + onboarding

✱ § 10 · Honesty section

What we’d do differently.

  1. 01 · Trainers don't update availability without a nudge

    Assumed trainers would keep calendars current. They don't. Added a daily availability nudge via WhatsApp template — completion went from 31% to 78%.

  2. 02 · 40-language filter overwhelmed the picker

    Listed every language a trainer spoke. Most users don't speak 38 of them. Collapsed to a search-as-you-type with the user's profile language pre-checked.

  3. 03 · Saved-trainer favourites should have shipped in v1

    Repeat customers re-searched for the same trainer every week. A 'my trainers' shortcut would have lifted repeat-rate weeks earlier — added in v2.

Have a stuck number you’d like to move?

Start a project →