Fitness Tracker — Workout & Health Accountability
Tracks workouts, meals, PRs, and fitness consistency. An accountability layer that keeps the user honest through natural conversation.
Data File: data/fitness.json
{
"profile": { "goal": "", "weight_log": [], "start_date": null },
"workouts": [],
"meals": [],
"prs": {},
"weekly_summary": [],
"current_week": { "workout_count": 0, "target": 0, "workouts": [] }
}
Workout Entry Format
{
"date": "2026-02-07",
"type": "strength",
"muscle_groups": ["chest", "triceps"],
"exercises": [
{ "name": "Bench Press", "sets": [{"weight": 185, "reps": 5}] }
],
"duration_min": 60,
"notes": ""
}
Meal Entry Format
{
"date": "2026-02-07",
"meal": "lunch",
"description": "Chicken bowl with rice",
"estimated_calories": 650,
"estimated_protein_g": 45,
"time": "12:30"
}
Parsing Natural Language
Workouts
- "bench 185x5 185x4" → Bench Press, 2 sets: 185×5, 185×4
- "tricep pushdowns 50x12 x3" → 3 sets of 50×12
- "went for a 5k run, 28 minutes" → cardio, running, 5km, 28min
- "did legs" (no details) → log muscle group, note "details not provided", still counts
Meals
- "had chipotle for lunch" → estimate ~650 cal, ~40g protein
- "protein shake after gym" → estimate ~200 cal, ~30g protein
- "skipped breakfast" → note it; if 3+ day pattern, gently mention
PR Detection
After parsing workouts, check each exercise against stored PRs:
- Epley 1RM = weight × (1 + reps/30)
- If new 1RM exceeds stored PR: update and celebrate
- Only celebrate PRs, not every workout
Instructions
- Always read
data/fitness.json before responding about fitness
- Update the JSON immediately after any fitness conversation
- Keep responses short — log confirmation + one comment
- Nudge logic: max 1 gym reminder per day, only if behind weekly target
- Track consistency over intensity — showing up matters more
- If user mentions injury or pain, suggest rest. Never push through pain
- Weekly report: show trends (improving? plateauing? declining?) with data
1---2name: lofy-fitness3description: Fitness accountability for the Lofy AI assistant — workout logging from natural language, meal tracking with calorie/protein estimates, PR detection with Epley formula, gym reminders based on weekly targets, and progress reports. Use when logging workouts, meals, tracking fitness PRs, or generating weekly fitness summaries.4---56# Fitness Tracker — Workout & Health Accountability78Tracks workouts, meals, PRs, and fitness consistency. An accountability layer that keeps the user honest through natural conversation.910## Data File: `data/fitness.json`1112```json13{14 "profile": { "goal": "", "weight_log": [], "start_date": null },15 "workouts": [],16 "meals": [],17 "prs": {},18 "weekly_summary": [],19 "current_week": { "workout_count": 0, "target": 0, "workouts": [] }20}21```2223### Workout Entry Format24```json25{26 "date": "2026-02-07",27 "type": "strength",28 "muscle_groups": ["chest", "triceps"],29 "exercises": [30 { "name": "Bench Press", "sets": [{"weight": 185, "reps": 5}] }31 ],32 "duration_min": 60,33 "notes": ""34}35```3637### Meal Entry Format38```json39{40 "date": "2026-02-07",41 "meal": "lunch",42 "description": "Chicken bowl with rice",43 "estimated_calories": 650,44 "estimated_protein_g": 45,45 "time": "12:30"46}47```4849## Parsing Natural Language5051### Workouts52- "bench 185x5 185x4" → Bench Press, 2 sets: 185×5, 185×453- "tricep pushdowns 50x12 x3" → 3 sets of 50×1254- "went for a 5k run, 28 minutes" → cardio, running, 5km, 28min55- "did legs" (no details) → log muscle group, note "details not provided", still counts5657### Meals58- "had chipotle for lunch" → estimate ~650 cal, ~40g protein59- "protein shake after gym" → estimate ~200 cal, ~30g protein60- "skipped breakfast" → note it; if 3+ day pattern, gently mention6162### PR Detection63After parsing workouts, check each exercise against stored PRs:64- Epley 1RM = weight × (1 + reps/30)65- If new 1RM exceeds stored PR: update and celebrate66- Only celebrate PRs, not every workout6768## Instructions69701. Always read `data/fitness.json` before responding about fitness712. Update the JSON immediately after any fitness conversation723. Keep responses short — log confirmation + one comment734. Nudge logic: max 1 gym reminder per day, only if behind weekly target745. Track consistency over intensity — showing up matters more756. If user mentions injury or pain, suggest rest. Never push through pain767. Weekly report: show trends (improving? plateauing? declining?) with data