See it running: app walkthrough · engine explorer · source and technical report

Inspiration

I am a research master's student in Human Movement Sciences at VU Amsterdam. My specialization is the psychology of sport and performance. I am also a certified trainer, and I teach in a gym. I have built software for over a decade, some of it past 10 million downloads.

My research question, basically, is how much of effort is set by the body, and how much by what you tell yourself.

That question is why this app exists. More women are training in the gym than ever, and the apps they hand me were built around someone else. Hevy and Strong are excellent logs for people who already know what to do. Women's apps sell one trainer's program and skip the logging. Neither asks about the thing the women I train connect to most. Her month.

Women and the coaches who train them told me the same thing, again and again. Strength, energy, and mood move with her month. In a study of 6,812 exercising women, 86% reported tiredness around their period. A coach who trains women full time put it best. Gym fear fades as more women lift. The menstrual cycle does not.

The gym is also a place where you can be wrong in public. Wrong weight, wrong machine, wrong form. So the app removes the unknowns, one at a time.

I interview the coaches who train these women. And I am running a survey of women who lift, in their own words.

So I built Bloom to sell certainty. She should never wonder whether she is doing the right thing right now.

What it does

Bloom makes her gym plan, then walks her through it. Other apps ask her to adapt to them. Bloom adapts to her.

  • A short quiz builds a six-week plan. It works around her days, goals, and experience. Pick glutes, and the plan leans into them while still training everything. The six weeks build on each other, with an easier week built in.
  • It takes her month into account. Onboarding asks two questions. When her last period started, and her usual gap. That is the whole ask. It is not a period tracker, on purpose. Today shows a "Your month" card with what the research actually says.
  • Starting weight calibration. "What do I even start with?" is a top beginner fear. Bloom picks a safe first weight, then adjusts it with her over the first sessions.
  • Guided sessions, one exercise at a time. Weights, reps, and rest are pre-filled. Every move is shown from start to finish by a female demonstrator, with setup and form cues in plain language.
  • One tap on how it felt. Very easy, Easy, Just right, Hard, Too hard. No RPE/RIR like in traditional gym trackers for men. Those scales take learning, and they are not intuitive. She knows her body best, and every answer shapes her next set and her next session.
  • Life happens buttons. Machine taken? One tap swaps in a match for the same muscles. Only got 20 minutes? The session trims to what matters most. Low energy? Same session, lighter from here.
  • It welcomes her back. Come back after two weeks off, and Bloom quietly eases the weights back in. No broken streak, no guilt.
  • A recap to share with her coach or her friends after every workout.

How I built it

  • The research behind it. The engine's method, model and evaluation are written up as a technical report in the open repository.
  • Flutter, shipping on iOS and Android.
  • A deterministic training engine in pure Dart. It builds the plan, progresses it, and adapts each session from rules I wrote as a certified trainer, and it is covered by tests.
  • I build AI products for a living. I kept AI out of the coaching on purpose. Quiz answers select and shape structures I wrote. That makes the advice testable, explainable, and safe. It also works offline.
  • I collect her period data, and I deliberately sit on it. Two answers, stored privately. The plan does not change by phase yet, on purpose. The evidence for phase-based training is thinner than the marketing around it. This is my field of study, so I am doing the literature review first. The app says only what the research supports, and says so when it is thin. Humble beats confident and wrong.
  • Subscriptions with RevenueCat. She sees her full six-week plan first, then the paywall. $59.99 a year with a 7-day free trial, or $12.99 a month. Built with purchases_flutter, my own paywall screen, one premium entitlement, restore, and offer codes for testers and partner coaches. Purchases are tied to her private account.
  • Offline first. Gyms often have no connection. So everything lives on her phone and syncs to Supabase in the background.
  • Our own exercise visuals. A consistent female demonstrator, two positions per movement, across 40 exercises. I reviewed every image as a trainer, for neck position, camera angle, and range of motion, and regenerated the ones that were wrong.
  • The training rules are the real work. Progression, safe defaults, and comeback rules. I wrote them, then I pressure-tested them against the coaches I interviewed.

Challenges I ran into

  • Turning coaching intuition into rules. "Add a little next time" hides a dozen decisions. Reps or weight first. How much. What counts as evidence. What to do when she says nothing. My default everywhere. When unsure, hold.
  • Honoring the menstrual cycle without turning into a period tracker or a doctor. The easy build tracks everything and promises phase-perfect workouts. I wanted the opposite. Ask the least. Claim nothing medical. Because the research is still thin, finding the middle ground between too much and too little advice about her period was hard.
  • Compressing effort into one tap without losing what progression needs to know.
  • Weights that exist. Every suggestion has to match the real dumbbells and plates in her gym.
  • Tone is a feature. Praising her for showing up implies I expected her to fail. So the app handles the moment first, and teaches later.

Accomplishments that I'm proud of

  • A plan generator built with working coaches, from real practice.
  • A direction I validated in real life, with real women trainees and coachees.
  • A clear, coherent product philosophy I developed for this project. Every feature removes an unknown or adapts to her. Nothing ships that adds doubt, judgment, or guilt. It has already killed features that initially looked good.
  • The failure states are the best screens in the app. The taken machine. The short lunch break. The two-week comeback. Each one has a warm, designed path.

What I learned

I learned a lot by interviewing women's coaches, and even more by simply asking women who train. Friends, colleagues, other students. Here is what I learned:

  • The subject women usually connect to most is not the workout. It is their body's month. So I lead with it, and build everything else around it.
  • Learn her, do not lecture her. One coach put it best. Every woman is different, but not every period of the same woman is different. Her pattern is often stable and personal. A textbook four-phase curve is a starting guess, never the answer.
  • Contain first, teach later. When something goes wrong mid session, the fix comes first. The lesson waits for a calm moment. Advice right after a mistake is often not truly accepted.
  • In this case, deterministic beats generative. She wants the right number already filled in, not a chatty AI mid set.

What's next for Bloom

  • Improved menstrual-aware coaching. Most women are meaningfully affected every month. The no-show days cluster on day one and day two of the period, so those absences will never break a streak or ask for a reason. A four-phase estimate is only the cold start. The real system should learn her own pattern, and let today's energy overrule the calendar. This part of the app still needs a lot more thought, research, and development, which I'm excited to do soon.
  • Progress that means something. Photos, measurements, and an adherence-first progress tab.
  • Co-branded coach presets. "Emma's plan, adapted to you," built with partner instructors.
  • Shareable recap cards for her coach or her stories, in story format and with a coach view.
  • Plans that work around her running, yoga, or classes. The quiz already asks. The engine will use it once it knows which days they fall on.
  • Android, from the same codebase.
  • A web quiz funnel, and marketing content that reaches the women this was built for.

Built With

Share this project:

Updates

Submission history