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.
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.
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.
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:
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.
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.
Some fixes you hopefully never notice.
Kestivo now distinguishes actual performed duration more carefully from the wider elapsed time envelope.
Impossible zero-length intervals are rejected instead of being persisted.
The chart can correctly reach the latest published physiology state.
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.
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.
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.
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:
The first two questions are becoming much stronger. The third one is still where much of the interesting work ahead lies.
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.
Want to help shape Kestivo?
The private beta is live with selected athletes. Join the waitlist for future TestFlight places and development updates.