Build the tool I would keep using.
Fast shorthand logging and video review came first. The product began inside my own training routine.
Independent product · iOS · Live
Chalky turns what an athlete actually did into a clear next decision, while keeping the log fast and every recommendation inspectable, editable, and optional.
From side project to product
I was not trying to start with a platform. I wanted a quicker way to log my own training and a practical way to review my form from video. I built both for myself, used them between sessions, and kept finding the same missing handoff: the record was useful, but it still left the next decision to me.
That repeated use changed the scope. Logging and Form Check were not isolated features. Together, they could help answer what happened, what mattered, and what to do next. That was when I decided to turn Chalky into a product.
Fast shorthand logging and video review came first. The product began inside my own training routine.
Continued use exposed the real job: connect recorded work to a trustworthy next action without adding gym admin.
I mapped user jobs, audited competing flows, analyzed logging friction and trust failures, and tested early language and interactions with people who train.
I rebuilt the information architecture, core flows, state model, visual system, and recovery paths before taking the new product through TestFlight and launch.
01 · The problem
I had months of useful training data in Notes: shorthand, loads, reps, energy, pain, and context. The information was there. The next decision was not.
Most strength products solve this by forcing every session into a rigid form. That creates clean data at the cost of attention. Logging becomes admin.
I saw a different opening: preserve the speed and flexibility of notes, then add structure only when it earns its place.
02 · User needs
When I finish a session, let me record it in my own shorthand without turning training into data entry.
When I look back, show me the pattern that matters instead of another dashboard I have to interpret.
When something should change, give me one specific next move and let me accept, edit, or reject it.
03 · Competitive analysis
Strong centers fast logging. Hevy pairs logging with progress and social motivation. Fitbod centers adaptive programming. Chalky focuses on making the path from recorded work to the next decision visible and controllable.
| Product | Center of gravity | What I took from it |
|---|---|---|
| Strong ↗ | Fast, structured workout tracking | Logging speed is a feature. Coaching cannot slow it down. |
| Hevy ↗ | Logging, progress, and social motivation | History can motivate through a clear next action without requiring a social feed. |
| Fitbod ↗ | Generated, adaptive programming | Adaptation alone is not the difference. Its reason and override have to stay legible. |
| Chalky | Recorded work → inference → proposed change → athlete choice | Design the loop so the athlete can inspect each handoff and keep control. |
The product loop
04 · Product and UI
Every screen below is the product: the same interface, hierarchy, and states people use in Chalky.
A · Capture
The Logbook is the center of the product. A day can begin as shorthand and become editable sets without erasing the original record.
B · Understand
Stats is organized around training questions: balance, activity, recovery, and consistency. Low-signal periods do not pretend to be conclusions.
C · Adapt
Chalky can build a plan, prepare today’s session, and propose changes from observed behavior. It never silently rewrites the athlete’s plan.
D · Validate
Form Check separates what worked, what needs attention, and what to try next. Scores sit beside the movement evidence instead of replacing it.
05 · Product decisions
Freeform notes and structured sets coexist. Parsing can help, but the original entry stays visible and every result stays editable.
Cost: more reconciliation than a form-only logger.
Plan and load changes arrive as proposals. The athlete can apply, edit, skip, or undo, and Chalky records that response.
Cost: more product states. Benefit: the plan remains theirs.
A completed log writes locally first. Sync retries later inside account-scoped boundaries instead of blocking the workout.
Cost: conflict and deletion logic instead of a simpler online-only flow.
Generated output passes typed validation and product rules before it reaches the interface. Low confidence and failures stay visible.
Cost: sometimes showing no answer instead of a polished guess.
06 · System design
Logging, account state, sync, subscriptions, and generated coaching fail in different ways. Their boundaries make those failures easier to contain and recover from.
Conceptual model. Select a node to inspect its responsibility.
Inputs become stable product state through typed contracts, validation, and deterministic rules.
Prompts, thresholds, schemas, and private coaching logic are intentionally omitted.
This is a product-level map, not an implementation diagram. It shows responsibility and trust boundaries without exposing private coaching logic.
Logbook, Coach, Stats, Form Check, onboarding, and subscriptions keep their views, models, and services together. Shared code stays limited to real cross-feature needs.
Long-lived state changes pass through isolated writers. That gives sync, background work, and the interface one place to enforce ordering.
Typed contracts, validation, deterministic rules, and explicit confirmation sit between generated output and user data.
Account-scoped work, caches, observers, and notifications shut down before the next identity becomes active.
The same boundary appears throughout the app: generated systems can extract and explain, while ordinary software owns identity, persistence, validation, and consequential state.
07 · Design system
In the gym, attention is scarce. The interface keeps the next action obvious, data stable, and state changes easy to read.
#38D1AD#121212#2A2A2A#A6A6A6It marks readiness, focus, completion, and the next primary action. It never becomes wallpaper.
Transitions show what changed. Reduced Motion communicates the same information without choreography.
Monospaced digits, explicit units, and stable layouts keep live data readable under load.
08 · Launch and learning
More than 60 people tested Chalky through TestFlight before launch. Their use exposed defaults that were too confident, labels that were unclear, and recovery paths that were missing. I used those sessions to tighten onboarding, logging language, and failure states.
Chalky is now live on the App Store with real users. The current user count stays private; the product does not.
09 · Reflection
It produced a better logging experience and a harder data problem. The extra parsing, validation, and editing work was worth keeping attention on the workout.
Extraction and explanation can be probabilistic. Identity, persistence, adherence, and user-approved changes should not be.
Cross-device sync changed the product model as well as the backend. iPhone and Apple Watch rebuild the same session instead of owning competing copies.
Live product
The product is shipping, evolving, and used by real athletes.
Open Chalky↗