Technical note · Published on 25 September 2026
Generating running programmes from VMA
How a quiz, a reference time and a race date become a complete Excel programme, then an iOS app that plays it session by session.
For La Fit Team, a running coach sold his programmes as hand-written Excel files, one sheet per week. The site had to sell them, and above all to build them.
Everything starts with a quiz. The client gives their goal, the real race date, their level, a reference time, their volume and their available days. They never choose the length of the coaching. The site counts the weeks left before the race and derives the offer and the price from them.
The reference time gives the VMA, the maximal aerobic speed. From the VMA come the paces and five zones. The remaining weeks set the periodisation, automatically. Sessions are built and placed on the ticked days, the long run lands on the weekend, and the generator writes one sheet per week, in the coach's own file format, so he can review and correct them as usual.
Payment goes quiz, a Stripe page created by an edge function at the real database price, then a webhook. On validation, that webhook records the sale, creates the app licence, generates the full programme, stamps it with an activation code, sends the coach the client sheet and the file, and sends the client a confirmation that introduces the app.
That code is written twice in the file, on a visible line and in a hidden sheet that carries the programme's stable identifier. That's what makes it possible to update the programme without losing the sessions already done.
On the other side, an iOS app reads that file. Its parser understands weeks, repetitions, recoveries, paces, heart rates in bpm or percent, and it flags contradictions instead of choosing silently. There, the programme is a queue of sessions, the intervals go to the Apple Watch, and the report then compares planned to actual.
The protection doesn't rely on the file, which can be passed on, but on the mailbox. Activation asks for a six-digit code sent to the purchase address, the device is bound, two at most, with fourteen days of offline tolerance, and if the coach cuts access, the app locks and removes the programme.
What taught me the most was keeping the Excel file as the pivot. The coach didn't have to change tools, and the generator only had to imitate what he was already doing by hand.