Versus Training
The training loop, shipped. Live on the App Store, 50 people still logging on it
readiness engine plan
training session ↩ feedback: logged sessions re-enter the baseline
I train MMA, lift, walk incline, stretch, and play pickup ball. No app could hold all of that in one place without breaking, so I built one: a native Swift iPhone + Apple Watch app with five sport-specific loggers (combat, lifting, endurance, sport, hybrid) writing into one unified training history.
- One schema, five sports. A round of sparring and a set of squats are different shapes of data. The hard design problem was a single session schema they all normalize into, so history and load calculations work across every modality. Voice logging feeds it: one freeform transcript becomes discipline, session type, rounds, RPE, techniques, and submissions. Imports from Hevy, Strong, Fitbod, Strava and Garmin land in the same shape.
- Readiness is personal. The score weighs how you feel (40%), HRV deviation from your own 30-day geometric-mean baseline (35%), and last night's sleep (25%). No population averages, no generic thresholds. Every training modality feeds into one number that reflects your actual recovery, not just your workload.
- "Sensei". A RAG-based coach on Claude, grounded in the athlete's last 30 sessions, current camp, readiness, and PRs. It suggests context-aware exercise substitutions, backed by Supabase, and it is what the Elite tier sells at $14.99/mo while readiness itself stays free for everyone.Real example: when my chest gains stalled while back kept growing, I asked Sensei why. It flagged that my logged RPE and technique notes on incline press pointed to front-delt dominance. Swapping to flat bench and pec-deck isolation broke the plateau in weeks.
this is the real formula from the app. move the signals; the score follows.
app store ↗ versus24.net ↗ 50 active users · Swift · TypeScript · RAG · Supabase