lifestyle.book_wellness_retreat — Full Intent Specification
INTENT NAMESPACE: lifestyle
INTENT NAME: book_wellness_retreat
FULL ID: lifestyle.book_wellness_retreat
VERSION: v1.0.0
STATUS: draft
LAST UPDATED: 2026-05-10
TTBS WEIGHTS: time 0.20 · taste 0.40 · budget 0.20 · safety 0.20
Wellness retreat is a multi-day stay-and-program experience: yoga retreat, ayurveda panchakarma, detox retreat, silent meditation retreat, wellness sabbatical. Combines lodging + food + wellness activities. Inherits from mobility.book_outstation_package (multi-day shape with day-by-day itinerary), travel.book_hotel (lodging shape), lifestyle.book_yoga_class and lifestyle.book_spa_treatment (activity shape). Locked structural fields: (a) retreat_kind enum with depth (yoga, ayurveda, silent, detox, sabbatical, fitness_bootcamp); (b) retreat_program block with day-by-day plan; (c) lodging block (room kind, sharing, dining); (d) inclusions enum array (meals, activities, consultations, treatments); (e) transportation_to_retreat separate or included.
Inheritance contract: every relevant field from outstation_package + book_hotel + spa/yoga REQUIRED.
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "yoga retreat 3 days"
- "Ayurveda panchakarma 7-day"
- "silent meditation retreat Vipassana"
- "detox retreat Kerala"
- "wellness sabbatical week"
- "fitness bootcamp 5-day"
- "wellness retreat couples"
- "Ayurveda Kerala Coorg"
- "weekend wellness getaway"
Classifies OUT — borderline NO
- "yoga class today" →
lifestyle.book_yoga_class - "spa treatment" →
lifestyle.book_spa_treatment - "hotel stay" →
travel.book_hotel - "outstation cab to Coorg" →
mobility.book_outstation_package - "personal trainer" →
lifestyle.book_personal_trainer
MULTI-INTENT TRIGGERS
- "wellness retreat and flight to Kerala" →
lifestyle.book_wellness_retreat+travel.book_flight - "wellness retreat and intercity cab" →
lifestyle.book_wellness_retreat+mobility.book_intercity_ride
2. INPUT — TOMO → PROVIDER
{
"intent": "lifestyle.book_wellness_retreat",
"intent_version": "v1.0.0",
"request_id": "req_wr_8h2k_2026-05-10T08:00:00Z",
"user_session_id": "anon_user_token_or_uid",
"retreat_kind": "ayurveda_panchakarma",
"retreat_kinds_acceptable": ["ayurveda_panchakarma", "yoga_retreat", "detox_retreat"],
"search_area": {
"destination_cities": ["Kochi", "Coorg", "Rishikesh", "Mysore"],
"country_code": "IN",
"max_distance_from_origin_km": 1500,
"origin_city": "Hyderabad"
},
"schedule": {
"start_iso": "2026-06-15T11:00:00+05:30",
"end_iso": "2026-06-22T11:00:00+05:30",
"duration_days": 7,
"duration_nights": 7,
"is_flexible_window": true,
"flexibility_days": 3
},
"guests": {
"guest_count": 1,
"adult_count": 1,
"child_count": 0,
"infant_count": 0,
"couples_kind": "solo",
"dietary_filters": ["veg"],
"allergens_to_avoid": ["peanuts"]
},
"user_wellness_profile": {
"gender": "female",
"age_band": "26-35",
"primary_health_goals": ["stress_relief", "detox"],
"current_health_concerns": ["mild_back_pain", "insomnia"],
"medical_conditions_disclosed": [],
"fitness_level": "intermediate",
"yoga_experience": "intermediate",
"previous_retreat_count": 1
},
"retreat_program": {
"wellness_focus_kinds": ["ayurveda_panchakarma", "abhyanga_daily", "shirodhara"],
"yoga_sessions_per_day": 2,
"meditation_sessions_per_day": 1,
"treatment_sessions_per_day_min": 1,
"consultation_kind": "doctor_at_arrival",
"personalization_level": "fully_personalized",
"silent_kind": "non_silent"
},
"lodging": {
"room_kind_acceptable": ["private_room", "private_cottage"],
"room_kind_preferred": "private_cottage",
"shared_or_solo": "solo",
"ac_required": true,
"ensuite_bathroom_required": true,
"view_kind_acceptable": ["mountain", "garden", "courtyard"],
"kitchenette_required": false,
"wifi_required": true,
"phone_disconnect_acceptable": true
},
"inclusions_required": [
"all_meals", "yoga_classes", "meditation_sessions",
"ayurveda_treatments", "doctor_consultation_arrival",
"wellness_kit", "wifi", "transport_from_nearest_airport"
],
"exclusions_acceptable": ["alcohol", "non_veg", "phone_use_in_premises"],
"preferences": {
"retreat_property_kind": ["dedicated_ayurveda_resort", "wellness_resort"],
"retreat_property_kind_preferred": "dedicated_ayurveda_resort",
"ayurveda_authentic_required": true,
"ayurveda_certification_authority_acceptable": ["traditional_ayurveda_council", "rashtriya_ayurveda_vidyapeeth"],
"doctor_qualifications_required": ["bams_minimum", "panchakarma_specialist"],
"instructor_qualifications_required": ["yoga_alliance_500_minimum"],
"kyc_required_for_all_staff": true,
"budget_band": "good",
"budget_max_inr_total": 85000,
"online_payment_required": true,
"deposit_pct_acceptable_max": 0.5
},
"context": {
"user_locale": "en-IN",
"user_currency_pref": "INR",
"is_solo_traveler": true,
"trust_signals": {
"is_repeat_customer": false,
"user_account_age_days": 312,
"verified_phone": true,
"verified_address": true
}
}
}
| Field | Type | Constraint | Notes |
|---|---|---|---|
intent |
string | REQUIRED, equals "lifestyle.book_wellness_retreat" |
|
retreat_kind |
enum | REQUIRED, see §5 | |
retreat_kinds_acceptable |
array |
REQUIRED, ≥1 | |
search_area.destination_cities |
array |
REQUIRED, ≥1 | |
search_area.max_distance_from_origin_km |
int | REQUIRED, ≥0 | |
schedule.start_iso |
ISO_DATETIME | REQUIRED | |
schedule.end_iso |
ISO_DATETIME | REQUIRED | |
schedule.duration_days |
int | REQUIRED, ≥1 | |
schedule.duration_nights |
int | REQUIRED, ≥0 | |
schedule.is_flexible_window |
bool | REQUIRED | |
schedule.flexibility_days |
int | REQUIRED, ≥0 | |
guests.couples_kind |
enum | REQUIRED, STRICT solo | couples | family | friends_group |
|
user_wellness_profile.primary_health_goals |
array |
REQUIRED, ≥1 | see §5 |
user_wellness_profile.current_health_concerns |
array |
REQUIRED, may be empty | see §5 |
user_wellness_profile.previous_retreat_count |
int | REQUIRED, ≥0 | |
retreat_program.wellness_focus_kinds |
array |
REQUIRED, ≥1 | see §5 |
retreat_program.yoga_sessions_per_day |
int | REQUIRED, ≥0 | |
retreat_program.meditation_sessions_per_day |
int | REQUIRED, ≥0 | |
retreat_program.treatment_sessions_per_day_min |
int | REQUIRED, ≥0 | |
retreat_program.consultation_kind |
enum | REQUIRED, see §5 | |
retreat_program.personalization_level |
enum | REQUIRED, see §5 | |
retreat_program.silent_kind |
enum | REQUIRED, see §5 | |
lodging.room_kind_acceptable |
array |
REQUIRED, ≥1 | see §5 |
lodging.shared_or_solo |
enum | REQUIRED, STRICT solo | shared_double | shared_triple | dorm |
|
lodging.view_kind_acceptable |
array |
REQUIRED, ≥1 | see §5 |
lodging.phone_disconnect_acceptable |
bool | REQUIRED | drives silent retreat options |
inclusions_required |
array |
REQUIRED, ≥1 | see §5 |
exclusions_acceptable |
array |
REQUIRED, may be empty | see §5 |
preferences.retreat_property_kind |
array |
REQUIRED, ≥1 | see §5 |
preferences.ayurveda_authentic_required |
bool | REQUIRED | |
preferences.ayurveda_certification_authority_acceptable |
array |
REQUIRED | see §5 |
preferences.doctor_qualifications_required |
array |
REQUIRED, may be empty | see §5 |
preferences.instructor_qualifications_required |
array |
REQUIRED, may be empty | see §5 |
preferences.kyc_required_for_all_staff |
bool | REQUIRED | |
preferences.budget_max_inr_total |
INR_INTEGER | REQUIRED | |
preferences.deposit_pct_acceptable_max |
float | REQUIRED, 0-1 |
Anti-fabrication preamble (universal): no paid placement, no urgency text, no commission-influenced fields.
3. PROVIDER TOOLS
10 tools: search, detail, validate_personalization, book, get_state, modify, cancel, confirm_arrival, daily_progress_update, rate_retreat. ADD:
Tool 11: arrival_consultation_summary
PURPOSE: partner uploads doctor's arrival-consultation report
INPUT: { booking_ref, consultation_kit, request_id }
OUTPUT: { acknowledged: true, summary_iso, personalized_program_url }
SLA: p95 < 2000ms
All 11 REQUIRED.
4. RESPONSE SHAPE
WellnessRetreatOption
Inherits from mobility.book_outstation_package (multi-day shape) + travel.book_hotel (lodging shape). All those fields REQUIRED. ADD wellness-specific blocks.
retreat_property:
id: string, REQUIRED
merchant_id: string, REQUIRED
name: string, REQUIRED
brand: string, REQUIRED
property_kind: STRICT ENUM, REQUIRED # see §5
founded_year: int, REQUIRED
total_rooms: int, REQUIRED, ≥1
total_active_retreats_running: int, REQUIRED, ≥0
partner_account_age_days: int, REQUIRED, ≥0
partner_retreats_completed_30day: int, REQUIRED, ≥0
address:
line_1: string, REQUIRED
neighborhood: string, REQUIRED
city: string, REQUIRED
state: string, REQUIRED
pincode: string, REQUIRED
country_code: string, REQUIRED
lat: float, REQUIRED
lng: float, REQUIRED
google_place_id: string, REQUIRED
nearest_airport_iata: string, REQUIRED
distance_to_airport_km: float, REQUIRED
ratings:
overall_score: float, REQUIRED, 0-5
overall_count: int, REQUIRED, ≥0
recent_30day_score: float, REQUIRED, 0-5
program_quality_score: float, REQUIRED, 0-5
food_quality_score: float, REQUIRED, 0-5
accommodation_score: float, REQUIRED, 0-5
instructor_skill_score: float, REQUIRED, 0-5
therapist_skill_score: float, REQUIRED, 0-5
cleanliness_score: float, REQUIRED, 0-5
program_completion_30day_pct: float, REQUIRED, 0-1
amenities: # property amenities
pool_available: boolean, REQUIRED
spa_zone_available: boolean, REQUIRED
yoga_shala_available: boolean, REQUIRED
meditation_hall_available: boolean, REQUIRED
nature_walks_available: boolean, REQUIRED
library_available: boolean, REQUIRED
organic_garden_on_site: boolean, REQUIRED
silent_zones_designated: boolean, REQUIRED
digital_detox_supported: boolean, REQUIRED
laundry_service_available: boolean, REQUIRED
wifi_available: boolean, REQUIRED
wifi_in_rooms_only: boolean, REQUIRED
cell_signal_quality: STRICT ENUM, REQUIRED # see §5
transport_from_airport_kind: STRICT ENUM, REQUIRED # see §5
transport_from_airport_inr: INR_INTEGER, REQUIRED # 0 if included
wheelchair_accessible: boolean, REQUIRED
elderly_friendly: boolean, REQUIRED
family_friendly: boolean, REQUIRED
trust:
municipal_license_number: string, REQUIRED
municipal_license_valid_until: ISO_DATE, REQUIRED
fssai_license_number: string, REQUIRED # for kitchen
fssai_license_valid_until: ISO_DATE, REQUIRED
fssai_grade: STRICT ENUM, REQUIRED
safety_audit_iso: ISO_DATETIME, REQUIRED
safety_audit_score: int, REQUIRED, 0-100
fire_safety_compliant: boolean, REQUIRED
aed_defibrillator_present: boolean, REQUIRED
first_aid_kit_present: boolean, REQUIRED
24x7_emergency_contact: boolean, REQUIRED
employee_kyc_pct: int, REQUIRED, 0-100
insurance_coverage_inr: INR_INTEGER, REQUIRED
public_liability_coverage: boolean, REQUIRED
medical_emergency_coverage: boolean, REQUIRED
ayurveda_authentic_certified: boolean, REQUIRED
ayurveda_certification_authority: STRICT ENUM, REQUIRED
yoga_lineage_certified: boolean, REQUIRED
yoga_lineage: STRICT ENUM, REQUIRED
tomo_field_team_audited: boolean, REQUIRED
photos:
thumbnail_url: URL, REQUIRED
hero_url: URL, REQUIRED
rooms_photos_url: URL, REQUIRED
yoga_shala_photos_url: URL, REQUIRED
meditation_hall_photos_url: URL, REQUIRED
spa_zone_photos_url: URL, REQUIRED
food_photos_url: URL, REQUIRED
grounds_photos_url: URL, REQUIRED
ai_generated_photos: boolean, REQUIRED # MUST be false
retreat_program:
retreat_kind: STRICT ENUM, REQUIRED
duration_days: int, REQUIRED
arrival_to_departure_minutes: int, REQUIRED
schedule_template: array, REQUIRED, ≥1
- day_index: int, REQUIRED
schedule: array, REQUIRED, ≥1
- start_iso_local: string, REQUIRED # "06:00"
end_iso_local: string, REQUIRED
activity_kind: STRICT ENUM, REQUIRED # see §5
activity_name: string, REQUIRED
mandatory: boolean, REQUIRED
location: STRICT ENUM, REQUIRED # yoga_shala | meditation_hall | dining_hall | spa | room | grounds
yoga_sessions_per_day_avg: int, REQUIRED
meditation_sessions_per_day_avg: int, REQUIRED
treatment_sessions_per_day_avg: int, REQUIRED
silent_kind: STRICT ENUM, REQUIRED
consultation_at_arrival: boolean, REQUIRED
personalization_level: STRICT ENUM, REQUIRED
feasibility_score: int, REQUIRED, 0-100
contra_indications_for_user: array<STRICT ENUM>, REQUIRED, may be empty
doctor_or_lead_practitioner:
practitioner_id: string, REQUIRED
display_name: string, REQUIRED
photo_url: URL, REQUIRED
photo_ai_generated: boolean, REQUIRED # MUST be false
qualifications: array<STRICT ENUM>, REQUIRED, ≥1 # see §5
certifying_authorities: array<STRICT ENUM>, REQUIRED, ≥1
experience_years: int, REQUIRED, ≥0
specializations: array<STRICT ENUM>, REQUIRED, ≥1
languages_spoken: array<RFC_3066_LOCALE>, REQUIRED, ≥1
rating_avg: float, REQUIRED, 0-5
consultations_completed_total: int, REQUIRED, ≥0
kyc:
aadhaar_verified: boolean, REQUIRED
pan_verified: boolean, REQUIRED
background_check_passed: boolean, REQUIRED
instructors_and_therapists_summary:
yoga_instructors_count: int, REQUIRED, ≥0
meditation_teachers_count: int, REQUIRED, ≥0
ayurveda_therapists_count: int, REQUIRED, ≥0
spa_therapists_count: int, REQUIRED, ≥0
staff_kyc_pct: int, REQUIRED, 0-100
staff_certified_pct: int, REQUIRED, 0-100
lodging:
room_kind_assigned: STRICT ENUM, REQUIRED
shared_or_solo: STRICT ENUM, REQUIRED
bed_kind: STRICT ENUM, REQUIRED # see §5
ac_or_fan: STRICT ENUM, REQUIRED
ensuite_bathroom: boolean, REQUIRED
view_kind: STRICT ENUM, REQUIRED
kitchenette: boolean, REQUIRED
wifi_in_room: boolean, REQUIRED
amenities_in_room: array<STRICT ENUM>, REQUIRED # see §5
food:
meals_included_per_day: int, REQUIRED # 3 typical, 2 for fasting retreat
meal_kinds_included: array<STRICT ENUM>, REQUIRED # breakfast | lunch | dinner | snack
cuisine_kind: STRICT ENUM, REQUIRED # see §5
veg_only_kitchen: boolean, REQUIRED
vegan_options: boolean, REQUIRED
jain_options: boolean, REQUIRED
satvik_options: boolean, REQUIRED
ayurveda_aligned: boolean, REQUIRED
fasting_kind_supported: STRICT ENUM, REQUIRED # see §5
organic_pct: int, REQUIRED, 0-100
inclusions_offered: array<STRICT ENUM>, REQUIRED # see §5
exclusions_disclosed: array<STRICT ENUM>, REQUIRED # what's NOT included
fare:
total_inr: INR_INTEGER, REQUIRED
per_day_avg_inr: INR_INTEGER, REQUIRED
base_program_inr: INR_INTEGER, REQUIRED
lodging_inr: INR_INTEGER, REQUIRED
food_inr: INR_INTEGER, REQUIRED
treatments_inr: INR_INTEGER, REQUIRED
consultations_inr: INR_INTEGER, REQUIRED
transport_from_airport_inr: INR_INTEGER, REQUIRED # 0 if not requested
taxes_inr: INR_INTEGER, REQUIRED
platform_fee_inr: INR_INTEGER, REQUIRED
fare_breakdown_text: string, REQUIRED
is_upfront_fare: boolean, REQUIRED
fare_locked_until_iso: ISO_DATETIME, REQUIRED
deposit:
required: boolean, REQUIRED
amount_inr: INR_INTEGER, REQUIRED
deposit_pct: float, REQUIRED, 0-1
balance_due_iso: ISO_DATETIME, REQUIRED # typically 30 days before
hold_kind: STRICT ENUM, REQUIRED
cancellation:
free_cancel_until_iso: ISO_DATETIME, REQUIRED
cancel_charge_within_30days_inr: INR_INTEGER, REQUIRED
cancel_charge_within_14days_inr: INR_INTEGER, REQUIRED
cancel_charge_within_7days_inr: INR_INTEGER, REQUIRED
cancel_charge_within_24h_inr: INR_INTEGER, REQUIRED
no_show_charge_inr: INR_INTEGER, REQUIRED
partner_cancel_compensation_inr: INR_INTEGER, REQUIRED
refund_processing_days: int, REQUIRED, ≥0
freshness:
data_last_synced_iso: ISO_DATETIME, REQUIRED
_provider:
name: string, REQUIRED
tomo_partner_id: string, REQUIRED
partner_tier: STRICT ENUM, REQUIRED
deep_link: URL, REQUIRED
customer_support_phone: string, REQUIRED
customer_support_email: string, REQUIRED
customer_support_24x7: boolean, REQUIRED
in_app_chat_supported: boolean, REQUIRED
partner_retreat_volume_30d: int, REQUIRED, ≥0
partner_completion_rate_30d: float, REQUIRED, 0-1
WellnessRetreatTrack
booking_ref: string, REQUIRED
status: STRICT ENUM, REQUIRED
status_updated_iso: ISO_DATETIME, REQUIRED
status_history: array, REQUIRED, ≥1
trip_progress:
current_day_index: int, REQUIRED, ≥0
total_days: int, REQUIRED
days_completed: int, REQUIRED, ≥0
arrival_iso: ISO_DATETIME, REQUIRED # may equal future
departure_iso: ISO_DATETIME, REQUIRED
doctor_consultation_complete: boolean, REQUIRED
personalized_program_url: URL, REQUIRED # may be empty until day 1
day_progress:
yoga_sessions_attended_today: int, REQUIRED, ≥0
meditation_sessions_attended_today: int, REQUIRED, ≥0
treatments_completed_today: int, REQUIRED, ≥0
meals_taken_today: int, REQUIRED, ≥0
cumulative:
yoga_sessions_total: int, REQUIRED, ≥0
meditation_sessions_total: int, REQUIRED, ≥0
treatments_total: int, REQUIRED, ≥0
consultations_total: int, REQUIRED, ≥0
incidents:
any_safety_incident: boolean, REQUIRED
any_medical_event: boolean, REQUIRED
contra_indication_modifications: array, REQUIRED, may be empty
support_phone: string, REQUIRED
support_email: string, REQUIRED
Forbidden fields
paid_placement_score | sponsored_rank | promotion_priority |
fake_total_active_retreats_running | auto_inflate_consultations_completed |
ai_generated_photos (must equal false) | hidden_program_fee |
fake_ayurveda_certification | fake_doctor_qualifications |
fake_program_completion_rate_30d | hidden_arrival_consultation_charge
5. CONTROLLED VOCABULARIES
retreat_kind
yoga_retreat | ayurveda_panchakarma | ayurveda_rejuvenation |
silent_meditation | vipassana | naturopathy_detox | water_fasting |
juice_fasting | fitness_bootcamp | weight_loss_program |
postnatal_recovery | wellness_sabbatical | spiritual_pilgrimage |
nature_immersion | digital_detox
retreat_property.property_kind
dedicated_ayurveda_resort | wellness_resort | yoga_ashram |
meditation_center | naturopathy_center | wellness_hotel |
fitness_resort | celebrity_brand_retreat | luxury_resort
user_wellness_profile.primary_health_goals[]
stress_relief | detox | weight_loss | spiritual | better_sleep |
flexibility | strength | meditation_deepening | postnatal_recovery |
post_injury_recovery | digital_detox | sabbatical | spiritual_growth |
specific_condition_treatment | general_wellness
user_wellness_profile.current_health_concerns[]
hypertension | diabetes | obesity | mild_back_pain | severe_back_pain |
neck_pain | knee_pain | shoulder_pain | hernia | varicose_veins |
insomnia | anxiety | depression | digestive_issues | hormone_imbalance |
chronic_fatigue | postnatal | postpartum | recent_surgery | other | none
user_wellness_profile.medical_conditions_disclosed[]
hypertension | diabetes | heart_condition | cancer_active_treatment |
recent_surgery | pregnancy | postpartum | medication_dependent |
severe_allergies | epilepsy | other | none
user_wellness_profile.fitness_level
beginner | novice | intermediate | advanced | athlete
user_wellness_profile.yoga_experience
none | beginner | novice | intermediate | advanced | teacher_level
retreat_program.wellness_focus_kinds[]
panchakarma_traditional | abhyanga_daily | shirodhara | nasya |
udvartana | choornaswedana | external_basti | internal_basti |
hatha_yoga | vinyasa_yoga | iyengar_yoga | ashtanga_yoga |
kundalini_yoga | yin_yoga | restorative_yoga |
vipassana_meditation | mantra_meditation | breath_meditation |
trataka | yoga_nidra |
naturopathy | hydrotherapy | mud_therapy | sun_therapy |
fasting_supervised | juice_fasting | raw_food | satvik_diet |
fitness_strength | fitness_cardio | hiit_intervals
retreat_program.consultation_kind
doctor_at_arrival | doctor_at_arrival_and_departure |
group_orientation_only | self_guided | partner_specific
retreat_program.personalization_level and WellnessRetreatOption.retreat_program.personalization_level
group_uniform | minor_modifications | partially_personalized |
fully_personalized | clinical_protocol_personalized
retreat_program.silent_kind
non_silent | partial_silence_designated_periods | silent_meals_only |
silent_first_3_days | full_silent_throughout
lodging.room_kind_acceptable[] and WellnessRetreatOption.lodging.room_kind_assigned
private_room | private_cottage | private_villa | shared_double |
shared_triple | dorm_4_to_6 | dorm_8_plus | tent_glamping
lodging.bed_kind
single_bed | twin_beds | queen_bed | king_bed | floor_mattress
lodging.ac_or_fan
ac_in_room | fan_only | natural_ventilation | ac_central
lodging.view_kind_acceptable[] and lodging.view_kind
mountain | garden | courtyard | pool | lake | ocean | river |
forest | none_premium | none_basic
lodging.amenities_in_room[]
hairdryer | iron | tea_kettle | mini_fridge | safe |
yoga_mat_in_room | meditation_cushion | herbal_tea_kit |
ayurveda_oils_kit | bath_amenities | balcony | private_deck
food.cuisine_kind
satvik_traditional | ayurveda_specific | south_indian | north_indian |
international_continental | mediterranean | raw_vegan | macrobiotic |
keto_specific | partner_specific
food.fasting_kind_supported
none | water_fasting | juice_fasting | partial_fasting |
intermittent_fasting | one_meal_per_day
food.meal_kinds_included[]
breakfast | lunch | dinner | snack_morning | snack_evening |
herbal_tea_unlimited
inclusions_required[] and WellnessRetreatOption.inclusions_offered[]
all_meals | breakfast_only | lunch_dinner_only |
yoga_classes | meditation_sessions | ayurveda_treatments |
spa_treatments | doctor_consultation_arrival | doctor_consultation_daily |
wellness_kit | yoga_mat | meditation_cushion |
laundry_service | wifi | transport_from_nearest_airport |
post_retreat_consultation | follow_up_30day_call |
group_activities | nature_walks | sunset_meditation |
mantra_chanting | satsangs | satsang_videos
exclusions_acceptable[] and exclusions_disclosed[]
alcohol | non_veg | smoking_in_premises | phone_use_in_premises |
electronics_in_premises | meat | eggs | caffeine | sugar |
processed_food | white_rice | onion | garlic | mushrooms
preferences.retreat_property_kind and WellnessRetreatOption.retreat_property.property_kind
Same as retreat_property.property_kind.
preferences.ayurveda_certification_authority_acceptable[]
traditional_ayurveda_council | rashtriya_ayurveda_vidyapeeth |
nimsme | partner_internal | family_lineage_certificate |
international_ayurveda_authority | none_acceptable
preferences.doctor_qualifications_required[] and doctor.qualifications[]
bams_minimum | md_ayurveda | panchakarma_specialist |
naturopathy_md | yoga_therapy_certified |
allopathic_md_for_emergency | bnys | none
preferences.instructor_qualifications_required[]
yoga_alliance_200_minimum | yoga_alliance_500_minimum |
yoga_alliance_eryt | iyengar_intermediate_minimum |
ashtanga_authorized_minimum | sivananda_ttc_minimum |
meditation_master_lineage | partner_internal_cert
retreat_property.amenities.cell_signal_quality
no_signal | weak | moderate | strong | full
retreat_property.amenities.transport_from_airport_kind
none | partner_arranged | partner_driven_car | shuttle_at_fixed_times |
self_arrange
retreat_property.trust.fssai_grade, ayurveda_certification_authority, yoga_lineage
Same enums as lifestyle.book_spa_treatment §5 and lifestyle.book_yoga_class §5.
doctor.specializations[]
panchakarma_specialist | yoga_therapy | ayurveda_pediatrics |
ayurveda_geriatrics | naturopathy | nutrition_consultant |
mental_wellness | postnatal_specialist | sport_specific |
chronic_disease_specialist
WellnessRetreatTrack.status
booked | balance_paid | arrival_pending | doctor_consultation_in_progress |
program_in_progress | day_complete | program_complete |
cancelled_by_user | cancelled_by_partner | partial_completion |
medical_event_program_modified | failed
cancel_retreat.reason
user_changed_plans | medical_emergency | family_emergency |
weather_block | found_alternative | budget_changed | other
merchant_id resolution order
1. Google Place ID
2. Municipal license number + FSSAI license number
3. partner_id + ":" + property_id
6. TTBS DIMENSIONS
Per-domain weights
lifestyle (book_wellness_retreat): { time: 0.20, taste: 0.40, budget: 0.20, safety: 0.20 }
TIME
SIGNALS USED:
- schedule.start_iso match user request HARD FILTER (within ±flexibility_days)
- distance_from_origin_km weight 0.20
- retreat_property.amenities.transport_from_airport_kind=partner_arranged weight 0.20
- flexibility on dates available weight 0.10
- cancellation tier permissiveness weight 0.20
- is_flexible_window=true → loosen date match
TASTE
SIGNALS USED:
- retreat_property.ratings.program_quality_score weight 0.20
- retreat_property.ratings.recent_30day_score weight 0.20
- retreat_program.feasibility_score for user weight 0.20
- retreat_program.personalization_level weight 0.15
- inclusions match user.inclusions_required weight 0.15
- retreat_kind in user.retreat_kinds_acceptable HARD FILTER
- food cuisine matches user.dietary_filters HARD FILTER
- lodging.room_kind in user.room_kind_acceptable HARD FILTER
- amenities match user preferences (pool, library, organic_garden) weight 0.10
HARD FILTERS:
- allergens in food
- silent_kind mismatch (user wants non_silent, partner is full_silent)
- phone_disconnect_acceptable=false AND digital_detox_supported=true → drop
BUDGET
SIGNALS USED:
- fare.total_inr vs band:
ok → wellness_resort / fitness_resort (basic)
good → dedicated_ayurveda_resort / yoga_ashram (mid)
great → celebrity_brand_retreat / luxury_resort
- fare.is_upfront_fare=true weight 0.20
- fare.transport_from_airport_inr (lower=better) weight 0.10
- deposit_pct ≤ user.deposit_pct_acceptable_max HARD FILTER
- cancellation tier permissiveness weight 0.15
- per_day_avg_inr weight 0.20
HARD FILTERS:
- fare.total_inr > preferences.budget_max_inr_total → drop
SAFETY
SIGNALS USED:
- retreat_property.trust.fire_safety_compliant HARD FILTER
- retreat_property.trust.first_aid_kit_present HARD FILTER
- retreat_property.trust.aed_defibrillator_present weight 0.20
- retreat_property.trust.24x7_emergency_contact HARD FILTER
- retreat_property.trust.medical_emergency_coverage weight 0.20
- retreat_property.trust.public_liability_coverage weight 0.15
- retreat_property.trust.insurance_coverage_inr ≥ 1000K weight 0.15
- retreat_property.trust.fssai_grade ≥ B HARD FILTER
- doctor.kyc.background_check_passed HARD FILTER
- doctor.qualifications ⊃ user.doctor_qualifications_required HARD FILTER
- retreat_property.trust.ayurveda_authentic_certified=true if ayurveda_authentic_required HARD FILTER
- staff_kyc_pct ≥ 90% HARD FILTER if kyc_required_for_all_staff
- contra_indications_for_user empty for medical-condition users HARD FILTER
Hidden ranking factor
information_completeness_score weight 0.10.
7. COMPLETION CONTRACT
POST /api/v1/cpc/mcp_provider/{tomo_partner_id}
{
"intent": "lifestyle.book_wellness_retreat",
"intent_version": "v1.0.0",
"external_id": "WR-XYZ",
"amount_inr": 82000,
"closed_at": "2026-06-22T11:00:00+05:30",
"request_id": "req_wr_8h2k_...",
"status": "completed",
"booking_ref": "WR-XYZ",
"retreat_property_id": "property_8423",
"doctor_id": "doctor_xyz",
"arrived_at": "2026-06-15T11:30:00+05:30",
"departed_at": "2026-06-22T11:00:00+05:30",
"days_completed": 7,
"yoga_sessions_attended": 12,
"meditation_sessions_attended": 6,
"treatments_completed": 14,
"consultations_completed": 2,
"any_safety_incident": false,
"any_medical_event": false,
"follow_up_30day_call_scheduled": true,
"currency": "INR",
"fare_breakdown_total_inr": 82000,
"rider_tip_inr": 2500,
"ratings_pending": true,
"notes": ""
}
Status enum: completed | cancelled_by_user | cancelled_by_partner | failed | partial_completion_user_left_early | medical_event_program_modified | terminated_with_safety_incident
8. WIDGET / 9. CACHING / 10. ERROR CODES / 11. CHECKLIST
(Inherit from mobility.book_outstation_package and travel.book_hotel. Widget type: wellness_retreat_options.)
12. ANTI-FABRICATION RULES
All from inherited intents REQUIRED. ADD:
RULE 17 — Doctor qualifications real and verifiable.
BAMS / MD claims must be backed by NMC/Ayush verifiable IDs.
Claiming MD without registration = severe medical malpractice exposure.
RULE 18 — Ayurveda authentic certification real.
RULE 19 — Treatment contra-indications honored.
User discloses condition → partner must apply contra_indications HARD FILTER.
Performing prohibited treatment = severe medical safety breach.
RULE 20 — Personalized program actually personalized.
fully_personalized claim must show day-by-day variations per user. Same
generic program for all users = breach.
RULE 21 — Silent retreat real silence.
full_silent_throughout claim must enforce. Partner staff casual conversation
= breach + program-quality issue.
RULE 22 — Fasting supervision real.
Supervised fasting requires medical oversight. Unsupervised fast claimed
as supervised = severe safety breach.
RULE 23 — Inclusions delivered.
inclusions_offered list must match what user actually receives. Charging
for "doctor_consultation_daily" then giving 1 consultation = breach.
RULE 24 — Exclusions disclosed.
Hidden exclusions revealed at arrival = breach.
RULE 25 — Insurance coverage real.
RULE 26 — Photos real, especially food + accommodation.
Stock-photo food when reality is different = breach.
RULE 27 — Group sessions advertised as private = breach.
RULE 28 — Staff KYC current within 90 days.
RULE 29 — Contra-indication modifications transparent.
If treatment is modified due to user's medical condition, partner must
notify user AND ensure modified treatment is delivered to expected duration.
Charging full price for shortened modified treatment = breach.
RULE 30 — No surprise upsells during retreat.
Treatments outside `inclusions_offered` cannot be pushed during retreat
without clear opt-in price disclosure. Aggressive upsell = breach.
VERSION HISTORY
v1.0.0 — 2026-05-10 — Initial spec (combines outstation_package + book_hotel + spa/yoga + new wellness blocks)