HealthData

Un écosystème complet de données de santé — de l'ingestion multi-sources aux prédictions ML, du coaching personnalisé au workout poussé sur la montre. Construit seul, avec l'IA comme partenaire de développement.


Le problème

Mon bracelet Whoop me dit que ma récupération est à 62%. Mon Garmin affiche un Body Battery à 45 et un training status "Unproductive". Deux capteurs, deux algorithmes, deux réponses différentes à la même question : est-ce que mon corps est prêt à s'entraîner aujourd'hui ?

La réponse n'est dans aucune des deux apps. Elle est entre les deux.

La boucle complète

J'ai construit un système qui consolide toutes les sources, les modélise, et produit un résultat concret : un entraînement adapté chaque semaine, validé par simulation, poussé directement sur ma montre Garmin. Pas une app de plus — un écosystème complet, de l'ingestion au poignet.

La boucle complète HealthData : données, consolidation, prédiction ML, coaching, workout généré, push Garmin, exécution, retour données

10 endpoints, moins de 3 secondes

Garmin, Whoop, Withings, Foodvisor — chaque source a ses particularités. Garmin n'a pas d'API publique pour les données physiologiques. Whoop est bien documenté mais limité. La nutrition passe par HealthKit comme couche d'abstraction. Le pipeline unifie tout ça en parallèle, en moins de 3 secondes.

Pipeline d'ingestion unifié : Nutrition via HealthKit, Whoop, Garmin vers 10+ endpoints en moins de 3 secondes

Qui croire ?

Ma fréquence cardiaque au repos : 5.53 bpm d'écart moyen entre Garmin et Whoop sur 3 ans. Pas un bug — une différence de méthode de mesure. Le genre de révélation qu'on n'obtient qu'en croisant ses sources sur la durée, dans un notebook BigQuery construit avec Claude.

Saisonnalité du sommeil, impact de la charge sur la récupération, détection d'anomalies multi-variées — les questions que les apps ne posent pas.

Deux cerveaux

5 modèles Random Forest prédisent la récupération, le sommeil, le strain, le poids et l'effort — avec intervalle de confiance et importance de chaque variable. Mais un modèle ML ne suffit pas. Il ne sait pas interpréter, négocier, ni comprendre que tu as une réunion à midi.

Claude orchestre 55 outils via le Model Context Protocol. Il interprète les prédictions, respecte les règles de coaching, et produit une recommandation contextualisée. Ni l'un ni l'autre ne suffit seul.

Architecture MCP : 5 rôles spécialisés autour des données utilisateur — Coaching Architect, Performance Analyst, AI Data Scientist, Insight Journalist, Session Strategist

Du coaching, pas un chatbot

Le moteur de coaching ne se contente pas de recommander — il protège. Chaque suggestion passe par des garde-fous quantitatifs : le Training Stress Balance mesure la fatigue cumulée, l'Acute:Chronic Workload Ratio détecte les pics de charge risqués, et la dette de sommeil module l'intensité autorisée. Pas de deux HIIT consécutifs. Repos forcé si l'ACWR dépasse 1.5.

Garde-fous de sécurité : Training Stress Balance, Acute:Chronic Workload Ratio, Récupération et dette de sommeil

Avant d'être validé, chaque plan est simulé. Le Digital Twin rejoue la semaine jour par jour : chaque session simulée génère une charge qui modifie la récupération prédite du lendemain. Si la simulation détecte un risque de surcharge en fin de semaine, le plan est ajusté avant même d'être proposé.

Entrées et contraintes du coaching vers sortie workout, puis simulation récursive du Digital Twin

"On fait quoi demain ?"

C'est ma question du soir. Pas dans Garmin. Pas dans Whoop. Dans Claude, sur mon téléphone. Claude appelle les outils dont il a besoin, croise mes données, et me répond. Si le workout est validé, il est sur ma montre avant que je parte.

App Claude : question « On fait quoi demain ? » dans le projet Jean-Claude le Coach
La question
Claude appelle les outils MCP : hd_get_coaching_board, récupération des données en temps réel
Les outils MCP
Processus de réflexion de Claude : analyse du coaching board, TSS cible, projection ML, template d'entraînement
Le raisonnement
Réponse coaching : Run Z2 50min, FC cible 135-150 bpm, structure détaillée avec explication ML
La recommandation

Les interfaces

SvelteKit Dashboard — L'analyse en profondeur

Prédictions ML avec intervalle de confiance, journal d'activité en vue calendrier, corrélations entre métriques de santé — l'interface web pour creuser. 390 composants Svelte, 40+ pages.

Dashboard SvelteKit : prédiction de récupération pour demain avec score 58, confiance du modèle, recommandations personnalisées et facteurs d'influence
Journal d'activités : vue calendrier avec bulles proportionnelles à la charge, filtres par type d'entraînement

App iOS — La consultation quotidienne

Charge d'entraînement, prescription du jour, facteurs de récupération — tout en un coup d'œil. Swift 6, SwiftUI natif, 476 fichiers.

App iOS, onglet Training : prescription quotidienne Maintain, Strain Guidance, Training Load CTL 99 / ATL 90 / TSB +10
App iOS, onglet Health : Recovery avec facteurs contributifs — Sleep Score, HRV, Resting HR, Strain, SpO2

BigQuery Notebooks — L'exploration sur la durée

Comparaison Garmin vs Whoop sur 3 ans, détection d'anomalies contextuelles, saisonnalité — les analyses que les apps ne posent pas. Co-construits avec Claude dans BigQuery.

Notebook BigQuery : comparaison HRV quotidienne Garmin vs Whoop sur 6 mois, séries temporelles superposées
Notebook BigQuery : détection d'anomalies contextuelles Z-Score — HRV crashes vs baseline glissante sur 3.5 ans

Infrastructure

40+ Cloud Functions en Node.js et Python, Firestore temps réel, BigQuery pour l'analytique, une app iOS native, et un serveur MCP sur Cloud Run — le tout orchestré par un seul développeur.

Infrastructure : Compute serverless Node.js et Python, Database Firestore et BigQuery, Mobile iOS natif SwiftUI, Intelligence FastMCP sur Cloud Run

Stack technique

SvelteKit Svelte 5 Swift 6 SwiftUI Node.js Python Cloud Functions Firestore BigQuery Cloud Run FastMCP Random Forest OAuth 2.0 Garmin API Whoop API HealthKit

Envie d'en savoir plus ?

La série technique complète arrive sur Substack — ou consultez mes services.