Case Study · Kyool · 2025–Present
Kyool: Designing Small-Group Fitness That Rewards Showing Up
As Principal UX Designer, I own HCD strategy and end-to-end UX for Kyool, a mobile and web app where 2–6 friends form a FAB and keep each other consistent. Kyool is live on the App Store and Google Play, and we keep refining it with each release.
My Role
- Role: Principal UX Designer (startup), from discovery through design validation and release
- Platforms: iOS (App Store), Android (Google Play), responsive web
- Work: journeys, IA, task flows, Figma prototypes, BI-style progress dashboards, interaction specs, and developer validation of accessible patterns and privacy flows
The Challenge
Most fitness apps reward individual performance, and streaks punish one bad day. Kyool’s idea is that people stay consistent when a few friends are counting on them. That raises hard design questions. How do you make group commitment feel supportive instead of like surveillance? What counts as success for a person versus a team? And how do you protect motivation when life gets in the way?
Key Design Decisions
1. FAB: a small group with a clear starting line
- Five sizes, each named for the group dynamic it creates: Duo (2), Triad (3), Core (4), Apex (5), and Zenith (6). An early “Quad” was renamed Core.
- A FAB starts in a forming state, and the shared streak begins only once it becomes active.
- Opening an invite never joins you automatically. We treated silently adding someone to a group that relies on them as a real harm, so I designed joining to always take an explicit tap.
- We replaced retyping an 8-character invite code with deep links, because every character was a place to give up.


2. Show Up vs. FAB Star: separating “I” from “we”
- Show Up = I kept my promise. The personal streak counts every expected day you took part, whether or not you hit the goal. Partial progress counts and rest days never break it, so a reset really means something.
- FAB Star = we kept our promise. A team earns a Star only when every required member completes the day.
- The old single “day streak” mixed “showed up and finished” with “showed up and fell short”, and two conflicting Star definitions had made it into production. We retired the personal “Star Streak”, because a teammate could break it while you did everything right.
- Stars Earned is an all-time total that never goes down. Each Star keeps the roster at the moment it was earned, so people who join later can’t take credit and people who leave keep theirs.


3. Lifebuoy: forgiveness without encouraging skipping
- A Lifebuoy repairs a missed scheduled day so one bad day doesn’t erase weeks of effort. A protected day keeps the Show Up streak alive but never earns a FAB Star.
- I framed the copy as protection (“Your Lifebuoy saved your streak!”) and set a design rule that no copy anywhere may suggest skipping a workout.
- Under our current policy, free users get one Lifebuoy, which refills 90 days after use and is based on server time, so reinstalling the app can’t game it. Downgrading never takes banked Lifebuoys away.
4. Sparks: lightweight peer encouragement
- One-tap Sparks such as “Beast mode”, “Certified mover”, and “Built different” give teammates a fast, positive way to support each other, individually or as a team, with a light haptic tap on send. Funny, Roast, and Short tone tabs let people match the group’s style.
- We grew the set from 6 to 12 Quick Sparks, plus short custom Sparks. Free-text Sparks come with report, block, and text filtering, so encouragement can’t become a channel for harm.

5. Onboarding: from 13 screens to a 3-page story
- I redesigned onboarding, cutting a 13-screen flow to at most four screens, then to a three-page story (“Fitness is better with friends” → “Meet your FAB” → “Start with just one friend”) with Skip on every page. Invited users skip it entirely.
- I rewrote copy that framed the product as catching people out (“Miss a day — your team knows”) into supportive language.
- No cold permission prompts. Health data is requested at the first workout, location only for GPS activities (approximate location works), and notifications after a meaningful moment, with a 14-day back-off after “Not now”.
- We kept analytics off by default. The opt-in uses two equal buttons with nothing preselected.
6. AI/ML-informed and data-driven UX
- Rule-based first, AI-ready by design: the FAB impact line turns team totals into one plain-language comparison in each reader’s own units, and shows nothing rather than a weak line when no rule fits. The same interface is built to be backed later by a Gemini model, cached per FAB per week so the model isn’t called on every open, and falling back to the rule-based copy whenever AI is unavailable.
- AI Insights (in progress): planned for Kyool Plus and marked “coming soon” in the app: a weekly AI recap, streak-risk alerts, personalized recommendations, and pattern detection across FABs.
- BI-style progress views that turn activity, goal, streak, and group-performance data into clear metrics, trends, and a single next action.
- Privacy first: analytics are opt-in and off by default, and the consent choice uses two equal buttons with nothing preselected.
Journey Map: New Member to First FAB Star
| Stage | User goal | Key concern | Design response |
|---|---|---|---|
| Discover | Understand why a group helps | “Is this another app that nags me?” | 3-page story, Skip on every page, supportive tone |
| Join or create | Get in without friction | “Did I just join something?” | Deep-link invites; explicit “Join FAB” tap |
| Form the FAB | Get friends committed | “When does it start?” | Forming state; the shared streak starts once the FAB is active |
| Show up daily | Log activity, see the team | “Who’s done today?” | FAB Flow dashboard; Sparks; just-in-time permissions |
| Recover | Survive a missed day | “I lost my streak?” | Lifebuoy protects the Show Up streak |
| Celebrate | Feel the team win | “Did we all do it?” | FAB Star for team completion; Stars Earned total |
Concept · Design exploration
Next: Explainable Show-Up Prediction
A design concept for Kyool’s planned “smart streak risk alerts.” Machine learning estimates whether a member is likely to show up today, privately and only with opt-in. UX turns it into a plain-language reason and a choice: a quiet “still time today” card, an ask-first reminder, and a next-morning Lifebuoy explanation that protects the streak without encouraging skipping.
Outcomes
- Shipped: live on the App Store and Google Play, with a web experience alongside.
- Iterated in production: we cut onboarding from 13 screens to a 3-page story, split one ambiguous streak into Show Up and FAB Stars, reconciled conflicting Star rules, replaced invite codes with deep links, grew Sparks from 6 to 12 with moderation, and adopted a fairer Lifebuoy refill policy.
- Design lessons: copy that framed accountability as exposure told new users the product existed to catch them out, so it was rewritten around support. A streak should survive normal life so that a reset means something. Team rewards need a lasting record of who earned them.
- Quality: design rules are written as documented test cases, and key screens are checked in dark mode and at the largest accessibility text sizes.
Why It Matters for Enterprise Work
The same HCD discipline applies to mission-critical systems: define unambiguous rules, design for trust and privacy, turn dense data into a clear next action, and make accessibility a release requirement rather than a later fix.




















