Bench velocity holding.
Top-set RPE on bench held at 8 across three working sessions this week, with the working weight up 5 lb from the previous block average. Pattern looks like clean progression, not grinding.
Once a week, flexRep reads your training data and produces a short summary of what it sees. The model runs locally — Foundation Models on supported devices, a rule-based engine elsewhere. Nothing about your training leaves your phone. Ever.
The voice is calm coach. The posture is observation, never prescription. The privacy is architectural.
Each one is a different type of insight, in the voice the engine actually ships. No 'great job!' No hype. The numbers are the work.
Top-set RPE on bench held at 8 across three working sessions this week, with the working weight up 5 lb from the previous block average. Pattern looks like clean progression, not grinding.
Three push days this week vs. two in previous weeks. Pull volume held flat; horizontal pull may want a top-up if push intensity continues at this level.
Working RPE has held stable at 7.5–8. This is a flag, not a verdict. Common causes: a recent deload-adjacent rest week, or accumulated fatigue that hasn't been formally addressed.
Two travel sessions this month at "Hotel — March trip" hit 6% lower working weights with the same RPE. Could be the bar weight, the rack height, or both. Worth noting if you travel again.
Every weekly insight falls into one of four shapes. Each one has a different threshold for shipping — and each one carries its label on the card so you know which kind of statement you're reading.
A noting of what your data shows. No verdict.
A trend across multiple sessions or muscle groups.
Something worth your attention — a stall, a volume jump, a context shift.
A characterization of your training shape — what your glyph and waveform are doing.
There's no part of this where your training data crosses an internet connection. The model reads, infers, and writes — all locally.
The insight engine reads only your local SwiftData store. No upload. No syncing your training to a remote model. No server-side analysis. Nothing leaves your phone.
When your device supports it, Apple's Foundation Models framework runs locally to generate the prose. The model sees your data; the network does not.
On devices without Foundation Models support, a curated rule-based engine produces the same shape of insight. The voice is consistent. The privacy posture is identical.
Insights describe what your data shows. They do not tell you what to do about it. "Bench e1RM unchanged for three weeks" is a sentence we ship. "You should deload" is not.
The contrast isn't a marketing line — it's an architectural choice with consequences for what can leak, what can be sold, and what can be subpoenaed.
Each of these is a feature in some fitness app. None of them are in flexRep's insights — and the reasons are visible enough that you can disagree with our choice if you want to.
It will flag a stall. The deload call is yours.
It observes. It does not prescribe blocks.
We have e1RM for that. The model doesn't guess.
No social hooks. The insights are for you.
No "you're crushing it." No exclamation marks.
A sample-size floor before any pattern claim.
Every generated insight goes into the JSON export alongside its underlying signal data. You can audit the engine — feed the same data into your own LLM and see if it draws the same conclusions. You can also just delete the insights you don't agree with. They're yours either way.
One observation a week. Calm. Sourced from your own data. Generated on your own device.