Askeo Progression System
Roadmap & Status — Last updated: 2026-09-10
Deployed: 2026-09-16 23:29 UTC
Bullet key:
✓ Closed dot = completed item
○ Open circle = incomplete / waiting item
🔗 Amber box below phase = dependency / blocker
Ship to testers and validate production readiness before App Store sale. TestFlight is the gate; this checklist is what makes it pass. This is not a development phase — it is the end-state target for the app.
- Build iOS app for TestFlight distribution
- Upload build to App Store Connect
- Invite internal testers via TestFlight
- Collect feedback from testers
- Optional: submit for external TestFlight review
- Stability: no crashes on launch, no broken flows, restarts preserve state
- Backend production health: health/ready endpoints, structured logs, global exception handler, timeouts, frontend retry/backoff
- Auth & data: stable auth, data export/account deletion flows
- Exercise library & media: licensed exercise source/video, playable video modal, static exercise names
- Workout builder: draft persists across tab switches, cancel exits without clearing
- Coach/deterministic rules: recognizable exercise names, deterministic progression, plain-language transitions
- Privacy & compliance: privacy policy URL if collecting data, lawyer review before paid release
- Device-specific: test on real device, Xcode GUI push workflow works, Capacitor config correct
- Maintenance: discuss whether to upgrade to dedicated IPv4 ($2/mo) to eliminate shared-IP rotation risk
🔗
TestFlight does not require App Review for internal testers. External testers do require a lightweight review. None of this requires App Store approval to start testing.
Exercise whitelist, basic workout generation, database models, frontend set logging. All shipped.
- 99-exercise canonical whitelist (Title Case, tier 1–4)
- Movement pattern classification (push/pull/squat/hinge/etc.)
- ExerciseLibrary integration — 595/1318 matched
- Workout generator with deterministic compound-first ordering
- SetLog database model (weight, reps, effort, notes)
- Frontend ActiveWorkoutScreen with set logging UI
- RIR capture added to frontend + backend schema
- Progression type assigned per exercise in generator
- Deployed to askeo.fit
- Frontend now calls backend prescription API in ai_trainer mode
- AlgorithmState persisted per exercise server-side
- Progression transitions logged server-side
- Transition history view in app
- Set up Google auth in Google Cloud Console
- Add
VITE_GOOGLE_CLIENT_ID to frontend .env
- Rebuild + redeploy frontend to device
- Submit app to TestFlight / dev App Store for tester access
🔗
Enables everything below. Without SetLog, AlgorithmState, and RIR capture, no progression logic can run. Phase 1 agent work depends on these models being stable — they are.
For beginners. Add weight when all sets/reps completed. Collect RPE + RIR to calibrate per-user.
- Wire frontend → backend prescription API
- Persist AlgorithmState per exercise server-side
- Surface backend prescription errors to user in UI
- pytest coverage for
/api/rules/next-prescription side effects
- Confirm AlgorithmState + ProgressionTransition rows created on phase change
- End-to-end test: identical inputs → identical outputs unless RPE/RIR changes
- Validate linear progression defaults against real RIR (needs 2–3 logged sessions)
- Generate a workout and complete it
- Log effort + RIR for every set
- Do this for 2–3 sessions minimum
- Note if weight feels too easy / too hard
🔗
Only one agent task remains, and it needs your data. Your 2–3 sessions unblock validation of linear progression defaults. All other Phase 2 agent tasks are complete.
What we're measuring: completion rate, RIR per set, effort per set, whether weight was increased automatically. This data tells us if the linear progression defaults are right for you.
Novice-to-intermediate. Work in rep range 3×8–12. Hit top → add weight → drop to bottom. Trigger based on RIR at top set.
- Double progression engine in rules.py + rules.ts
- Transition detector: linear → double (stall detection)
- Rep-range management (8–12) with weight advance logic
- AI coach message for transition explanation
- Continue logging workouts normally
- Algorithm auto-detects stall and switches you
- AI explains the transition when it happens
- No user intervention needed
🔗
Blocked by Phase 2 data. The stall-detection trigger needs your Phase 2 performance history (completion rates, RIR trends) to calibrate what "stall" means for you. Agent can't build Phase 3 until Phase 2 has enough data to define the transition threshold.
Intermediate+. Auto-selects 5/3/1 standard, BBB, FSL, or DUP based on goal, equipment, and performance patterns.
- 5/3/1 engine: training max, week percentages, AMRAP set
- Auto-program selector based on user profile + data
- Training max adjustment rules (AMRAP performance)
- Deload week logic (every 4th week)
- AI coach transitions with plain-language explanation
- Keep logging workouts
- AI says "switching to 5/3/1, here's why"
- No configuration needed
- Can ask AI to explain any change
🔗
Blocked by Phase 3 completion + more data. The 5/3/1 engine needs a training max, which is calculated from your recent performance. That requires Phase 3 progression data (top-set performance, rep ranges hit). Agent can't build Phase 4 until Phase 3 is proven and training max can be estimated from your history.
Detect overreaching, missed sessions, declining performance. Auto-trigger deload or volume reduction.
- Deload trigger rules (consecutive high RPE, missed sessions, declining performance)
- Recovery score calculation from recent set data
- Volume adjustment logic for deload weeks
- Pain/discomfort flag handling
- Flag pain/discomfort when logging sets
- AI proactively suggests deload when needed
- No manual deload scheduling required
🔗
Blocked by Phase 4 data. Deload triggers need weeks of percentage-based training data (AMRAP performance, RPE trends, session frequency). Can't detect overreaching until there's a baseline to compare against. Depends on Phase 4 being active long enough to collect recovery signals.
Fine-grained per-user calibration: RIR interpretation, volume landmarks, weak-point specialization, periodization.
- Per-user RIR calibration (learns reporting bias)
- Volume landmark tracking (MRV, MAV, MEV)
- Weak-point detection from lagging lifts
- Custom accessory selection based on weaknesses
- Training age / volume threshold tracking
- Continue logging sets consistently
- More data → better personalization
- AI occasionally explains adaptations
🔗
Blocked by all prior phases. Per-user calibration needs months of data across all progression stages. Weak-point detection requires performance comparisons across movement patterns. This is the long-term payoff for consistent logging.
How Data Flows
You generate workout
→
You log sets + RIR
→
Backend stores SetLog
→
rules.ts computes next prescription
→
AI explains the change
Frontend holds state in memory. Backend stores SetLogs. Prescription API and AlgorithmState persistence are deployed; remaining Phase 1 work is validation and verification against your real workout data.
Bottom line: Agent can build everything in parallel, but each phase needs validation from your real-world data before the next phase starts. Your logging is the critical path — it gates every transition.