Arithmetic first, then the model

Povver started as a training app. The coach came later. The boring work had to be right first: hard sets per muscle, an estimated 1RM per lift, your volume against the published ranges, and 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. It reads the shape of a training block, weighs a stalled lift against a week you cut short and explains 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.

Logged
Raw sets

Weight, reps, RIR, done or not. Thousands of rows.

Arithmetic
Computed facts

Volume per muscle, e1RM trends, where you sit against your landmarks, your load against your own baseline. Same result every run, and you can check it.

Language model
Interpretation

Reads the numbers, asks for more detail where it matters and proposes a change.

Written back
Your next session

The template updates in the app.

How I got here

In 2024 I tried to get coached by a chat window. It nearly worked.

Every week I did the same thing: I exported the watch data and the training log, added what the scale said, pasted it all into a chat, explained the plan and asked 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 end up as the memory, and the memory was the part I wanted to hand over.

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 model was doing the adding up.

Povver reads training only. I still read the watch and the scale next to it in Claude, over MCP (the example is in the docs).

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.

Get in touch

If the app gets something wrong on your training, that is the most useful message I can get. Arguments about programming are welcome too.

Your next session
is already planned.

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