PaceAI — Devpost Submission
Inspiration
Most runners abandon their training plans by week three — not because they lack motivation, but because static plans don't adapt to real life. Bad sleep, hot weather, a stressful week. We wanted to build a coach that actually listens.
What it does
PaceAI generates a personalized running plan based on your goal distance, race date, current PRs, and availability. Every week is structured with target pace, heart rate zones, and RPE per session. When life gets in the way, an AI agent reshapes the week in real time — considering your recent Strava activities and the local weather forecast. The plan bends. It doesn't break.
How we built it
Next.js 15 with App Router, Vercel AI SDK 6 for plan generation (generateObject) and adaptive coaching (streamText with tool calls), and GPT-4o as the model. We built a custom MCP server hosted at /api/mcp using mcp-handler that exposes training tools — any MCP-compatible agent like Claude or Cursor can connect and query the user's plan. Strava API provides real activity overlays on the calendar. Weather context comes from wttr.in and is injected into the agent prompt at adapt time.
Challenges we ran into
Getting the plan generation fast enough was the biggest technical challenge — generating 7 weeks of structured sessions in one shot caused timeouts. We solved it by generating only week 1 on onboarding and building remaining weeks lazily on demand. Connecting to third-party MCP servers from a server-side Next.js route also proved harder than expected — most existing Strava MCPs use stdio transport, not HTTP/SSE. Building our own was the right call.
Accomplishments that we're proud of
Shipping a working agentic loop — where the agent uses real tools, real data, and produces a specific structured output the user can accept or reject — in a single hackathon session. The adapt flow feels genuinely useful, not like a demo trick. We're also proud of the MCP server: it's a real endpoint any agent can connect to and get meaningful training context from.
What we learned
Agentic UX is hard. Streaming tool calls into a UI that the user can preview and confirm requires careful state management. We also learned that the quality of the system prompt matters more than the model — once we gave the agent clear context about training phases, injury prevention, and weather thresholds, the output quality jumped significantly.
What's next for PaceAI
Full Strava OAuth integration so the agent can read real historical performance — not just the current week. Garmin support. A proper weekly check-in flow where the agent proactively suggests changes based on accumulated fatigue. And a mobile-first redesign, because runners check their plans on their phones.
Built With
- mcp
- nextjs
- openai
- v0
- vercel
Log in or sign up for Devpost to join the conversation.