Product Engineer
šŗšø United States
Next.js
Flutter
Python
Machine Learning
Design
Redis
Backend
$130K - $180K
Product Engineer
from šŗšø United States
$130K - $180K
Adaptive training coach for runners, cyclists, and triathletes
Tech description:
Python and FastAPI on the backend, Flutter on mobile, Next.js on the web. Postgres and Redis for data, Render for hosting, Logfire for tracing. Claude does the coaching, Gemini Flash the fast paths, GPT the embeddings and voice.
[Imperfect Routes](https://imperfect.co/routes) is the part we've already solved: ask for a 20 mi trail loop with 3k ft of climbing starting at your door and you get a real route back, streaming. That's the same problem as coaching at a horizon of seconds. The coaching loop is the same problem at a horizon of 20 weeks, and that part is open.
1. **Getting a real goal out of a conversation.** "I want to run a marathon" isn't a goal. Which race, what date, what does your history actually support, what do you care about. The coach has to know when it has enough to commit and when to keep asking, without becoming an intake form.
2. **Writing a plan that holds up for 20 weeks.** Plans are prose, because that's what models write natively and what athletes read. A plan has to be right in week 1 and week 18 at once, periodized for one specific person, and rewritable every week without losing the arc.
3. **Knowing how much to change, and when.** This is the whole bet. You slept 4 hours, you're sick, you're 9 time zones off, you crushed Tuesday harder than prescribed. Adjust too eagerly and the plan feels random and the athlete stops trusting it. Adjust too little and we're the 16-week PDF we exist to replace. We're still figuring this out.
4. **Proving any of it is right.** There's no ground truth for the correct workout after a red-eye on four hours of sleep. We run evals against real training histories and read a lot of traces. Eval design for coaching quality is one of the most interesting open problems here.
5. **Forgetfulness as a feature.** Persistent memory and embeddings are solved problems. Knowing what and when to forget is harder. People relocate, travel, get injured, heal, get injured again. Coach an athlete off a hill route in a city they left last year, or keep managing an injury that healed six months ago, and they stop believing you know them.
Job description:
We're four people. You'd be the fifth, working with me, the founder, in SF.
The product is a training coach that adapts to how an athlete's body and life are actually going. You'd work on the coach itself: route planning, goal setting, and the recommendations it makes day to day. Go try the route planner at imperfect.co/routes. That's the shape of the work: the reasoning, the wearable data behind it, the evals that catch it being wrong, and the latency that makes it feel like a conversation.
Python, FastAPI, Postgres. You'll be releasing to prod from the first day.
Coding agents write most of the implementation, so the job is deciding what to build, breaking it into pieces an agent can execute, reviewing the output, and proving in production that it works. You should already use Claude Code, Codex, or Cursor daily, have views on getting production-grade output from them, and be able to tell when one is wrong. You should love coding and love building even more.
0 to 3 years, new grads fine. We want builders, and we read for three things. Smart: you got into a school that was hard to get into for what you studied, and you did well there. Weird paths count: I started at community college. Hard working: you shipped product at a startup, or built something people actually use on your own. Curious: you try new things before they're proven. We want people who are already living in the future, and that comes from personality more than anything on a resume. By month three you're deciding what the coach does next and answering for it in prod.
San Francisco, in person two or three days a week. The rest of the team is in Mexico City. Salary and equity are above. Equity vests monthly over four years with a one-year cliff.
I'm an ultramarathoner who previously started and sold two companies backed by investors like a16z and Stripe. I also built the most used open source project to pull Garmin Health data with over 350k downloads / month on PyPi and used by Stanford Health.
Skills:
Python, LLMs, Evals, AI Agents, Multimodal AI

