🚀 Overview
RunGPT is my AI running coach. It maintains a two‑month rolling training plan, updates it weekly based on your performance, and provides coaching guidance via chat. It’s optimized for free/low‑cost hosting and intelligent LLM usage.
- Two‑month forward plan with weekly cascade updates
- Chat interface for questions, plan changes, and profile updates
- Tracks assumptions vs reality (when no device data is uploaded)
- Cost-aware LLM rate management with graceful fallbacks
Live app: https://run-gpt.vercel.app
Note: The code is private for now; work cannot be tracked on GitHub. The architecture below summarizes how it’s built.
🧩 How It Works (High Level)
- Weekly refresh job (Sunday 11pm) analyzes last week’s planned vs actual runs, updates the fitness profile, and regenerates the two‑month plan while preserving structure.
- Assumption vs reality handling: if device data isn’t uploaded, the system assumes planned runs were completed, then retroactively reconciles when data arrives.
- The chat endpoint bundles relevant context (profile, current plan, methodology) and calls the LLM with priority-based model selection and rate-aware fallbacks.
Key Entities
- Users, Garmin Activities (CSV import), Run Feedback (subjective), Current Fitness Profile (calculated), Fitness Snapshots (monthly), Two‑Month Plans (rolling), Chat History, API Usage Tracking.
API Highlights
- REST for CRUD, RPC for complex operations (chat, plan regeneration, imports)
- Stateless requests with context assembly per call
- Priority-based model selection (high → medium → small) with caching/fallbacks
Automated Jobs
- Vercel Cron (or GitHub Actions) for weekly refresh + maintenance
- Logs metrics + failure reasons; resilient to LLM/API hiccups
🛠️ Tech Stack
- Frontend: Next.js (React), Tailwind CSS
- Backend/API: Next.js serverless routes on Vercel
- Database: PostgreSQL (Supabase) with RLS and migrations
- Auth: NextAuth.js (JWT sessions)
- Ops: Vercel env vars, preview deployments, basic analytics/logging
🎯 Why I’m Building This
I left my running coach and wanted a system that blends solid training methodology with the database + AI agent skills I developed in my first year at BNY. This is my current passion project—focused on practical, personalized coaching.
📈 Status
- In active development; features are rolling out iteratively
- Architecture is stable; UI/UX and methodology libraries continue to evolve
- Public live site is available; codebase is private for now