Class booking apps win when recommendations feel relevant, timely, and low-friction: not “more workouts”, but the right class today for how someone tends to live and train.
Sahha Archetypes are designed for this kind of personalization because they’re stable labels derived from weeks of behavior, not momentary signals.
Docs reference: Sahha Archetypes list and definitions: https://docs.sahha.ai/docs/products/archetypes
Prerequisites (recommended)
To get the best results, your product should be able to deliver journeys like:
- onboarding (“start here” suggestions),
- weekly nudges (“book your next class”),
- reactivation (“return with a low-friction option”),
- and contextual recommendations (“recovery-first week”).
That typically means using a customer engagement tool such as Customer.io or Klaviyo (alternatives: Braze, Iterable, etc.) to orchestrate messaging, segmentation, and journeys.
Important: As of 2 March 2026, Sahha does not provide built-in customer journey delivery (campaign orchestration / messaging) capabilities. Sahha provides the data outputs (e.g., archetypes) that you can route into tools like Customer.io or Klaviyo to trigger experiences and recommendations.
What this guide gives you
A practical approach you can implement quickly:
- Normalize your schedule into a small set of generic class types
- Use preference archetypes to choose the kind of class
- Use capacity / recovery archetypes to choose the intensity and format
- (Optional) Use sleep timing archetypes to choose the best time of day to suggest
- A JSON mapping file to get you started (download below)
When to use Archetypes (and when not to)
Use archetypes for:
- “Suggested for you” modules and class recommendations
- Segmentation (e.g., “recovery-first” journeys)
- Lifecycle journeys (onboarding, habit-building, reactivation)
Avoid using archetypes for:
- Minute-by-minute nudges (“go now”) — archetypes are best treated as durable context.
Step 1 — Normalize your class catalog
Studios name classes creatively (“Hot Vinyasa Flow”, “Bootcamp X”), but recommendations work best when your system maps everything into a small, consistent set of generic types.
Use (or adapt) the taxonomy below and store it as class_type_normalized on each scheduled session.
| Generic class type | Includes (examples) |
|---|---|
| Yoga | vinyasa, yin, power, hot |
| Pilates | mat, reformer |
| Barre | barre, sculpt |
| Strength | weights, lifting, hypertrophy basics |
| Functional Strength | kettlebell, TRX, athletic strength |
| HIIT | intervals, tabata |
| Bootcamp / Circuit | stations, conditioning circuit |
| Cycling / Spin | rhythm, performance ride |
| Boxing / Combat | boxing, kickboxing |
| Dance / Cardio Dance | dance fitness |
| Mobility / Stretch / Recovery | stretching, mobility, recovery |
| Core / Stability | abs, posture, trunk stability |
| Mindfulness / Breathwork | breathwork, meditation |
| Endurance (Run/Row) | run club, treadmill, rowing |
Step 2 — Choose a simple recommendation strategy
A clean way to think about class booking recommendations is:
A) Preference (what they’re likely to enjoy)
Use:
primary_exercise_type(categorical)- optionally
primary_exercise/secondary_exercise(most frequent exercise types)
B) Capacity / readiness (what they can likely sustain)
Use:
activity_level+exercise_frequency
C) Recovery modifier (how hard to push)
Use:
sleep_quality,sleep_duration,sleep_regularitymental_wellness,overall_wellness
D) Timing (when to suggest)
Use:
wake_schedule,bed_schedule,sleep_pattern
Step 3 — Archetype → class type mapping tables
These tables are designed to be copy/paste implementable. Each row gives you:
- Best-fit class types (rank higher)
- Also works (rank lower; use for variety)
3.1 Activity & habit archetypes → class types
activity_level
| Value | Best-fit class types | Also works |
|---|---|---|
sedentary | Mobility / Recovery, Yoga, Pilates, Mindfulness | Beginner Strength, Core |
lightly_active | Strength, Pilates, Yoga, Functional Strength | Cycling, Barre, Dance |
moderately_active | Strength, Functional Strength, Bootcamp/Circuit, Cycling | HIIT (moderate), Boxing, Endurance |
highly_active | HIIT, Bootcamp/Circuit, Strength, Cycling | Boxing, Endurance, Mobility (as balance) |
exercise_frequency
| Value | Best-fit class types | Also works |
|---|---|---|
rare_exerciser | Beginner Strength, Pilates, Yoga, Mobility/Recovery | Dance, Cycling (low) |
occasional_exerciser | Strength, Functional Strength, Cycling, Yoga | Bootcamp (beginner), Core |
regular_exerciser | Strength, Bootcamp/Circuit, Cycling, Boxing | HIIT, Endurance |
frequent_exerciser | HIIT, Bootcamp/Circuit, Strength, Endurance | Boxing, Functional Strength, Mobility (recovery) |
primary_exercise_type
| Value | Best-fit class types | Also works |
|---|---|---|
strength_oriented | Strength, Functional Strength, Core | Bootcamp/Circuit |
cardio_oriented | Cycling, HIIT, Bootcamp/Circuit, Endurance | Dance |
mind_body_oriented | Yoga, Pilates, Mobility/Recovery, Mindfulness | Barre, Core |
hybrid_oriented | Strength, HIIT, Bootcamp/Circuit, Cycling | Boxing |
sport_oriented | Functional Strength, Strength, HIIT, Boxing/Combat | Bootcamp/Circuit |
outdoor_oriented | Endurance, Bootcamp/Circuit, Functional Strength | Mobility/Recovery |
3.2 Wellness archetypes → class types
These are best used as intensity modifiers (how demanding to make the recommendation), not hard gates.
mental_wellness
| Value | Best-fit class types | Also works |
|---|---|---|
poor_mental_wellness | Mindfulness, Yoga, Mobility/Recovery, Pilates | Low–moderate Cycling, Dance |
fair_mental_wellness | Yoga, Pilates, Mobility/Recovery, Strength (moderate) | Cycling, Barre |
good_mental_wellness | Strength, Functional Strength, Yoga (balance) | Bootcamp, Boxing, HIIT |
optimal_mental_wellness | Any (use preference + schedule) | — |
overall_wellness
| Value | Best-fit class types | Also works |
|---|---|---|
poor_wellness | Mobility/Recovery, Yoga, Pilates, Mindfulness | Beginner Strength, Low Cycling |
fair_wellness | Strength (moderate), Pilates, Yoga, Cycling | Bootcamp (beginner), Core |
good_wellness | Strength, Functional Strength, Cycling, Bootcamp | HIIT, Boxing |
optimal_wellness | Any (use preference + schedule) | — |
3.3 Sleep archetypes → class types
Sleep archetypes are particularly effective for protecting retention: if someone is under-recovered, pushing only high-intensity classes tends to reduce adherence.
sleep_quality
| Value | Best-fit class types | Also works |
|---|---|---|
poor_sleep_quality | Mobility/Recovery, Yoga, Mindfulness, Pilates | Light Strength, Core |
fair_sleep_quality | Yoga, Pilates, Strength (moderate), Cycling (moderate) | Bootcamp (light) |
good_sleep_quality | Strength, Cycling, Bootcamp/Circuit | Boxing, HIIT |
optimal_sleep_quality | Any (use preference + schedule) | — |
sleep_efficiency (requires wearable)
| Value | Best-fit class types | Also works |
|---|---|---|
highly_inefficient_sleeper | Mindfulness, Mobility/Recovery, Yoga, Pilates | Light Strength |
inefficient_sleeper | Yoga, Mobility/Recovery, Pilates | Moderate Strength, Low Cycling |
efficient_sleeper | Strength, Cycling, Bootcamp/Circuit | Boxing, HIIT |
highly_efficient_sleeper | Any (use preference + schedule) | — |
sleep_duration
| Value | Best-fit class types | Also works |
|---|---|---|
very_short_sleeper | Mobility/Recovery, Yoga, Mindfulness, Pilates | Light Strength, Core |
short_sleeper | Yoga, Pilates, Strength (moderate), Mobility/Recovery | Low Cycling |
average_sleeper | Strength, Cycling, Bootcamp/Circuit | HIIT, Boxing |
long_sleeper | Strength, Cycling, Bootcamp/Circuit | HIIT, Endurance |
sleep_regularity
| Value | Best-fit class types | Also works |
|---|---|---|
highly_irregular_sleeper | Yoga, Mobility/Recovery, Mindfulness, Pilates | Beginner Strength |
irregular_sleeper | Pilates, Yoga, Strength (moderate) | Cycling (moderate) |
regular_sleeper | Strength, Bootcamp/Circuit, Cycling | HIIT, Boxing |
highly_regular_sleeper | Any (use preference + schedule) | — |
3.4 Sleep timing archetypes → when to recommend (optional but high-impact)
Timing archetypes don’t change what someone likes as much as they change when suggestions convert.
wake_schedule
| Value | Recommended suggestion window | Class types to bias toward |
|---|---|---|
very_early_riser / early_riser | Morning | Strength, Cycling, Bootcamp/HIIT (if recovery is good), Yoga |
late_riser / very_late_riser | Midday–evening | Strength, Cycling, Boxing, Yoga, Pilates |
bed_schedule
| Value | Avoid pushing late sessions | Class types to bias toward |
|---|---|---|
very_early_sleeper / early_sleeper | Yes | Earlier Strength/Cycling + evening Mobility/Yoga |
late_sleeper / very_late_sleeper | Less important | Later-day Strength, Boxing, Cycling + morning Mobility |
sleep_pattern
| Value | Recommendation intent | Class types to bias toward |
|---|---|---|
consistent_early_riser | Habit reinforcement | Morning Strength/Cycling; evening Mobility |
inconsistent_early_riser | Stabilize routine | Yoga/Pilates + moderate Strength; avoid late HIIT |
consistent_late_sleeper | Meet them where they are | Later sessions (Strength/Cycling/Boxing) |
inconsistent_late_sleeper | Reduce volatility | Moderate classes + recovery options |
early_morning_sleeper | Protect recovery | Mobility/Yoga/Pilates; keep intensity moderate |
chronic_short_sleeper | Reduce load, increase adherence | Recovery-first + moderate Strength |
inconsistent_short_sleeper | Build consistency | Yoga/Pilates/Mobility + moderate Strength |
Step 4 — Normalize primary_exercise / secondary_exercise (optional)
Sahha may return many exercise types. In a studio booking context, normalize the relevant ones into your class taxonomy:
Exercise types reference: https://docs.sahha.ai/docs/get-started/data-dictionary/exercise-types
| Sahha exercise type (examples) | Map to generic class type |
|---|---|
yoga | Yoga |
pilates | Pilates |
barre | Barre |
strength_training, traditional_strength_training, weightlifting | Strength |
functional_strength_training | Functional Strength |
high_intensity_interval_training | HIIT |
boot_camp, cross_training, mixed_cardio | Bootcamp / Circuit |
biking_stationary | Cycling / Spin |
boxing, kickboxing, martial_arts | Boxing / Combat |
cardio_dance, dance, dancing, social_dance | Dance / Cardio Dance |
stretching, flexibility, preparation_and_recovery, mind_and_body | Mobility / Stretch / Recovery |
core_training | Core / Stability |
rowing_machine, running_treadmill, running | Endurance (Run/Row) |
Step 5 — A simple scoring recipe (easy to ship)
A practical default:
- Start with preference
- Use
primary_exercise_typeto pick a primary set of class types (rank highest).
- Use
- Apply capacity
- If
activity_level = sedentaryorexercise_frequency = rare_exerciser, down-rank HIIT/Boxing/Bootcamp.
- If
- Apply recovery modifier
- If
sleep_qualityoroverall_wellnessis in the bottom band, bias toward Mobility/Yoga/Pilates and moderate Strength.
- If
- Add variety
- Include 1–2 “Also works” types to avoid repetition.
- Apply timing
- Use
wake_schedule/bed_scheduleto decide when to send and what time slots to highlight.
- Use
This keeps the system explainable (“we suggested Pilates because you trend mind-body + your sleep has been inconsistent”), which helps user trust.
Example: What your app can show
Suggested classes for you:
- Pilates (primary)
- Mobility / Recovery (secondary)
- Strength (light) (variety)
Driven by archetypes like:
primary_exercise_type = mind_body_orientedsleep_quality = fair_sleep_qualityexercise_frequency = occasional_exerciser
Copy/paste implementation checklist
- Add
class_type_normalizedto your class/session objects - Create a lookup mapping from archetype values → recommended class types (tables above)
- Decide your ranking logic (preference → capacity → recovery → timing)
- Route archetype outputs to your engagement tool (Customer.io / Klaviyo) for journeys and triggers
- Log exposure + bookings to tune ranking over time