The beta is live.
Last week I wrote that the first beta was almost here. This week it actually happened.
Kestivo passed Apple's Beta App Review, the external TestFlight beta is live, and the first invitations have been sent.
It is still very early. I am waiting for the first proper real-world use to come in, so I definitely cannot claim a successful beta week yet. But I have already received several useful improvement ideas from people preparing to test, which is exactly what I hoped would happen once Kestivo started leaving my own phone.
Now the interesting part begins.
A workout should be able to explain why it is there.
One new feature this week is something I have wanted for a while: Why this workout?
Kestivo can now explain the planning objective behind a structured workout. So instead of only seeing Easy aerobic run, 50 minutes, you can also see why that session exists in the week and what it is intended to achieve.
The explanation is tied to the validated planning objective that was saved with the workout. It is not a new story generated afterwards just because you asked for an explanation.
I think this is an important part of making AI-generated training feel less like a black box.
“Completed” does not necessarily mean “done as planned.”
This was probably the biggest coaching improvement of the week. Until now, Planned vs Actual was mostly about factual differences such as duration and training load.
But a 90-minute ride can have exactly the planned duration and still be a completely different workout from the one that was prescribed.
Kestivo can now go deeper for supported Run and Bike workouts. It can compare the planned intensity distribution with what actually happened during the activity and keep two different questions separate:
And how closely did the intensity match the prescription?
For example, Kestivo can identify a workout as Completed while also recognising that it was harder than planned, easier than planned, or mixed. It can show the planned and actual time in each training zone and explain what the comparison is based on, such as recorded running pace or cycling power.
This is now working with real Garmin cycling data and with Apple Health / Apple Watch running pace data.
That moves Kestivo another step closer to the coaching loop I ultimately want:
Not everyone trains with a power meter.
Another area I worked on this week was cycling training load. Power remains the preferred signal when it is available.
But plenty of athletes do not have a power meter on every bike, and Kestivo should not become much less useful just because of that. Kestivo can now use Bike threshold heart rate and sufficiently complete heart-rate evidence as a fallback where appropriate.
The same principle applies when planning workouts. If an athlete does not have power available, Kestivo should work with the training information that athlete actually has instead of pretending everybody owns the same equipment.
There is still more validation to do as more real activities come through the beta, but the underlying capability is now in place.
The beta can stay stable while development continues.
One thing I wanted to avoid was reaching TestFlight and then effectively freezing development.
The beta version people receive and the version I am actively developing are now deliberately separated. That means I can keep building and validating new functionality without automatically pushing unfinished changes to everyone in the beta. If a serious problem appears in the current beta, I can fix that version specifically. Larger improvements can continue separately and move into the next beta build once they are ready.
There was also less visible reliability work this week. Apple Health and Garmin disconnect and reconnect behaviour became more robust, historical threshold handling improved, a Run training-load calculation edge case was corrected, and some physiology calculations were tightened.
None of those changes make particularly exciting screenshots. But they are exactly the kind of things that matter more once the app is being used by people other than me.
The beta is where the real learning starts.
Until now, I could test whether Kestivo behaves correctly for my training. That is very different from finding out whether it works for somebody with different availability, different equipment, different thresholds, different training history and a completely different way of thinking about their week.
That is what I need the private beta for. If you already have access, please do not feel that you need to test Kestivo in some special way. Use it as you would actually want to use a training app.
If something is confusing, unnecessary, missing or simply wrong, tell me. A few of the improvement ideas I have already received are exactly the kind of things I might never have prioritised correctly by testing the app alone.
Learn from real use and keep improving the coaching loop.
The immediate focus is split in two. First, I want to start learning from real beta use and fix the problems that only appear when Kestivo meets different athletes.
At the same time, I will continue developing the coaching side of the product, particularly the connection between what was planned, what actually happened, and what Kestivo should recommend next.
The beta should help me figure out how to get there properly.
AI-first endurance coaching for athletes who still want control.
Want to test Kestivo?
Join the private beta waitlist for TestFlight access and future Kestivo development updates.