Features

One figure, built from what you actually did

Your avatar is a mirror, not a costume. Its body comes from seven attributes across training, nutrition, and health, and a short-window layer of sleep, recovery, and readiness that can only ever add polish, never take it away. Nothing rendered is invented, and nothing you skip gets held against you.

Seven attributes, three modules

Strength and Size come from Training. Fuel and Nourishment come from Nutrition. Endurance, Recovery, and Resilience come from Health. Each one is scored from a signal MuscleBuddy already computes, banded on the same tier ladder your muscle and nutrition ranks use, and grouped under the module that moves it so the character sheet reads as an explanation rather than seven unrelated numbers.

Open any attribute and it expands into the inputs behind it: Strength reads what you can move on the big lifts relative to your bodyweight, age, and sex. Size reads tracked training volume per muscle against what your plan prescribes. Resilience reads the bloodwork markers you have actually tested against their reference ranges. If you have not logged anything for an attribute, it renders as a prompt telling you what would start it, never as a zero and never as a hole. A lifter with no bloodwork on file is not failing at Resilience; the app just has nothing to score yet.

Strength and Size move slowly on purpose. An empty training week is not treated as evidence either one dropped: Strength holds its last measured value until a real layoff shows up in your session logs, and Size only decays once your trailing volume falls below your own maintenance threshold, never during a deload, taper, or illness window the app itself prescribed.

Shape: a short-window layer that only ever adds

Underneath the slow attributes sits Shape: four channels, sleep debt, recovery, fullness, and readiness, read from the last one to two weeks and rendered as posture, a small amount of visual polish, and one line of copy. Shape can raise how the figure carries itself. It can never shrink a muscle or widen a waist, and it never touches the rank-derived body underneath, which stays the floor no matter what your week looked like.

Every channel decays toward no effect rather than toward a penalty, so a stale reading and a bad reading look identical: nothing. And when a channel's input was deliberately or physiologically changed, a prescribed deload, a diet break, travel across time zones, a luteal phase, it gets held rather than decayed, because "this doesn't count right now" is the honest read, not "this got worse." Every channel is also explainable in a card-mode text view: the same rows a screen reader announces, so nobody has to interpret a drawing to understand their own numbers.

Per-muscle readiness, and the ghost of your own plan

Each muscle shows one of three states, recovering, ready, or nothing at all, read from your training volume against your recovery signals. A muscle with no logged session in the window shows nothing rather than a false "100% recovered," and a muscle with an active pain flag is never marked ready no matter what the clock says.

Alongside your body stands a ghost: a translucent outline of the figure you would have if you fully executed your own current plan, never a theoretical maximum. It only projects targets you already committed to, your macro targets, your prescribed training volume, and it collapses into your real body as you close the gap. The space between the two is your optimization score: how much of your own current potential you're capturing right now. It's floored at published minimums specifically so cutting your training volume can never raise it. A disciplined beginner running an easy plan can sit near 100% while a strong lifter sleeping badly sits at 60%, which is why the score never appears on a leaderboard.

The room your buddy stands in

Your figure has a home. A shallow diorama of your gym sits on your profile, built from your own equipment list and furnished by tenure: lifetime sessions and distinct weeks trained grow it from a corner, to a garage, to a basement, to a warehouse. It never shrinks for a bad month, an injury, or a layoff, because your figure already reports how strong you are right now; the room reports that you've shown up for years, which nothing else on your profile says. Visitors see equipment as generic silhouettes and how long you've trained, never your gym's name, location, or exact gear, and one toggle turns the whole thing off.

Crossing a room tier, and reaching a new attribute tier, earns a milestone card: a before/after snapshot built from your own history, shareable on demand. A day with no snapshot on file shows an honest no-data marker rather than a guessed-at frame.

How it reads the rest of the system

The avatar doesn't own any data; it renders data the other modules already produce. Training feeds Strength, Size, and the per-muscle readiness diagram. Nutrition feeds Fuel, Nourishment, and part of Fullness. Health feeds Endurance, Recovery, Resilience, and the rest of Shape. Upkeep doesn't drive a body channel directly, its cadences run on longer clocks than a physiological signal, but a held Shape channel during a prescribed deload, a diet break, or travel is the app reading exactly the kind of protocol Upkeep tracks and refusing to punish you for following it. Change your training volume, log a panel, or hit your macros for a week, and the same figure moves, because it's reading the same numbers your ranks, your recap, and your coach's dashboard already read.

Frequently asked

Is any of this a guess or an AI-generated image?
No. Every attribute, channel, and ghost projection traces back to a rule reading your logged training, food, and health data. AI never touches the figure.
Can a bad week or a missed workout shrink my figure?
No. Shape, the short-window layer, can only add polish, never subtract it, and it never touches the rank-derived body. Slow attributes like Strength and Size hold steady through a normal gap and specifically do not decay during a prescribed deload, taper, or illness window.
What if I have no bloodwork or cardio logged?
The attribute that would read it, Resilience or Endurance, renders as a prompt showing what to log to start it. It never renders as a zero or a penalty; an attribute with nothing behind it simply drops out of your Overall score rather than dragging it down.
Who can see my figure and my gym room?
Attribute visibility follows the same per-pillar privacy settings you already control for training, nutrition, and health. The gym room strips your gym's name, location, and exact equipment down to generic silhouettes, and one toggle hides it from every viewer, coaches included.
What is the ghost outline next to my figure?
It's a projection of the body you'd have if you fully executed your own current plan, built only from targets you already set. It's never a hypothetical maximum and never promises a physiological outcome; it's a way to see how much of your own plan you're actually capturing.

See your training, nutrition, and health in one figure

Log a workout, a meal, or a check-in and your figure starts filling in from real data, not a template.