endpoints:
  - "https://overpass-api.de/api/interpreter"
  - "https://overpass.kumi.systems/api/interpreter"
timeout_seconds: 180
groups:
  golf_courses:
    roles: [activity_infrastructure]
    activity_tags: [golf]
    visitor_prone: false
    queries: ['nwr["leisure"="golf_course"]', 'nwr["golf"="driving_range"]', 'nwr["shop"="golf"]']
  climbing_indoor:
    roles: [activity_infrastructure]
    activity_tags: [rock_climbing]
    visitor_prone: false
    queries: ['nwr["leisure"~"sports_centre|fitness_centre"]["sport"="climbing"]', 'nwr["sport"="climbing"]["indoor"="yes"]']
  climbing_outdoor:
    roles: [activity_infrastructure]
    activity_tags: [rock_climbing]
    visitor_prone: true
    queries: ['nwr["sport"="climbing"]["indoor"!="yes"]["leisure"!~"sports_centre|fitness_centre"]', 'nwr["climbing"]']
  gyms_fitness: {roles: [activity_infrastructure], activity_tags: [fitness, strength_training], visitor_prone: false, queries: ['nwr["leisure"="fitness_centre"]', 'nwr["leisure"="sports_centre"]["sport"~"fitness|multi"]']}
  # Route relations (route=hiking / route=bicycle) are pathologically expensive over
  # metro-scale (45-min) bboxes — they 504 the public Overpass instances. They add only
  # low-value, correlated-family-capped, visitor-prone density context, so phase 1 uses
  # cheap access-point signals (trailheads, bike/sports shops) instead. Revisit if a
  # self-hosted Overpass makes relation scans affordable.
  trails_hiking: {roles: [activity_infrastructure], activity_tags: [hiking, outdoors], visitor_prone: true, queries: ['nwr["highway"="trailhead"]', 'nwr["information"="trailhead"]', 'nwr["tourism"="trail_riding_station"]']}
  running_cycling: {roles: [activity_infrastructure], activity_tags: [running, cycling], visitor_prone: false, queries: ['nwr["leisure"="track"]["sport"="running"]', 'nwr["shop"="bicycle"]', 'nwr["shop"="sports"]']}
  rec_league_facilities: {roles: [activity_infrastructure, organized_audience_node], activity_tags: [softball, volleyball, kickball, adult_recreation_league], visitor_prone: false, queries: ['nwr["leisure"="pitch"]["sport"~"softball|baseball|volleyball|soccer|basketball"]', 'nwr["leisure"="sports_hall"]']}
  # A movement-coaching practice competes with hands-on manual therapy, not with
  # the physicians who diagnose the problem. sports_medicine moved out of this
  # group into referral_partners for that reason (worksheet map plan).
  direct_competitors: {roles: [direct_competitor], activity_tags: [], visitor_prone: false, queries: ['nwr["healthcare"="physiotherapist"]', 'nwr["healthcare:speciality"~"physiotherapy|chiropractic|osteopathy"]', 'nwr["amenity"~"doctors|clinic"]["healthcare:speciality"~"physiotherapy|chiropractic"]', 'nwr["office"="therapist"]']}
  # Clinicians who see the injury first and have nowhere to send it on to. No
  # query in this file reached orthopedics or podiatry before, so this is a new
  # lane rather than a relabelling of the competitor lane.
  referral_partners: {roles: [referral_partner], activity_tags: [], visitor_prone: false, queries: ['nwr["healthcare"="podiatrist"]', 'nwr["healthcare:speciality"~"orthopaedics|orthopedics|podiatry|sports_medicine"]', 'nwr["amenity"~"doctors|clinic"]["healthcare:speciality"~"orthopaedics|orthopedics|podiatry|sports_medicine"]']}
  adjacent_competitors: {roles: [adjacent_competitor], activity_tags: [], visitor_prone: false, queries: ['nwr["shop"="massage"]', 'nwr["healthcare"="alternative"]', 'nwr["leisure"="fitness_centre"]["sport"~"yoga|pilates"]', 'nwr["sport"~"yoga|pilates"]']}
  collaborators: {roles: [potential_collaborator], activity_tags: [], visitor_prone: false, queries: ['nwr["sport"~"yoga|pilates"]', 'nwr["club"="sport"]', 'nwr["amenity"="community_centre"]']}
  audience_nodes: {roles: [organized_audience_node], activity_tags: [], visitor_prone: false, queries: ['nwr["club"="sport"]', 'nwr["amenity"="community_centre"]', 'nwr["amenity"="social_facility"]["social_facility:for"="senior"]', 'nwr["golf"="clubhouse"]']}
