PaceMind
Un'app web che prevede il tempo di arrivo su un percorso GPX di trail o ultra, tarandosi sullo storico Strava di chi corre. Include un allenatore AI per la strategia di passo e i piani di allenamento. È un progetto personale e presto sarà open source.
Perché l'ho fatto
Sono un corridore e i calcolatori del tempo di arrivo che avevo trovato usano un passo costante corretto in base al dislivello. Volevo una stima che tenesse conto di come vado io in salita, in discesa e quando sono stanco, e che dicesse anche quanto è incerta: non una sfera di cristallo, ma un intervallo.
L'idea è nata nel 2022 e nel 2024 come prototipi (un calendario degli allenamenti, rimasto un esperimento). L'ho ripresa nel 2026 con Claude Code, che ha scritto buona parte del codice mentre io decidevo cosa costruire e controllavo il risultato.

Come funziona
La previsione ha tre livelli. Il primo usa un modello fisico del costo della corsa in salita e in discesa (Minetti), senza dati personali. Il secondo impara i parametri dell'utente dopo almeno cinque attività Strava. Il terzo è una correzione statistica sugli errori del secondo, e si attiva solo se sulle ultime uscite fa meglio del livello precedente: altrimenti non entra. La stima ha un intervallo all'80%.
Il percorso viene diviso in segmenti da 50 metri e arricchito con il tipo di superficie (OpenStreetMap), il meteo, il carico di allenamento e l'intensità dalla frequenza cardiaca. Le gare passate vengono riconosciute da sole nello storico.
L'allenatore AI può modificare piani, waypoint e strategia con strumenti definiti, ha dei limiti di sicurezza e un budget giornaliero di token per utente. I piani di allenamento partono da modelli (trail 30K, 50K, 80K, maratona) e si confrontano con le attività reali.
Scelte tecniche
- Il livello di apprendimento automatico entra solo se dimostra di battere la fisica: meglio una stima semplice e onesta che una complicata e peggiore.
- Il backend sta in Python (Flask, SQLAlchemy), l'interfaccia in Vue 3 con mappa Leaflet e grafici ECharts.
- Piani a pagamento con Stripe (gratuito, abbonamento, pass per la settimana di gara), con i limiti imposti dal server e non dall'interfaccia.
- Statistiche d'uso (Plausible, PostHog) spente se non configurate.
Cosa ho fatto io
Tutto il progetto: modello di previsione, importazione e analisi delle attività, allenatore AI, piani di allenamento, pagamenti e interfaccia, lavorando con Claude Code. Sono circa 220 commit, 64.000 righe di Python e 20.000 di Vue e TypeScript, con 98 file di test.
Limiti onesti
È in beta e non ha ancora un servizio pubblico con utenti: le schermate qui sopra vengono da una copia di prova con dati finti, e la demo con un percorso d'esempio è l'unica parte raggiungibile senza account. Dipende da Strava, e il recupero delle attività è la parte più fragile. Restano da fare, tra le altre cose, il collegamento con Garmin e Coros e il monitoraggio durante la gara.
Stack: Python, Flask, SQLAlchemy, scikit-learn, Vue 3, Vite, Pinia, Tailwind, Leaflet, ECharts, PostgreSQL, Stripe, Docker, Nginx.



