Kestivo Weekly #6

This is what beta is for.

A real beta case uncovered a planning issue, Planned vs Actual got clearer, and Kestivo is getting better at turning completed training into coaching context.

Beta learning A real athlete exposed a Roadmap edge case that my own testing had missed.

The fix worked without changing or repairing the athlete's profile.

Coaching context Completed training is moving from stored history toward prepared coaching state.

Load, physiology and execution analysis can increasingly be processed before a screen needs them.

Product direction Kestivo Web now exists in code, but remains deliberately separated from real athlete data.

The iOS product remains the main beta experience today.

01
Private beta

The beta found something I had not.

One beta athlete tried to create a Training Roadmap and hit a failure. The interesting part was that there was nothing wrong with their profile.

Their Bike FTP was simply unknown. That is a perfectly valid setup. Not every athlete knows their FTP, not everybody trains with power, and Kestivo is supposed to work in those cases too.

The problem turned out to be very specific: the iOS app and the backend represented that valid "FTP unknown" state slightly differently. Kestivo rejected something that should have been accepted.

Step 1Real beta profileBike FTP intentionally unknown.
Step 2Backend fixThe valid profile state became compatible end to end.
Step 3Retry succeededRoadmap first, then Weekly Plan, with no profile repair.

That last part mattered. I did not want to "fix" the athlete's data just to make the problem disappear. The app needed to understand the profile as it already existed.

Not the kind of beta result you put on a marketing poster. But exactly the kind of problem the beta needs to uncover.
02
Execution intelligence

Planned vs Actual is already getting clearer.

Last week I showed the first version of the new intensity comparison between what Kestivo prescribed and what the athlete actually did.

This week the focus was not on adding more data. It was on making the comparison easier to understand.

What the athlete sees

  • Planned duration
  • Performed duration
  • A clearer "What changed?" explanation
  • Paired planned and actual zone shares

What stays separate

  • Completion from intensity
  • Known comparison from unsupported evidence
  • Time below or above the comparable range
  • Facts from interpretation

A session can therefore be Completed while the intensity analysis says it was harder than planned, easier than planned, or mixed.

The goal is not to grade every workout. It is to understand enough about what happened to make the next coaching decision better.
03
Coaching pipeline

Training data is becoming coaching context.

A lot of this week's work happened underneath the interface.

Some analysis used to be calculated only when a particular screen was opened. Kestivo is gradually moving toward a different model:

Training happensGarmin or Apple Health provides the activity.
Kestivo processes itRelevant derived coaching state is prepared.
Context becomes currentLoad, physiology and execution analysis are available.
Coaching can reactFuture decisions can start from what actually happened.

The new processing foundation can prepare activity training load, daily training load, physiology and Planned vs Actual analysis after normal training ingestion.

This is important for where I want Kestivo to go. If Kestivo eventually needs to decide whether tomorrow's workout should stay, change or disappear, it cannot start understanding the athlete only when somebody opens a screen.

Completed training should become coaching context, not just something stored in a history list.
04
Daily experience

Home should catch up when your training changes.

Kestivo's Home screen keeps a saved snapshot so it can appear quickly. That is useful. What was less useful was that the screen could sometimes remain on an older state for too long after a workout had been completed or imported.

The updated behaviour keeps the fast initial display, but Kestivo now checks for fresh information whenever Home appears. If training changes while Home is already visible, it can refresh promptly as well.

Finish a workout, return to Home, and Kestivo should catch up without waiting for an old cache to expire.
05
Reliability

Some fixes you hopefully never notice.

Garmin activity duration

Kestivo now distinguishes actual performed duration more carefully from the wider elapsed time envelope.

Malformed activity timing

Impossible zero-length intervals are rejected instead of being persisted.

Training Form history

The chart can correctly reach the latest published physiology state.

Roadmap profile compatibility

Valid older Bike zone data and unknown Bike FTP states are handled more safely.

None of these are particularly exciting features. But beta software gets much more useful when unusual data stops being unusual enough to break it.

06
One more thing

Kestivo Web has started.

A separate development track quietly became real this week: Kestivo Web now exists in code.

It is not ready for athletes yet, and there is currently no public Web product. I am deliberately not rushing real athlete data into a browser client before the security boundaries are ready.

Responsive design system Home Week Workouts Roadmap More Sign-in UI Loading and error states

Native iOS remains the main Kestivo product today. The longer-term goal is simply that Kestivo should not permanently require an iPhone just because the first version was built there.

07
What is next

The beta keeps shaping what gets built next.

I can test many technical cases myself. What I cannot reproduce is the combination of different athletes, different equipment, different histories, different thresholds and different assumptions about how a training app should behave.

This week's Roadmap issue was a good example. The athlete did nothing wrong. Their profile was valid. Kestivo simply needed to become better at understanding it.

At the same time, the broader coaching direction remains unchanged:

What was planned? What actually happened? What does that mean for what should happen next?

The first two questions are becoming much stronger. The third one is still where much of the interesting work ahead lies.

A question for athletes

When a training app cannot confidently understand something about you, what should it do?

There is a real product decision here between useful automation and an app pretending to know more than it actually does.

Ask you a question Make a conservative assumption Tell you it does not know
Private beta

Want to help shape Kestivo?

The private beta is live with selected athletes. Join the waitlist for future TestFlight places and development updates.