Calm
Never hypes. Never panics. Acknowledges a PR with one measured word. Acknowledges a missed session with none.
flexRep speaks in one voice — calm coach. Never hypes. Never panics. Acknowledges a PR with one measured word and a missed session with none. The companion lives in the corner of the screen, says what needs to be said, and otherwise gets out of your way.
What a typical workout app says, and what flexRep says instead. The right column is shorter. On purpose.
PERSONAL RECORD! The gym just witnessed greatness!
New PR. Nice.
Where have you been, champion? Get back in there!
10 days since last session.
LET'S GO! Time to CRUSH this workout!
First one down.
You've been stuck — time to deload!
Bench e1RM unchanged for three weeks.
Whoops! Please enter a valid weight before logging.
Air rep.
INCREDIBLE ENDURANCE! You're a beast!
The background gradient slows a little. No words.
Every piece of copy that ships in flexRep — every quip, every label, every confirmation — passes the same four-attribute check. Empty states included.
Never hypes. Never panics. Acknowledges a PR with one measured word. Acknowledges a missed session with none.
Real units. Real formulas. Real terminology — RPE, e1RM, RIR, fractional sets. Doesn't round down complexity.
Speaks like iOS — concise, purposeful, not verbose. Respects taps over words. Uses HIG-standard copy patterns.
Has a point of view ("your bench has stalled") but never tells you what to do about it. Observation, not directive.
The beta ships a single calm-coach voice. These four tone presets — changing the cadence and the dryness, never the four attributes — are a planned option, not in the current build. They show the range we’re building toward.
Measured. Restrained. The default for a reason.
“New PR. Nice.”
“On rhythm.”
“Logged.”
Says almost nothing. Silence is the point.
“Noted.”
“Continue.”
— silence —
Workmanlike. A little dry by set thirty.
“That's new territory.”
“Set seven. Stack rising.”
“Done.”
Calls out the numbers as they happen. For the data-curious.
“Above previous e1RM by 4.2%.”
“RPE drift: stable.”
“Volume +8% over four-week average.”
The companion lives in surfaces you choose to look at. It never wakes your phone.
A status line under the rest timer. One sentence. Replaced when something new is worth saying.
The expanded view carries the same line. Compact view stays a clock.
Live Activity privacy mode redacts the line entirely on shared screens. Rest timer keeps ticking.
A single closing line on the summary sheet. Replaces a paragraph nobody reads.
Every empty chart, every "no data yet" screen carries the same voice. Even the ones you’ll never see.
No marketing pushes, no streak nags, no "are you still there?" prompts. The only notifications are ones you opt into — the rest-timer alert, an optional weekly digest, and an injury-load (ACWR) heads-up. Silence is the default.
One toggle. The companion stops talking. The bar still weighs what it weighs.
Quiet Mode kills the companion voice and the Live Activity quips. It does not kill the rest timer status, the set count, the PR territory glow, or the haptics. The bones of the session remain — the chatter goes.
For lifters who do their own internal coaching, this is the only mode that makes sense. For everyone else, it’s a sometimes-mode for the days when even one measured word is too many.
A working list of phrasings we've considered and refused. Some for the attributes. Some because they don't belong in a tool you use on set 47. One because nobody needs to be asked how their workout made them feel.
The companion’s lines appear above the rest timer in the app, and on the Lock Screen via Live Activity. They’re never push notifications. They never wake your phone. They sit where they sit, and they wait for you to glance.
Live Activity privacy mode redacts the line entirely on shared screens — the rest timer keeps ticking, the exercise name disappears, and the quip goes with it.
Either way, you’ll never be hyped, prescribed to, or asked how the workout made you feel.