Elio Darras

Note technique · Publié le 25 septembre 2026

Mon coach m'a envoyé un Excel, j'ai fait une app

Un programme de course dans un vieux fichier, une app iOS qui le lit, un score d'énergie calculé sans IA, et une IA qui ne fait que raconter.

J'ai un coach pour ma préparation baseball et pour les courses à venir. Il m'a envoyé mon programme dans un vieux fichier Excel, pénible à suivre au quotidien. Plutôt que de le recopier, j'ai fait une app iOS qui le lit directement, et qui réunit tout ce que je notais ailleurs, l'énergie du jour, la course, la salle.

L'import lit le fichier en .xlsx, .csv ou .pdf et en tire les répétitions, les récupérations noyées dans une consigne, les plages d'allure et de fréquence cardiaque. Les contradictions du fichier sont signalées, jamais corrigées en silence. Le programme est une file, pas un calendrier. La prochaine séance est la première qui n'est pas faite, et faire le lundi un mardi est normal.

Trois règles expliquent la plupart de mes choix. Le modèle ne calcule jamais, parce qu'un score produit par une IA n'est ni reproductible ni testable. Tout ce qui est chiffré est calculé en Dart, et le modèle le raconte. L'IA tourne sur le téléphone, avec Apple Foundation Models sur iOS 26, donc rien ne sort, pas même une donnée de santé. Et il y a toujours un repli déterministe, aucun écran ne dépend d'une inférence pour s'afficher.

Le score d'énergie part de 40 points et ajoute des contributions signées, sommeil, variabilité cardiaque, fréquence au repos, charge, stress déclaré, chacune comparée à la ligne de base de la personne sur 30 jours. Le coach à questions libres a des garde-fous non négociables. Jamais de diagnostic, jamais de nom de pathologie, pas de jeûne, pas d'effort intense sur une récupération basse.

L'envoi à l'Apple Watch passe par WorkoutKit. « 8 × 1 min à 4'08"–4'27"/km, récup 1 min » devient un entraînement à intervalles natif, sans app watchOS à écrire. Après la séance, le bilan relit HealthKit et compare le prévu au réalisé, surtout le temps passé par zone, avant tout appel au modèle.

698 tests écrits en français, qui décrivent une garantie produit plutôt qu'une implémentation. Distribution TestFlight, avec des correctifs en OTA jamais installés en silence, parce que sur une app santé on doit savoir quand le code qui interprète les données change.