Askeo — Question Flow

Follow the decision tree. Dashed = conditional path. Click any node to highlight its branch.

Question
Backend / Profile
Template
Output
Decision
// 1. About You
Q1
Units
Pounds & Inches or Kg & Cm
units_preference
Q2
Weight
Current weight in lbs or kg
weight_kg
Q3
Height
Height in inches or cm
height_cm
Q4
Sex
Male, Female, Other, or Prefer not to answer
sex
Q5
Activity Level
Sedentary to Very Active
activity_level
// 2. Your Goals
Q6
How do you want to train?
Full Program, Strength, Hypertrophy, Endurance, Weight Loss, Mobility, General Fitness
goal[]
Q7
Experience Level
Beginner, Intermediate, Advanced
experience
Q8
Training History
Just starting, <6 months, 6–12 months, 1–2 years, 2+ years, Returning
training_history
// 3. Your Schedule
Q9
Days Per Week
2–6 active days
days_per_week
Q10
Minutes Per Session
20, 30, 45, 60 min
minutes_per_session
Q11
Workout Location
Free text — gym name or "Home" (optional)
workout_location
// 4. Your Setup
Q12
Gym Type
Full Gym, Planet Fitness, Home Gym, Bodyweight Only
gym_type
Q13
Available Equipment
Barbell, Dumbbells, Cable, Machines, Bands, Kettlebells, Bodyweight
equipment[]
// 5. Your Style
Q14
Primary Training Style
Traditional Weight Training, Powerlifting, Bodybuilding, HIIT, Cardio
workout_modality
Q15
Additional Activities
Cardio, HIIT, or None — just my primary style
modality_secondary[]
Decision
Q15 = None?
If no secondary activities selected, skip cardio detail block
modality_secondary == ["none"]
Yes — has cardio/HIIT
Q16
How to Organize Cardio
Together, Separate days, Mostly primary
modality_mix
"single" removed
Q17
Cardio Timing
Warmup 10/15/20, Finisher 15/20, HIIT Finisher, Separate day
cardio_timing
Q18
Lifting-Day Cardio Type
None, HIIT, Steady State, Walking, Distance, Mixed
incorporated_cardio_type
Q19
Standalone Cardio Type
None, HIIT, Steady State, Walking, Distance, Mixed
cardio_type
Q20
Cardio Days Per Week
0–7 dedicated cardio days
cardio_days_per_week
No — skip to Q21
Skip
Q16–Q20 skipped
modality_mix, cardio_timing, incorporated_cardio_type, cardio_type, cardio_days_per_week
Skipped
// 6. Split & Build
Q21
Split Style
Full Body, Upper/Lower, Push/Pull/Legs, Body Part Split
focus
Skipped in Custom mode
Q22
Build Mode
Pre-built Template or Custom Builder
build_mode
// 7. Your Progress
Q23
Starting Progression
Linear, Double, or Percentage
progression_type
// 8. Safety
Q24
Limitations / Injuries
None, Shoulder, Knee, Back, Wrist, Limited Mobility, High-Impact Aversion
limitations[]
// 9. Backend: Normalize → UserProfile
intake.py
normalize_questionnaire()
Converts raw answers → typed UserProfile dataclass
UserProfile
// 10. UserProfile Fields & Effects
field
goals[]
Sets volume and intensity curves
field
equipment
Filters exercise pool
field
workout_modality
Routes to template builder
field
modality_secondary[]
Populates secondary activity days
field
modality_mix
Together / Separate / Mostly / Single
field
cardio_timing
Warmup / Finisher / Separate day
field
incorporated_cardio_type
Cardio type attached to lifting days
field
cardio_type
Cardio type for dedicated days
field
cardio_days_per_week
Number of dedicated cardio days
field
training_history
AI uses for split switch recommendations
field
progression_type
Linear, Double, or Percentage
field
focus
Split style selector
field
limitations[]
Excludes painful exercises / ROM
// 11. Backend: Generate Workout
progression.py
generate_workout()
Routes to correct builder based on modality + focus
_build_weight_training_days()
progression.py
_build_weight_training_days()
Selects template rotation based on focus
_FULL_BODY / _UPPER_BODY / _PPL / _BPS
// 12. Templates — Slot-Based Exercise Selection
Template
Full Body
5 slots: push, pull, squat, accessory, core
Template
Upper Body
5 slots: push compound, pull compound, shoulder, back, arm
Template
Push / Pull / Legs
3 templates, rotates by day
Template
Body Part Split
5 templates: chest/tris, back/bis, legs, shoulders, arms
// 13. Slot Filling — For Each Day
For each slot
_pick_exercise_for_slot()
Filters exercise library by:
• Movement pattern (push, pull, squat, hinge, core)
• Tier (1=compound, 2=secondary, 3=accessory, 4=isolation)
• Equipment match
• Limitations exclusion
Result
Best 3 options
Randomized selection from top 3 matches
// 14. Day Building
Sets/Reps/Rest
Per slot
Based on experience + goals
Beginner: 3-4 sets × 8-12 reps
Intermediate: 4-5 sets × 6-10 reps
Advanced: 4-6 sets × 4-8 reps
Progression
Per exercise
User-selected: Linear, Double, or Percentage
// 15. Output
Workout Draft
Deterministic JSON
Same inputs always produce the same plan
{ name, groups[], description }
Frontend
Week View
Day cards, exercise lists, video links
// 16. AI Coach Layer (Future)
AI Coach
Explains questions
"What's the difference between Upper/Lower and Push/Pull/Legs?"
AI Coach
Reconciles answers
"You said 4 days + 1 HIIT → let's make it 5"
AI Coach
Builds week_schedule
Structured day-by-day modality map
AI Coach
Recommends switches
"6 months on body part split → try PPL for 6 weeks"
Does NOT generate workout content
Updates profile → backend regenerates

Last updated: 2026-08-07 · askeo.fit/flowchart