T
TOMO
Developer Docs
BETA These docs are under partner review. Some features described are roadmap items, not yet shipped. Verify against your sandbox before relying on any contract.
● DRAFTv1.0.0lifestyle.book_wellness_retreat

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)