All posts

By Dan & Katya · July 10, 2026

Introducing RunPlan

Hi! We’re Dan and Katya. We run, and we build things, and for the last year and a half we’ve been making the running coach we always wanted to exist. This post is the short version, for people who just found us.

RunPlan is a coach for iPhone and Apple Watch. You tell it what you’re training for — a 5K, a 10K, a half, a marathon — and when. It builds the whole plan: every week from now to race day, every workout with its structure, every pace derived from a race you’ve actually run. Then the Watch runs it from your wrist — intervals, pace windows, a tap at every transition. The phone can stay home. We use it every day and, honestly, we love this thing — that’s why it exists.

The Plans tab: an active '21.1k training plan' card and a list of available plans to set up.The Calendar tab: a month of workout markers and a detail sheet for a Threshold Run with warmup, 4x6-min intervals and cooldown.The Activity tab: a year view with total distance and a per-month bar chart of running volume.

The part we’re most proud of

The plans don’t come from a content team, and they don’t come from an LLM. They come from a deterministic Swift package that encodes the classic coaching canon — Jack Daniels’ pacing math, Pfitzinger’s long-run progressions, Higdon’s approachability — as configuration and generators. Same inputs, same plan, every time.

That decision quietly pays for itself every week. Our regression suite renders entire plan catalogs to text and diffs them, so when we adjust one training rule we see exactly which plans moved, and by how much. It’s the most fun we’ve ever had testing anything. The long version of how the engine thinks is on the blog.

And it’s public. If you want to know why Tuesday says 6×800m — or you disagree with a taper — the code that decided it is at github.com/swarog46/training_plan_kit: plan structure, pace zones, progression and deload logic, plus the debug CLI we use to audit our own output. We’d genuinely love issues and disagreements.

What it looks like in practice

You enter a recent race result once. The app derives your training paces from it — easy, threshold, interval, race — and builds the calendar. Every workout tells you what it’s for, not just what to do. On the run, the Watch shows the current interval and target window, taps your wrist when the segment changes, and saves everything to HealthKit. Deload weeks arrive on schedule whether or not you feel heroic. It speaks nine languages.

None of this was easy, and we’ve written up the fights as we went: the pace number on your wrist took a Kalman filter and a year of arguing, one bug survived eight months of hunting, and there are three problems we still haven’t solved and said so publicly. We like working this way.

The money part

The app is free right now. What happens later, honestly, we haven’t decided — the one thing we’re sure about is we don’t want your subscription. Running is already the cheapest sport there is; we’d like to keep it that way.

So that’s us. If you run — or you’ve been meaning to — give it a try and tell us where it’s wrong. The blog has the rest of the war stories.