Rutz — an AI running coach
A running coach built with a partner. Code does the math; AI explains it.
Illustration: a finished run arrives as raw Garmin data, code scores it (scoring, de-duplication, training load, patterns), the AI explains it in plain language, and Maya the runner decides what to do with the advice.
The product
Rutz is an iOS app that turns a runner's raw Garmin data into coaching they can act on. It's a product I'm building with a partner, not a client engagement, and it's here because it shows the same principle I sell to businesses: compute what can be computed, use AI where interpretation is needed, and keep the person in control.
The design question
A coaching app can hand every run to a language model and get a confident paragraph back. But then no two answers match, nobody can check the reasoning, and the runner ends up trusting a tone rather than a number. The question was how to give the app real judgement without letting the model make things up.
What was built
- Code does the math
- Scoring, de-duplication, training-load math and pattern detection run as deterministic code. The same run always gets the same numbers.
- AI interprets the results
- The model gets computed results, not raw data, and explains what they mean: a heavier post-run analysis and a lighter chat.
- Garmin data pipeline
- Each runner's Garmin activity flows through their own connection into Postgres, where the analysis code picks it up.
- iOS app and backend
- A SwiftUI app with Apple Sign-In, a FastAPI backend with plain parameterised SQL on Postgres, deployed on Railway.
- Internal run-analysis tooling
- A developer tool that replays runs with changed parameters in real time, so a scoring change can be seen before it ships.
My part
I'm the technical partner on Rutz. The architecture and the AI design are mine, including where the line sits between what runs as code and what a model is allowed to interpret. My partner wrote most of the code, and that should be said plainly.
Supported outcomes
- AI is used only where interpretation is needed
- Every number in the app is reproducible from code
- The runner stays in control of what to do with the advice
Tools
SwiftUI, FastAPI, Postgres, Garmin, Claude, Gemini, Railway