Three exports and a chat window

Every week I did the same thing. Export the watch data. Export the training log. Add what the scale said. Paste it all into a chat, explain the plan and ask what to do next. The first answers were good.

Then it drifted. By about the fifth message it would contradict something I had pasted the week before, or describe a lift I had never done. The reasoning was fine. The old material had just fallen out of the window.

A model only knows what is in front of it right now, and that space is limited. A year of lifting is thousands of sets, before you add sleep, HRV and daily weight. It does not fit. So you paste a slice, the model fills the gaps with a guess, and every new chat starts from nothing. You become the memory. The memory was the part I wanted to hand over.

Why pasting more makes it worse

My first fix was to paste more. That made it worse. The window filled with raw rows, the oldest weeks dropped off first, and the numbers I cared about were being added up by a model that is bad at adding up.

Paste the raw history
Context window
2026-08-12 squat 120x8 rir1
2026-08-12 squat 120x8 rir1
2026-08-14 bench 92.5x6 rir1
2026-08-15 row 80x10 rir2
2026-08-17 sleep 6h12m hrv 41
Everything older falls out of the window

The model sees a slice and treats it as the whole story. Ask for weekly volume and it counts rows by hand, and gets a different answer each time.

Send the derived picture
Context window
Chest, weekly hard sets12 · in range
Shoulders4 · below MEV
Squat e1RM, 6-week slope+6.4%
Benchflat, 3 weeks
Session completion92%
Room left over. Drill into any line on request.

Eighteen months of training fits on a page, worked out the same way every time. The full history is still there when a question needs it.

So I built the app first

Povver started as a training app. The chat came later. The boring work had to be right first. Count hard sets per muscle. Track an estimated 1RM per lift. Compare your volume with the published ranges. Decide whether you have earned a heavier weight. That is arithmetic, and it should give the same answer every time.

A language model is bad at arithmetic and good at the part after it. Reading the shape of a training block. Weighing a stalled lift against a bad week of sleep. Explaining a decision in a sentence you can argue with.

So the app does the counting, and the model reads what the app counted. Both are open over MCP, the standard way to plug data into Claude and other assistants, so any assistant can read the summary, dig into single sets when it needs to, and write the change back into your routine.

Where each part does its job

The left half gives the same numbers every time. The right half uses judgement. The app never lets the model do the counting.

Logged
Raw sets

Weight, reps, RIR, done or not. Thousands of rows nobody should have to read.

Arithmetic
Computed facts

Volume per muscle, e1RM trends, where you sit against your landmarks, whether you are recovered. Same result every run, and you can check it.

Language model
Interpretation

Reads the numbers, asks for more detail where it matters, proposes one change and says why.

Written back
Your next session

The template updates in the app. Nothing to copy anywhere.

Seeing the whole picture

Training is one of three inputs. A Garmin watch covers the body: HRV, sleep, resting heart rate, morning readiness, training load, and food if you log it. A Withings scale covers weight and body composition every day. Both can be read over MCP, one through a community server, so all three show up in one place.

That matters because each signal on its own will mislead you. Here is a real week:

Tuesday Heavy lower session, finished at 21:40. Good session, all sets complete.
Overnight HRV 34 against a baseline of 58. Deep sleep down, resting heart rate up six beats.
Wednesday Weight up 1.4 kg overnight. Late meal, high sodium, training the evening before.
Thursday Bench comes in two reps short at the same weight as last week.
Read one at a time

Three problems. Getting fatter, sleeping badly, and a bench that has stalled. The obvious fixes: cut calories, take a deload, change the bench programme. All three would be wrong.

Read together

One problem. The late heavy session cost me the night's sleep, the weight is water, and I pushed the bench into a body that had not recovered. Train earlier. Change nothing else.

A good coach sees that in a glance, because they hold all of it in their head at once. That is exactly what the copy-paste loop could not do. No single window held enough to see that four events were one event.

That check runs on a schedule now, and most of the coaching work is automated.

Get in touch

If you run this loop yourself and something breaks, or the model gets a call wrong on your training, that is the most useful message I can get. Arguments about programming are welcome too.

Stop guessing.
Start training smarter.

14 days free, then €9.99/month or €79.99/year. Prices vary by region.

Start your 14-day free trial Download on the App Store