{
  "title": "enjoythai.land place index",
  "description": "Thailand place index for high-value destinations, hotel areas, stations, airports, piers, market districts, and monitoring clusters.",
  "generated_from": "/data/entity-seeds.json + city research package",
  "updated": "2026-05-15",
  "generated_at": "2026-06-24T03:50:27.642Z",
  "entity_count": 62,
  "filtered_count": 62,
  "filters": {
    "query": "",
    "type": "all",
    "province": "all",
    "decision": "all"
  },
  "metrics": {
    "entity_count": 62,
    "group_count": 6,
    "type_counts": {
      "destination": 23,
      "hotel_area": 17,
      "station": 2,
      "bus_terminal": 1,
      "airport": 7,
      "pier": 4,
      "market_district": 5,
      "monitoring_cluster": 3
    }
  },
  "groups": [
    {
      "name": "Destinations",
      "entity_count": 23
    },
    {
      "name": "Hotel areas",
      "entity_count": 17
    },
    {
      "name": "Stations and terminals",
      "entity_count": 3
    },
    {
      "name": "Airports and piers",
      "entity_count": 11
    },
    {
      "name": "Market and retail anchors",
      "entity_count": 5
    },
    {
      "name": "Monitoring clusters",
      "entity_count": 3
    }
  ],
  "entities": [
    {
      "entity_id": "bangkok",
      "slug": "bangkok",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Bangkok",
      "name_th": "กรุงเทพมหานคร",
      "name_en": "Bangkok",
      "aliases": [
        "Krung Thep",
        "Bangkok city"
      ],
      "summary": "Thailand's strongest city fallback for food, transit, indoor backup, hospitals, and first-timer resilience.",
      "graph_role": "destination anchor",
      "region": "Central Thailand",
      "province": "Bangkok",
      "lat": 13.7563,
      "lon": 100.5018,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/bangkok/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Royal Thai Police station directory and provincial datasets",
          "path": "/data/sources/royal-thai-police-station-directory-and-provincial-datasets/",
          "known": true
        },
        {
          "name": "Tourist Police Bureau",
          "path": "/data/sources/tourist-police-bureau/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Air4Thai PM2.5 and AQI",
        "TMD weather and heat",
        "transport friction",
        "noise and civic complaints",
        "safety support"
      ],
      "signals": [
        {
          "type": "transport_strength",
          "label": "Transport strength",
          "severity": "high",
          "summary": "BTS, MRT, airports, and dense fallback options make Bangkok the easiest city pivot."
        },
        {
          "type": "hotel_base_quality",
          "label": "Hotel base quality",
          "severity": "high",
          "summary": "Multiple rail-linked neighborhoods let Bangkok recover from bad weather, traffic, and late plan changes."
        },
        {
          "type": "comfort_penalty",
          "label": "Comfort penalty",
          "severity": "medium",
          "summary": "Heat, AQI, traffic, and noise can make a taxi-heavy or outdoor-heavy Bangkok plan feel worse than the score suggests."
        }
      ],
      "today_checks": [
        "Check Air4Thai before heavy outdoor days.",
        "Choose a BTS/MRT-linked base before paying for a hotel.",
        "Treat cross-city taxi-heavy days as a risk, not a default."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "food_route",
        "nightlife_plan",
        "rainy_day_plan"
      ],
      "related_entities": [
        "sukhumvit",
        "silom-sathorn",
        "riverside-old-town",
        "ari",
        "bts-asok",
        "suvarnabhumi-airport",
        "yaowarat-gold-district"
      ],
      "related_pages": [
        {
          "path": "/today/bangkok/",
          "label": "Bangkok Today"
        },
        {
          "path": "/where-to-go/bangkok/",
          "label": "Bangkok destination guide"
        },
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        },
        {
          "path": "/venues/restaurants/bangkok/",
          "label": "Bangkok restaurants"
        },
        {
          "path": "/food/bangkok-food-guide/",
          "label": "Bangkok food guide"
        },
        {
          "path": "/temples/bangkok/",
          "label": "Bangkok temple route"
        },
        {
          "path": "/research/temples/bangkok/",
          "label": "Bangkok temple research"
        }
      ],
      "note": "Entity pages are graph records. Live observations now join directly through the observation ledger."
    },
    {
      "entity_id": "chiang-mai",
      "slug": "chiang-mai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Chiang Mai",
      "name_th": "เชียงใหม่",
      "name_en": "Chiang Mai",
      "aliases": [
        "Chiangmai"
      ],
      "summary": "Northern Thailand's strongest food-and-culture base when air quality is acceptable.",
      "graph_role": "destination anchor",
      "region": "Northern Thailand",
      "province": "Chiang Mai",
      "lat": 18.7883,
      "lon": 98.9853,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/chiang-mai/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Air4Thai PM2.5 and AQI",
        "TMD weather",
        "mountain road weather",
        "airport and rail access",
        "hospital and police support"
      ],
      "signals": [
        {
          "type": "aqi_dependency",
          "label": "AQI dependency",
          "severity": "high",
          "summary": "Chiang Mai is the clearest example of a destination whose value rises or falls with PM2.5 and smoke."
        },
        {
          "type": "culture_density",
          "label": "Culture density",
          "severity": "high",
          "summary": "Temples, markets, cafes, and northern-food depth give Chiang Mai a strong indoor and low-speed backup pattern."
        },
        {
          "type": "mountain_fragility",
          "label": "Mountain fragility",
          "severity": "medium",
          "summary": "Roads, rain, and smoke can make mountain-edge add-ons like Pai or viewpoints a worse fit than the city itself."
        }
      ],
      "today_checks": [
        "Treat sustained PM2.5 as the main breaker.",
        "Choose Old City or Nimman based on trip shape, not a random deal.",
        "Keep Bangkok or the coast as a real pivot if smoke stays high."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "old-city-chiang-mai",
        "nimman",
        "pai",
        "chiang-mai-airport",
        "air4thai-bangkok-urban-cluster",
        "chiang-mai-gold-shopping"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/chiang-mai/",
          "label": "Chiang Mai destination guide"
        },
        {
          "path": "/accommodation/chiang-mai/",
          "label": "Where to stay in Chiang Mai"
        },
        {
          "path": "/food/chiang-mai-khao-soi/",
          "label": "Chiang Mai khao soi route"
        },
        {
          "path": "/today/north/",
          "label": "Northern Thailand Today"
        },
        {
          "path": "/food/chiang-mai-food-guide/",
          "label": "Chiang Mai food guide"
        },
        {
          "path": "/temples/chiang-mai/",
          "label": "Chiang Mai temple route"
        },
        {
          "path": "/research/temples/chiang-mai/",
          "label": "Chiang Mai temple research"
        }
      ],
      "note": "AQI freshness matters more here than in most Thai destinations."
    },
    {
      "entity_id": "phuket",
      "slug": "phuket",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Phuket",
      "name_th": "ภูเก็ต",
      "name_en": "Phuket",
      "aliases": [
        "Phuket island"
      ],
      "summary": "The strongest infrastructure-first beach base in Thailand when airport access and rainy-day backup matter.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Andaman Coast",
      "province": "Phuket",
      "lat": 7.8804,
      "lon": 98.3923,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/phuket/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and marine warnings",
        "airport access",
        "road friction",
        "hotel-area fit",
        "venue density"
      ],
      "signals": [
        {
          "type": "infrastructure_strength",
          "label": "Infrastructure strength",
          "severity": "high",
          "summary": "Phuket wins when flights, hospitals, hotels, and bad-weather backup matter more than a perfect island mood."
        },
        {
          "type": "beach_base_quality",
          "label": "Beach base quality",
          "severity": "high",
          "summary": "The right beach area makes Phuket easy; the wrong one creates daily traffic and transfer pain."
        },
        {
          "type": "marine_risk",
          "label": "Marine risk",
          "severity": "medium",
          "summary": "Andaman weather can change boat-day value even when Phuket itself remains workable."
        }
      ],
      "today_checks": [
        "Choose the beach area before the hotel.",
        "Check marine and weather layers before committing to boat-heavy days.",
        "Use Old Town as the indoor and food pivot when beach weather weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "ferry_plan",
        "beach_plan"
      ],
      "related_entities": [
        "kata-karon",
        "patong",
        "rawai-nai-harn",
        "phuket-old-town",
        "rassada-pier",
        "phuket-airport",
        "phuket-gold-shopping"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        },
        {
          "path": "/accommodation/phuket/",
          "label": "Where to stay in Phuket"
        },
        {
          "path": "/venues/restaurants/phuket/",
          "label": "Phuket restaurants"
        },
        {
          "path": "/ferries/phuket-krabi/",
          "label": "Phuket to Krabi ferries"
        },
        {
          "path": "/food/phuket-food-route/",
          "label": "Phuket food guide"
        },
        {
          "path": "/temples/phuket/",
          "label": "Phuket temple route"
        },
        {
          "path": "/research/temples/phuket/",
          "label": "Phuket temple research"
        }
      ],
      "note": "Phuket is often the infrastructure beach answer, not always the lowest-friction boat answer."
    },
    {
      "entity_id": "krabi",
      "slug": "krabi",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Krabi",
      "name_th": "กระบี่",
      "name_en": "Krabi",
      "aliases": [
        "Krabi Town"
      ],
      "summary": "Scenery-first Andaman base where boat dependence matters more than airport convenience.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Andaman Coast",
      "province": "Krabi",
      "lat": 8.0863,
      "lon": 98.9063,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/krabi/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather",
        "marine warnings",
        "pier and ferry context",
        "airport access",
        "road transfers"
      ],
      "signals": [
        {
          "type": "scenery_payoff",
          "label": "Scenery payoff",
          "severity": "high",
          "summary": "Limestone, island views, and Railay logic make Krabi a high-payoff destination when the coast is stable."
        },
        {
          "type": "boat_dependency",
          "label": "Boat dependency",
          "severity": "medium",
          "summary": "Krabi becomes fragile when the itinerary depends on boats instead of treating them as optional."
        },
        {
          "type": "backup_strength",
          "label": "Backup strength",
          "severity": "medium",
          "summary": "Krabi Town and Ao Nang are practical pivots, but the whole destination is less resilient than Phuket."
        }
      ],
      "today_checks": [
        "Do not treat every day as a boat day.",
        "Pick Ao Nang for logistics unless scenery alone justifies a more fragile base.",
        "Keep Phuket as the infrastructure pivot if weather worsens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "ferry_plan",
        "beach_plan"
      ],
      "related_entities": [
        "ao-nang",
        "railay",
        "ao-nang-pier",
        "rassada-pier",
        "phuket",
        "krabi-airport"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/krabi/",
          "label": "Krabi destination guide"
        },
        {
          "path": "/accommodation/krabi/",
          "label": "Where to stay in Krabi"
        },
        {
          "path": "/ferries/krabi-koh-lanta/",
          "label": "Krabi to Koh Lanta ferries"
        },
        {
          "path": "/food/southern-thai-food-for-beach-trips/",
          "label": "Krabi food guide"
        },
        {
          "path": "/temples/krabi/",
          "label": "Krabi temple route"
        },
        {
          "path": "/research/temples/krabi/",
          "label": "Krabi temple research"
        }
      ],
      "note": "Krabi should usually be modeled as a scenery destination with a transfer penalty."
    },
    {
      "entity_id": "koh-samui",
      "slug": "koh-samui",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Koh Samui",
      "name_th": "เกาะสมุย",
      "name_en": "Koh Samui",
      "aliases": [
        "Samui"
      ],
      "summary": "Comfort-first Gulf island base with airport access, resort depth, and a practical pivot away from Andaman weather.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Gulf Coast",
      "province": "Surat Thani",
      "lat": 9.512,
      "lon": 100.0136,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/koh-samui/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather",
        "airport access",
        "ferry and pier context",
        "hotel-area fit",
        "venue density"
      ],
      "signals": [
        {
          "type": "gulf_weather_pivot",
          "label": "Gulf weather pivot",
          "severity": "high",
          "summary": "Samui exists in the graph partly as a weather alternative to Phuket and Krabi."
        },
        {
          "type": "resort_base_quality",
          "label": "Resort base quality",
          "severity": "high",
          "summary": "Samui is strongest when the trip needs soft landings, easy resort comfort, and enough services behind the beach."
        },
        {
          "type": "transfer_fragility",
          "label": "Transfer fragility",
          "severity": "medium",
          "summary": "Flights help, but island chains, ferries, and last-boat risk still matter when the trip expands beyond Samui."
        }
      ],
      "today_checks": [
        "Compare Gulf weather directly with the Andaman coast.",
        "Use Samui itself as the stable base before adding Phangan or Tao.",
        "Check airport-plus-ferry stacks before paying for tight itineraries."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "ferry_plan",
        "beach_plan"
      ],
      "related_entities": [
        "bophut-fishermans-village",
        "chaweng",
        "lamai",
        "na-thon-pier",
        "donsak-pier",
        "koh-phangan",
        "samui-airport"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/koh-samui/",
          "label": "Koh Samui destination guide"
        },
        {
          "path": "/accommodation/koh-samui/",
          "label": "Where to stay in Koh Samui"
        },
        {
          "path": "/ferries/koh-samui-koh-phangan-koh-tao/",
          "label": "Samui / Phangan / Tao ferries"
        }
      ],
      "note": "Samui is usually the softest Gulf-island base in the graph."
    },
    {
      "entity_id": "koh-phangan",
      "slug": "koh-phangan",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Koh Phangan",
      "name_th": "เกาะพะงัน",
      "name_en": "Koh Phangan",
      "aliases": [
        "Ko Pha-ngan",
        "Phangan"
      ],
      "summary": "Flexible Gulf island with quiet coves, longer-stay potential, wellness pockets, and event-driven crowd swings.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Gulf Coast",
      "province": "Surat Thani",
      "lat": 9.731,
      "lon": 100.0136,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/koh-phangan/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather",
        "ferry timing",
        "event timing",
        "venue and wellness density"
      ],
      "signals": [
        {
          "type": "ferry_dependency",
          "label": "Ferry dependency",
          "severity": "high",
          "summary": "Phangan becomes fragile when travelers underestimate weather, last-boat timing, or pier transfer burden."
        },
        {
          "type": "crowd_variability",
          "label": "Crowd variability",
          "severity": "medium",
          "summary": "The island changes personality dramatically around major event windows."
        },
        {
          "type": "longer_stay_fit",
          "label": "Longer-stay fit",
          "severity": "medium",
          "summary": "Phangan works best when you give it time rather than squeezing it into a brittle island chain."
        }
      ],
      "today_checks": [
        "Treat Full Moon timing as a routing signal, not a footnote.",
        "Do not force Phangan behind a weak ferry day.",
        "Use Samui as the softer pivot if the chain looks brittle."
      ],
      "decisions": [
        "where_to_go_today",
        "ferry_plan",
        "nightlife_plan"
      ],
      "related_entities": [
        "koh-samui",
        "na-thon-pier",
        "donsak-pier",
        "samui-airport"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/koh-phangan/",
          "label": "Koh Phangan destination guide"
        },
        {
          "path": "/ferries/koh-samui-koh-phangan-koh-tao/",
          "label": "Samui / Phangan / Tao ferries"
        }
      ],
      "note": "Event intensity and ferry exposure should stay visible together on this entity."
    },
    {
      "entity_id": "pattaya-chonburi",
      "slug": "pattaya-chonburi",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Pattaya / Chonburi",
      "name_th": "พัทยา / ชลบุรี",
      "name_en": "Pattaya / Chonburi",
      "aliases": [
        "Pattaya",
        "Chonburi coast",
        "Jomtien"
      ],
      "summary": "Bangkok's easiest short-hop coast when nightlife, seafood, and family attractions matter more than island mood.",
      "graph_role": "destination anchor",
      "region": "Eastern Gulf Coast",
      "province": "Chonburi",
      "lat": 12.9236,
      "lon": 100.8825,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/pattaya-chonburi/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Eastern AQI proxy",
        "TMD weather",
        "road friction",
        "hotel-area fit",
        "venue density"
      ],
      "signals": [
        {
          "type": "bangkok_coast_pivot",
          "label": "Bangkok coast pivot",
          "severity": "high",
          "summary": "Pattaya / Chonburi exists in the graph as the fastest sea-air mood shift from Bangkok without flight or ferry dependency."
        },
        {
          "type": "nightlife_density",
          "label": "Nightlife density",
          "severity": "medium",
          "summary": "The destination can work for nightlife and short breaks, but that same density can become the main comfort penalty."
        },
        {
          "type": "traffic_penalty",
          "label": "Traffic penalty",
          "severity": "medium",
          "summary": "Weekend road pressure and local beach-corridor traffic can make a quick coast move feel worse than the map suggests."
        }
      ],
      "today_checks": [
        "Treat weekend traffic as a real input, not a footnote.",
        "Pick the beach or hotel zone before the hotel brand.",
        "Use Pattaya / Chonburi when you want coast access without island-transfer fragility."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "food_route",
        "nightlife_plan"
      ],
      "related_entities": [
        "central-pattaya-jomtien",
        "u-tapao-airport",
        "bangkok",
        "pattaya-gold-shopping"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/pattaya-chonburi/",
          "label": "Pattaya / Chonburi destination guide"
        },
        {
          "path": "/venues/nightlife/",
          "label": "Thailand nightlife venue layer"
        },
        {
          "path": "/venues/restaurants/",
          "label": "Thailand restaurant venue layer"
        },
        {
          "path": "/accommodation/pattaya/",
          "label": "Pattaya / Chonburi stay guide"
        },
        {
          "path": "/food/pattaya-food-route/",
          "label": "Pattaya / Chonburi food guide"
        },
        {
          "path": "/temples/pattaya/",
          "label": "Pattaya / Chonburi temple route"
        },
        {
          "path": "/research/temples/pattaya/",
          "label": "Pattaya / Chonburi temple research"
        }
      ],
      "note": "Pattaya / Chonburi should stay framed as a practical Bangkok coast pivot rather than a fragile island substitute."
    },
    {
      "entity_id": "hua-hin",
      "slug": "hua-hin",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Hua Hin / Cha-am",
      "name_th": "หัวหิน / ชะอำ",
      "name_en": "Hua Hin / Cha-am",
      "aliases": [
        "Hua Hin",
        "Cha-am"
      ],
      "summary": "Gentle Gulf coast base for families, markets, seafood, golf, and lower-friction beach days from Bangkok.",
      "graph_role": "destination anchor",
      "region": "Upper Southern Gulf Coast",
      "province": "Prachuap Khiri Khan",
      "lat": 12.5684,
      "lon": 99.9577,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/hua-hin/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Central and Gulf AQI proxy",
        "TMD weather",
        "road and rail access",
        "hotel-area fit",
        "market and food density"
      ],
      "signals": [
        {
          "type": "gentle_coast_fit",
          "label": "Gentle coast fit",
          "severity": "high",
          "summary": "Hua Hin / Cha-am works best when travelers want an easier coast with road or rail access instead of island complexity."
        },
        {
          "type": "spread_out_beach_towns",
          "label": "Spread-out beach towns",
          "severity": "medium",
          "summary": "The destination weakens when travelers assume every beach, market, and hotel zone is one compact walkable strip."
        },
        {
          "type": "weekend_surge",
          "label": "Weekend surge",
          "severity": "medium",
          "summary": "Bangkok-weekend pressure can change the feel fast, especially for short high-demand dates."
        }
      ],
      "today_checks": [
        "Choose the exact beach-town base before paying.",
        "Treat rail and road convenience as part of the value, not just background logistics.",
        "Use Hua Hin / Cha-am when you want a calmer coast than Pattaya without island transfer risk."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "central-hua-hin-khao-takiab",
        "hua-hin-station",
        "bangkok",
        "kanchanaburi"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/hua-hin/",
          "label": "Hua Hin / Cha-am destination guide"
        },
        {
          "path": "/venues/restaurants/",
          "label": "Thailand restaurant venue layer"
        },
        {
          "path": "/rail/",
          "label": "Thailand rail layer"
        },
        {
          "path": "/accommodation/hua-hin/",
          "label": "Hua Hin / Cha-am stay guide"
        },
        {
          "path": "/temples/hua-hin-cha-am/",
          "label": "Hua Hin / Cha-am temple route"
        },
        {
          "path": "/research/temples/hua-hin-cha-am/",
          "label": "Hua Hin / Cha-am temple research"
        }
      ],
      "note": "Hua Hin / Cha-am should stay modeled as a lower-friction coast, not a dramatic island substitute."
    },
    {
      "entity_id": "pai",
      "slug": "pai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Pai",
      "name_th": "ปาย",
      "name_en": "Pai",
      "aliases": [
        "Pai town"
      ],
      "summary": "Mountain-town add-on that only works when road comfort, weather, and northern AQI all cooperate.",
      "graph_role": "destination anchor",
      "region": "Northern Thailand",
      "province": "Mae Hong Son",
      "lat": 19.358,
      "lon": 98.4401,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/pai/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Northern AQI proxy",
        "mountain road weather",
        "festival/crowd timing"
      ],
      "signals": [
        {
          "type": "road_fragility",
          "label": "Road fragility",
          "severity": "high",
          "summary": "Pai is partly a road-comfort decision, not just a map pin north of Chiang Mai."
        },
        {
          "type": "aqi_dependency",
          "label": "AQI dependency",
          "severity": "high",
          "summary": "Pai is a weak call during severe smoke because the payoff is overwhelmingly outdoor."
        },
        {
          "type": "slow_travel_fit",
          "label": "Slow-travel fit",
          "severity": "medium",
          "summary": "Pai can be worth it when the trip accepts a slower rhythm and a less infrastructure-heavy base."
        }
      ],
      "today_checks": [
        "Treat Pai as optional, not mandatory.",
        "Use Chiang Mai AQI as the minimum smoke reality check.",
        "Avoid forcing Pai into a rushed route."
      ],
      "decisions": [
        "where_to_go_today",
        "route_feasibility"
      ],
      "related_entities": [
        "chiang-mai",
        "nimman"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/pai/",
          "label": "Pai destination guide"
        },
        {
          "path": "/routes/chiang-mai-pai-chiang-rai/",
          "label": "Chiang Mai / Pai / Chiang Rai route"
        },
        {
          "path": "/accommodation/pai/",
          "label": "Pai stay guide"
        },
        {
          "path": "/food/chiang-mai-food-guide/",
          "label": "Pai food guide"
        },
        {
          "path": "/temples/pai/",
          "label": "Pai temple route"
        },
        {
          "path": "/research/temples/pai/",
          "label": "Pai temple research"
        }
      ],
      "note": "Pai should be modeled as a fragile add-on rather than a default northern stop."
    },
    {
      "entity_id": "ayutthaya",
      "slug": "ayutthaya",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Ayutthaya",
      "name_th": "พระนครศรีอยุธยา",
      "name_en": "Ayutthaya",
      "aliases": [
        "Ayutthaya historic city"
      ],
      "summary": "The lowest-friction historic day trip from Bangkok when heat and train timing are handled well.",
      "graph_role": "destination anchor",
      "region": "Central Thailand",
      "province": "Phra Nakhon Si Ayutthaya",
      "lat": 14.3532,
      "lon": 100.5689,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/ayutthaya/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Central AQI",
        "TMD weather",
        "SRT timing",
        "weekend crowd pressure"
      ],
      "signals": [
        {
          "type": "day_trip_strength",
          "label": "Day-trip strength",
          "severity": "high",
          "summary": "Ayutthaya is most valuable as a culture move from Bangkok rather than a fully separate city break."
        },
        {
          "type": "heat_exposure",
          "label": "Heat exposure",
          "severity": "medium",
          "summary": "Ruins and exposed walking make weather and time-of-day more important than map distance suggests."
        },
        {
          "type": "rail_simplicity",
          "label": "Rail simplicity",
          "severity": "medium",
          "summary": "Train logic can make Ayutthaya easier than road-heavy alternatives when the timing lines up."
        }
      ],
      "today_checks": [
        "Start early in hot months.",
        "Use train or simple road logic rather than over-designing the transfer.",
        "Treat Bangkok as the hotel base unless the trip specifically wants slower nights."
      ],
      "decisions": [
        "where_to_go_today",
        "rail_plan",
        "route_feasibility"
      ],
      "related_entities": [
        "bangkok",
        "suvarnabhumi-airport"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/ayutthaya/",
          "label": "Ayutthaya destination guide"
        },
        {
          "path": "/rail/bangkok-ayutthaya-train/",
          "label": "Bangkok to Ayutthaya train"
        },
        {
          "path": "/accommodation/ayutthaya/",
          "label": "Ayutthaya stay guide"
        },
        {
          "path": "/food/ayutthaya-food-route/",
          "label": "Ayutthaya food guide"
        },
        {
          "path": "/temples/ayutthaya/",
          "label": "Ayutthaya temple route"
        },
        {
          "path": "/research/temples/ayutthaya/",
          "label": "Ayutthaya temple research"
        }
      ],
      "note": "Ayutthaya is best treated as a rail- and weather-aware day-trip entity."
    },
    {
      "entity_id": "kanchanaburi",
      "slug": "kanchanaburi",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Kanchanaburi",
      "name_th": "กาญจนบุรี",
      "name_en": "Kanchanaburi",
      "aliases": [
        "Kanchanaburi town"
      ],
      "summary": "River, history, and waterfall detour west of Bangkok where road and weather conditions decide the real payoff.",
      "graph_role": "destination anchor",
      "region": "Western Thailand",
      "province": "Kanchanaburi",
      "lat": 14.0228,
      "lon": 99.5328,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/kanchanaburi/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Weather and rain",
        "road friction",
        "central AQI",
        "rail comparison"
      ],
      "signals": [
        {
          "type": "nature_day_fit",
          "label": "Nature-day fit",
          "severity": "medium",
          "summary": "Kanchanaburi works when central weather supports waterfall, rail, and river plans."
        },
        {
          "type": "spread_out_sights",
          "label": "Spread-out sights",
          "severity": "medium",
          "summary": "The route weakens fast if travelers assume every sight is simple without road time."
        },
        {
          "type": "bangkok_side_trip",
          "label": "Bangkok side-trip value",
          "severity": "high",
          "summary": "Kanchanaburi is often strongest as a side trip rather than a completely separate planning universe."
        }
      ],
      "today_checks": [
        "Check waterfall and outdoor-weather logic before paying for remote stays.",
        "Treat the road burden honestly.",
        "Use Bangkok or Hua Hin as lower-friction pivots."
      ],
      "decisions": [
        "where_to_go_today",
        "route_feasibility",
        "rail_plan"
      ],
      "related_entities": [
        "bangkok",
        "bangkok-mochit-2"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/kanchanaburi/",
          "label": "Kanchanaburi destination guide"
        },
        {
          "path": "/rail/bangkok-kanchanaburi-train/",
          "label": "Bangkok to Kanchanaburi train"
        },
        {
          "path": "/accommodation/kanchanaburi/",
          "label": "Kanchanaburi stay guide"
        },
        {
          "path": "/temples/kanchanaburi/",
          "label": "Kanchanaburi temple route"
        },
        {
          "path": "/research/temples/kanchanaburi/",
          "label": "Kanchanaburi temple research"
        }
      ],
      "note": "Kanchanaburi should stay connected to Bangkok-side route logic."
    },
    {
      "entity_id": "isaan",
      "slug": "isaan",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Isaan",
      "name_th": "ภาคตะวันออกเฉียงเหนือ",
      "name_en": "Isaan",
      "aliases": [
        "Northeastern Thailand"
      ],
      "summary": "Repeat-visitor region for food, Mekong towns, Khmer temples, and lower-tourism routes that need more planning than the classic first-trip circuit.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand",
      "province": "Northeast region",
      "lat": 16.4322,
      "lon": 102.8236,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/isaan/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "Royal Thai Police station directory and provincial datasets",
          "path": "/data/sources/royal-thai-police-station-directory-and-provincial-datasets/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Regional AQI",
        "domestic transport context",
        "festival timing",
        "Mekong and weather context"
      ],
      "signals": [
        {
          "type": "food_depth",
          "label": "Food depth",
          "severity": "high",
          "summary": "Isaan food density is one of the region's strongest reasons to exist in the graph."
        },
        {
          "type": "planning_penalty",
          "label": "Planning penalty",
          "severity": "medium",
          "summary": "Transport and province spread mean Isaan needs a stronger route logic than beach hubs or Bangkok."
        },
        {
          "type": "crowd_relief",
          "label": "Crowd relief",
          "severity": "medium",
          "summary": "The region is often useful when mainstream routes are crowded or expensive."
        }
      ],
      "today_checks": [
        "Treat province choice as the real decision, not just the region label.",
        "Use Khon Kaen, Ubon, Nong Khai, or Korat as actual anchors.",
        "Do not expect first-trip infrastructure everywhere."
      ],
      "decisions": [
        "where_to_go_today",
        "food_route",
        "route_feasibility"
      ],
      "related_entities": [
        "bangkok",
        "chiang-mai"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/isaan/",
          "label": "Isaan destination guide"
        },
        {
          "path": "/food/isaan-food-for-first-timers/",
          "label": "Isaan food guide"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Isaan food guide"
        }
      ],
      "note": "Isaan is a regional entity anchor; province-level child entities should follow later."
    },
    {
      "entity_id": "sukhumvit",
      "slug": "sukhumvit",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Sukhumvit",
      "name_th": "สุขุมวิท",
      "name_en": "Sukhumvit",
      "aliases": [
        "Lower Sukhumvit",
        "Asok / Phrom Phong belt"
      ],
      "summary": "Bangkok's easiest first-timer hotel zone when BTS/MRT access, restaurants, malls, and later dinners matter more than old-city texture.",
      "graph_role": "hotel-area anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7366,
      "lon": 100.5603,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/sukhumvit/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "BTS SkyTrain system maps and service pages",
          "path": "/data/sources/bts-skytrain-system-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "MRT / MRTA metro maps and service pages",
          "path": "/data/sources/mrt-mrta-metro-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        }
      ],
      "observation_coverage": [
        "BTS and MRT access",
        "nightlife and noise context",
        "AQI and heat comfort",
        "hotel density"
      ],
      "signals": [
        {
          "type": "low_transport_friction",
          "label": "Low transport friction",
          "severity": "high",
          "summary": "The whole point of Sukhumvit in the graph is easy movement, not romance."
        },
        {
          "type": "venue_density",
          "label": "Venue density",
          "severity": "high",
          "summary": "Restaurants, cafes, malls, and nightlife keep Sukhumvit resilient on bad-weather or tired days."
        },
        {
          "type": "noise_tradeoff",
          "label": "Noise tradeoff",
          "severity": "medium",
          "summary": "Late-night energy can reduce sleep quality, especially when the stay drifts toward the loudest strips."
        }
      ],
      "today_checks": [
        "Choose a station-linked hotel, not just a Sukhumvit address.",
        "Accept the noise tradeoff if nightlife is the point.",
        "Do not use Sukhumvit if the trip is really a temple-first Old Town visit."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "nightlife_plan"
      ],
      "related_entities": [
        "bangkok",
        "bts-asok",
        "silom-sathorn"
      ],
      "related_pages": [
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        },
        {
          "path": "/venues/restaurants/bangkok/",
          "label": "Bangkok restaurants"
        },
        {
          "path": "/venues/nightlife/bangkok/",
          "label": "Bangkok nightlife"
        }
      ],
      "note": "Sukhumvit is the utility-first Bangkok hotel area."
    },
    {
      "entity_id": "silom-sathorn",
      "slug": "silom-sathorn",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Silom / Sathorn",
      "name_th": "สีลม / สาทร",
      "name_en": "Silom / Sathorn",
      "aliases": [
        "Silom",
        "Sathorn"
      ],
      "summary": "Bangkok's balanced hotel zone for BTS/MRT access, dinners, business stays, queer nightlife, and fewer cross-city taxis than many first-timer routes assume.",
      "graph_role": "hotel-area anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7245,
      "lon": 100.5348,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/silom-sathorn/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "BTS SkyTrain system maps and service pages",
          "path": "/data/sources/bts-skytrain-system-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "MRT / MRTA metro maps and service pages",
          "path": "/data/sources/mrt-mrta-metro-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand nightlife venues",
          "path": "/data/sources/openstreetmap-thailand-nightlife-venues/",
          "known": true
        }
      ],
      "observation_coverage": [
        "BTS and MRT access",
        "nightlife return friction",
        "hotel density",
        "AQI and rain fallback"
      ],
      "signals": [
        {
          "type": "balanced_base",
          "label": "Balanced base",
          "severity": "high",
          "summary": "Silom / Sathorn is the graph's answer when travelers want transit plus evenings without full Sukhumvit intensity."
        },
        {
          "type": "rail_access",
          "label": "Rail access",
          "severity": "high",
          "summary": "BTS and MRT edges make this one of Bangkok's strongest low-friction zones."
        },
        {
          "type": "business_city_mix",
          "label": "Business-city mix",
          "severity": "medium",
          "summary": "The area works for short work trips, city breaks, and restaurant-first stays."
        }
      ],
      "today_checks": [
        "Make sure the hotel is actually station-adjacent.",
        "Use this zone when you want balanced evenings rather than constant nightlife.",
        "Treat Silom and Sathorn as different micro-feels, not one flat blob."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "nightlife_plan"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "riverside-old-town"
      ],
      "related_pages": [
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        },
        {
          "path": "/venues/nightlife/bangkok/",
          "label": "Bangkok nightlife"
        },
        {
          "path": "/venues/restaurants/bangkok/",
          "label": "Bangkok restaurants"
        }
      ],
      "note": "Silom / Sathorn is the balanced-base entity, not the loudest-base entity."
    },
    {
      "entity_id": "riverside-old-town",
      "slug": "riverside-old-town",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Riverside / Old Town",
      "name_th": "ริมแม่น้ำ / เมืองเก่า",
      "name_en": "Riverside / Old Town",
      "aliases": [
        "Bangkok riverside",
        "Old Rattanakosin"
      ],
      "summary": "Bangkok's best culture-heavy base when temples, river ferries, and older-city texture matter more than pure rail simplicity.",
      "graph_role": "hotel-area anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7489,
      "lon": 100.493,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/riverside-old-town/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "River and ferry movement",
        "AQI and heat comfort",
        "tourist density",
        "nighttime food and old-city access"
      ],
      "signals": [
        {
          "type": "culture_payoff",
          "label": "Culture payoff",
          "severity": "high",
          "summary": "This area exists for temples, ferries, old streets, and historic mood."
        },
        {
          "type": "last_mile_penalty",
          "label": "Last-mile penalty",
          "severity": "medium",
          "summary": "The tradeoff is weaker rail simplicity and more dependence on river, walks, or short taxis."
        },
        {
          "type": "heat_sensitivity",
          "label": "Heat sensitivity",
          "severity": "medium",
          "summary": "Temple and old-town days get worse quickly if heat and AQI are ignored."
        }
      ],
      "today_checks": [
        "Use riverside when the trip is truly temple and river-first.",
        "Accept slightly weaker rail logic.",
        "Do not combine this base with nonstop cross-city nightlife plans."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "rainy_day_plan"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "silom-sathorn"
      ],
      "related_pages": [
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        },
        {
          "path": "/where-to-go/bangkok/",
          "label": "Bangkok destination guide"
        },
        {
          "path": "/food/bangkok-chinatown-food-route/",
          "label": "Bangkok Chinatown food route"
        }
      ],
      "note": "This entity currently combines Riverside and Old Town because the planning logic still works best as one culture-first base layer."
    },
    {
      "entity_id": "nimman",
      "slug": "nimman",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Nimman",
      "name_th": "นิมมานเหมินท์",
      "name_en": "Nimman",
      "aliases": [
        "Nimmanhaemin"
      ],
      "summary": "Chiang Mai's strongest comfort-and-cafes base for longer stays, coworking, and slower city travel.",
      "graph_role": "hotel-area anchor",
      "region": "Chiang Mai",
      "province": "Chiang Mai",
      "lat": 18.7966,
      "lon": 98.9688,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/nimman/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "AQI and PM2.5",
        "cafe and venue density",
        "hotel density",
        "weather comfort"
      ],
      "signals": [
        {
          "type": "comfort_base",
          "label": "Comfort base",
          "severity": "high",
          "summary": "Nimman exists in the graph for cafes, longer stays, and easier modern comfort than Old City."
        },
        {
          "type": "aqi_dependency",
          "label": "AQI dependency",
          "severity": "medium",
          "summary": "Even good hotel comfort cannot rescue the area if northern PM2.5 remains high."
        },
        {
          "type": "food_cafe_density",
          "label": "Food and cafe density",
          "severity": "high",
          "summary": "Restaurants, coffee, and longer-stay patterns make Nimman a strong fallback zone."
        }
      ],
      "today_checks": [
        "Choose Nimman when comfort and cafes matter more than temple density.",
        "Keep Old City as the culture pivot.",
        "Let AQI outrank the hotel pool."
      ],
      "decisions": [
        "where_to_stay",
        "food_route"
      ],
      "related_entities": [
        "chiang-mai",
        "pai"
      ],
      "related_pages": [
        {
          "path": "/accommodation/chiang-mai/",
          "label": "Where to stay in Chiang Mai"
        },
        {
          "path": "/where-to-go/chiang-mai/",
          "label": "Chiang Mai destination guide"
        }
      ],
      "note": "Nimman is the comfort-first Chiang Mai base."
    },
    {
      "entity_id": "ari",
      "slug": "ari",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Ari",
      "name_th": "อารีย์",
      "name_en": "Ari",
      "aliases": [
        "Ari BTS area",
        "Ari / Sanam Pao edge"
      ],
      "summary": "Bangkok's calmer cafe-and-repeat-visitor base when BTS access still matters but the trip does not need full Sukhumvit intensity.",
      "graph_role": "hotel-area anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7792,
      "lon": 100.544,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/ari/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "BTS SkyTrain system maps and service pages",
          "path": "/data/sources/bts-skytrain-system-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        }
      ],
      "observation_coverage": [
        "BTS-linked access",
        "cafe and restaurant density",
        "noise tradeoff",
        "hotel density"
      ],
      "signals": [
        {
          "type": "calm_city_base",
          "label": "Calm city base",
          "severity": "high",
          "summary": "Ari works best when travelers want a softer Bangkok rhythm without giving up BTS support."
        },
        {
          "type": "repeat_visitor_fit",
          "label": "Repeat-visitor fit",
          "severity": "medium",
          "summary": "The area is strongest for second-trip logic, slower mornings, cafes, and local dinners."
        },
        {
          "type": "lower_venue_density",
          "label": "Lower venue density",
          "severity": "medium",
          "summary": "Ari trades some all-night density for calmer evenings and easier sleep."
        }
      ],
      "today_checks": [
        "Use Ari when the trip wants calmer mornings and fewer nightlife penalties.",
        "Keep temple-heavy or river-heavy days separate instead of forcing cross-city hops.",
        "Choose a truly BTS-linked hotel rather than a loose district label."
      ],
      "decisions": [
        "where_to_stay",
        "food_route"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "silom-sathorn",
        "bts-asok"
      ],
      "related_pages": [
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        },
        {
          "path": "/venues/restaurants/bangkok/",
          "label": "Bangkok restaurants"
        },
        {
          "path": "/where-to-go/bangkok/",
          "label": "Bangkok destination guide"
        }
      ],
      "note": "Ari is the quieter repeat-visitor Bangkok base."
    },
    {
      "entity_id": "old-city-chiang-mai",
      "slug": "old-city-chiang-mai",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Old City Chiang Mai",
      "name_th": "เมืองเก่าเชียงใหม่",
      "name_en": "Old City Chiang Mai",
      "aliases": [
        "Chiang Mai Old City",
        "Old Town Chiang Mai"
      ],
      "summary": "Chiang Mai's clearest first-timer base for temples, walkable food, markets, and compact city orientation when AQI is acceptable.",
      "graph_role": "hotel-area anchor",
      "region": "Chiang Mai",
      "province": "Chiang Mai",
      "lat": 18.7877,
      "lon": 98.9856,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/old-city-chiang-mai/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "AQI and PM2.5",
        "temple and market access",
        "hotel density",
        "walk comfort"
      ],
      "signals": [
        {
          "type": "culture_density",
          "label": "Culture density",
          "severity": "high",
          "summary": "The Old City works because temples, markets, and low-friction walking all stack in one compact base."
        },
        {
          "type": "heat_walk_penalty",
          "label": "Heat and walk penalty",
          "severity": "medium",
          "summary": "The area feels worse quickly when heat or PM2.5 weakens outdoor comfort."
        },
        {
          "type": "first_timer_fit",
          "label": "First-timer fit",
          "severity": "high",
          "summary": "This is the easiest Chiang Mai base when the trip wants classic orientation before modern-cafe comfort."
        }
      ],
      "today_checks": [
        "Use Old City when temple density and walkable food matter more than coworking comfort.",
        "Let PM2.5 outrank the charm of a heritage hotel.",
        "Switch to Nimman when comfort and indoor backup become the real need."
      ],
      "decisions": [
        "where_to_stay",
        "food_route"
      ],
      "related_entities": [
        "chiang-mai",
        "nimman",
        "chiang-mai-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/chiang-mai/",
          "label": "Where to stay in Chiang Mai"
        },
        {
          "path": "/food/chiang-mai-khao-soi/",
          "label": "Chiang Mai khao soi route"
        },
        {
          "path": "/where-to-go/chiang-mai/",
          "label": "Chiang Mai destination guide"
        }
      ],
      "note": "Old City is the temple-first Chiang Mai hotel-area entity."
    },
    {
      "entity_id": "kata-karon",
      "slug": "kata-karon",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Kata / Karon",
      "name_th": "กะตะ / กะรน",
      "name_en": "Kata / Karon",
      "aliases": [
        "Kata",
        "Karon"
      ],
      "summary": "Phuket's strongest balanced first-beach base when families, beach time, and manageable services matter more than nightlife.",
      "graph_role": "hotel-area anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 7.8434,
      "lon": 98.2945,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/kata-karon/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Beach weather",
        "road friction",
        "hotel density",
        "family-friendly venue density"
      ],
      "signals": [
        {
          "type": "balanced_beach_base",
          "label": "Balanced beach base",
          "severity": "high",
          "summary": "Kata / Karon is the graph's middle path between Patong intensity and remote resort quiet."
        },
        {
          "type": "family_fit",
          "label": "Family fit",
          "severity": "medium",
          "summary": "The area tends to work for beach trips that need enough services without nonstop party energy."
        },
        {
          "type": "coast_weather_dependency",
          "label": "Coast weather dependency",
          "severity": "medium",
          "summary": "The area still depends on Andaman weather and beach flags to hold its value."
        }
      ],
      "today_checks": [
        "Use Kata / Karon when first-beach simplicity matters.",
        "Do not assume all Phuket beaches behave the same.",
        "Use Old Town as the rain and food fallback."
      ],
      "decisions": [
        "where_to_stay",
        "beach_plan"
      ],
      "related_entities": [
        "phuket",
        "rassada-pier"
      ],
      "related_pages": [
        {
          "path": "/accommodation/phuket/",
          "label": "Where to stay in Phuket"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "This is the balanced-beach entity, not the nightlife entity."
    },
    {
      "entity_id": "patong",
      "slug": "patong",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Patong",
      "name_th": "ป่าตอง",
      "name_en": "Patong",
      "aliases": [
        "Patong Beach"
      ],
      "summary": "Phuket's highest-convenience nightlife base when services, late returns, and short-stay energy matter more than quiet.",
      "graph_role": "hotel-area anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 7.8961,
      "lon": 98.2966,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/patong/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand nightlife venues",
          "path": "/data/sources/openstreetmap-thailand-nightlife-venues/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Beach weather",
        "nightlife and venue density",
        "road friction",
        "hotel density"
      ],
      "signals": [
        {
          "type": "service_density",
          "label": "Service density",
          "severity": "high",
          "summary": "Patong is the easiest Phuket answer when the trip wants dense services and late-night fallback."
        },
        {
          "type": "nightlife_noise_tradeoff",
          "label": "Nightlife and noise tradeoff",
          "severity": "high",
          "summary": "The same density that makes Patong convenient can make it the wrong sleep base."
        },
        {
          "type": "traffic_penalty",
          "label": "Traffic penalty",
          "severity": "medium",
          "summary": "Patong solves local convenience but can worsen island-crossing days when the whole trip spreads out."
        }
      ],
      "today_checks": [
        "Choose Patong only when nightlife, services, or short-stay convenience are really the point.",
        "Do not pay Patong prices for a quiet family beach trip.",
        "Keep Old Town or Kata / Karon visible as the calmer pivot."
      ],
      "decisions": [
        "where_to_stay",
        "nightlife_plan",
        "beach_plan"
      ],
      "related_entities": [
        "phuket",
        "kata-karon",
        "phuket-old-town",
        "phuket-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/phuket/",
          "label": "Where to stay in Phuket"
        },
        {
          "path": "/venues/nightlife/phuket/",
          "label": "Phuket nightlife"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "Patong is the nightlife-and-convenience Phuket hotel-area entity."
    },
    {
      "entity_id": "rawai-nai-harn",
      "slug": "rawai-nai-harn",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Rawai / Nai Harn",
      "name_th": "ราไวย์ / ในหาน",
      "name_en": "Rawai / Nai Harn",
      "aliases": [
        "Rawai",
        "Nai Harn"
      ],
      "summary": "Phuket's slower south-coast base for longer stays, cafes, villas, and beach time when you accept more movement.",
      "graph_role": "hotel-area anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 7.7785,
      "lon": 98.325,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/rawai-nai-harn/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Beach weather",
        "road friction",
        "hotel and villa density",
        "food and cafe density"
      ],
      "signals": [
        {
          "type": "slow_stay_fit",
          "label": "Slow-stay fit",
          "severity": "high",
          "summary": "Rawai / Nai Harn works best when the trip wants south-coast pacing instead of island-wide convenience."
        },
        {
          "type": "transfer_penalty",
          "label": "Transfer penalty",
          "severity": "medium",
          "summary": "The base gets weaker when every day depends on cross-island movement."
        },
        {
          "type": "villa_and_long_stay_fit",
          "label": "Villa and long-stay fit",
          "severity": "medium",
          "summary": "The area suits longer rentals, quieter beach routines, and slower evening patterns."
        }
      ],
      "today_checks": [
        "Use Rawai / Nai Harn when longer, slower south-coast days are the real goal.",
        "Do not assume a cheaper villa beats a better-located first-timer base.",
        "Keep Phuket Old Town or Kata / Karon as the lower-friction fallback."
      ],
      "decisions": [
        "where_to_stay",
        "beach_plan"
      ],
      "related_entities": [
        "phuket",
        "patong",
        "phuket-old-town",
        "rassada-pier",
        "phuket-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/phuket/",
          "label": "Where to stay in Phuket"
        },
        {
          "path": "/venues/restaurants/phuket/",
          "label": "Phuket restaurants"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "Rawai / Nai Harn is the slower south-coast Phuket base."
    },
    {
      "entity_id": "phuket-old-town",
      "slug": "phuket-old-town",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Phuket Old Town",
      "name_th": "เมืองเก่าภูเก็ต",
      "name_en": "Phuket Old Town",
      "aliases": [
        "Old Phuket Town"
      ],
      "summary": "Phuket's strongest bad-weather and food-first base when cafes, architecture, and easier rainy-day recovery matter more than direct beach access.",
      "graph_role": "hotel-area anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 7.8843,
      "lon": 98.3923,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/phuket-old-town/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Rain and marine fallback",
        "food and cafe density",
        "road friction",
        "hotel density"
      ],
      "signals": [
        {
          "type": "rain_backup_strength",
          "label": "Rain-backup strength",
          "severity": "high",
          "summary": "Old Town is Phuket's clearest indoor-food-and-cafe pivot when beach weather weakens."
        },
        {
          "type": "food_density",
          "label": "Food density",
          "severity": "high",
          "summary": "The area is strongest when the trip wants walkable food, cafes, and culture over beach-first mornings."
        },
        {
          "type": "beach_distance_penalty",
          "label": "Beach-distance penalty",
          "severity": "medium",
          "summary": "Old Town loses value when travelers keep pretending it is a direct beach base."
        }
      ],
      "today_checks": [
        "Use Old Town when weather, food, or architecture outranks waking up by the beach.",
        "Do not confuse a stylish town hotel with a beach holiday base.",
        "Keep Patong or Kata / Karon visible when the trip is still beach-first."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "rainy_day_plan"
      ],
      "related_entities": [
        "phuket",
        "patong",
        "rawai-nai-harn",
        "phuket-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/phuket/",
          "label": "Where to stay in Phuket"
        },
        {
          "path": "/venues/restaurants/phuket/",
          "label": "Phuket restaurants"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "Phuket Old Town is the weather-backup and food-first Phuket hotel-area entity."
    },
    {
      "entity_id": "bophut-fishermans-village",
      "slug": "bophut-fishermans-village",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Bophut / Fisherman's Village",
      "name_th": "บ่อผุด / ฟิชเชอร์แมนส์ วิลเลจ",
      "name_en": "Bophut / Fisherman's Village",
      "aliases": [
        "Bophut",
        "Fisherman's Village"
      ],
      "summary": "Samui's best balanced base for food, evening walks, families, and enough comfort without full Chaweng intensity.",
      "graph_role": "hotel-area anchor",
      "region": "Koh Samui",
      "province": "Surat Thani",
      "lat": 9.5587,
      "lon": 100.0297,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/bophut-fishermans-village/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Hotel density",
        "ferry and airport transfer context",
        "restaurant and evening density",
        "weather comfort"
      ],
      "signals": [
        {
          "type": "balanced_island_base",
          "label": "Balanced island base",
          "severity": "high",
          "summary": "Bophut is the easiest Samui answer when the trip wants comfort plus evenings, not full nightlife."
        },
        {
          "type": "transfer_resilience",
          "label": "Transfer resilience",
          "severity": "medium",
          "summary": "It works well when travelers want Samui itself to stay stable even if island-chaining gets fragile."
        },
        {
          "type": "family_and_food_fit",
          "label": "Family and food fit",
          "severity": "medium",
          "summary": "The area offers a strong mix of restaurants, walks, and hotel comfort."
        }
      ],
      "today_checks": [
        "Use Bophut when you want Samui to be the stable base.",
        "Keep Chaweng only for bigger nightlife needs.",
        "Do not chain extra boats without checking the weather stack."
      ],
      "decisions": [
        "where_to_stay",
        "beach_plan"
      ],
      "related_entities": [
        "koh-samui",
        "na-thon-pier"
      ],
      "related_pages": [
        {
          "path": "/accommodation/koh-samui/",
          "label": "Where to stay in Koh Samui"
        },
        {
          "path": "/where-to-go/koh-samui/",
          "label": "Koh Samui destination guide"
        }
      ],
      "note": "Bophut is the balanced Samui hotel-area entity."
    },
    {
      "entity_id": "chaweng",
      "slug": "chaweng",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Chaweng",
      "name_th": "เฉวง",
      "name_en": "Chaweng",
      "aliases": [
        "Chaweng Beach"
      ],
      "summary": "Samui's strongest nightlife-and-services base when hotel choice, evening density, and airport convenience matter more than quiet.",
      "graph_role": "hotel-area anchor",
      "region": "Koh Samui",
      "province": "Surat Thani",
      "lat": 9.5315,
      "lon": 100.0628,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/chaweng/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand nightlife venues",
          "path": "/data/sources/openstreetmap-thailand-nightlife-venues/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport transfer context",
        "hotel density",
        "nightlife and service density",
        "weather comfort"
      ],
      "signals": [
        {
          "type": "service_density",
          "label": "Service density",
          "severity": "high",
          "summary": "Chaweng works best when you want the fullest Samui service layer right outside the hotel."
        },
        {
          "type": "nightlife_penalty",
          "label": "Nightlife penalty",
          "severity": "medium",
          "summary": "The same energy that makes Chaweng easy can make it the wrong sleep base."
        },
        {
          "type": "airport_convenience",
          "label": "Airport convenience",
          "severity": "medium",
          "summary": "Chaweng keeps airport and resort convenience close when the trip is short."
        }
      ],
      "today_checks": [
        "Choose Chaweng when service density and evening energy matter more than quiet sleep.",
        "Do not overpay for Chaweng if the trip is really a calm beach reset.",
        "Keep Bophut or Lamai visible as the softer pivot."
      ],
      "decisions": [
        "where_to_stay",
        "nightlife_plan",
        "beach_plan"
      ],
      "related_entities": [
        "koh-samui",
        "bophut-fishermans-village",
        "lamai",
        "samui-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/koh-samui/",
          "label": "Where to stay in Koh Samui"
        },
        {
          "path": "/where-to-go/koh-samui/",
          "label": "Koh Samui destination guide"
        }
      ],
      "note": "Chaweng is the nightlife-and-services Samui hotel-area entity."
    },
    {
      "entity_id": "lamai",
      "slug": "lamai",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Lamai",
      "name_th": "ละไม",
      "name_en": "Lamai",
      "aliases": [
        "Lamai Beach"
      ],
      "summary": "Samui's middle-ground beach base when you want softer pacing than Chaweng without fully retreating from services.",
      "graph_role": "hotel-area anchor",
      "region": "Koh Samui",
      "province": "Surat Thani",
      "lat": 9.4646,
      "lon": 100.0504,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/lamai/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Weather comfort",
        "hotel density",
        "restaurant density",
        "airport and pier transfer context"
      ],
      "signals": [
        {
          "type": "middle_ground_base",
          "label": "Middle-ground base",
          "severity": "high",
          "summary": "Lamai works when Samui needs a softer hotel rhythm than Chaweng but more services than the quietest north-coast stays."
        },
        {
          "type": "beach_comfort",
          "label": "Beach comfort",
          "severity": "medium",
          "summary": "The area suits beach-heavy days that still want restaurants and easy evenings nearby."
        },
        {
          "type": "lower_nightlife_pressure",
          "label": "Lower nightlife pressure",
          "severity": "medium",
          "summary": "Lamai reduces some noise and intensity while keeping the trip readable."
        }
      ],
      "today_checks": [
        "Use Lamai when the trip wants a calmer beach base without losing all convenience.",
        "Do not assume Lamai solves island-wide transfer friction by itself.",
        "Keep Bophut visible when evening walks and food matter more than beach time."
      ],
      "decisions": [
        "where_to_stay",
        "beach_plan"
      ],
      "related_entities": [
        "koh-samui",
        "bophut-fishermans-village",
        "chaweng",
        "samui-airport"
      ],
      "related_pages": [
        {
          "path": "/accommodation/koh-samui/",
          "label": "Where to stay in Koh Samui"
        },
        {
          "path": "/where-to-go/koh-samui/",
          "label": "Koh Samui destination guide"
        }
      ],
      "note": "Lamai is the middle-path Samui hotel-area entity."
    },
    {
      "entity_id": "central-pattaya-jomtien",
      "slug": "central-pattaya-jomtien",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Central Pattaya / Jomtien",
      "name_th": "พัทยากลาง / จอมเทียน",
      "name_en": "Central Pattaya / Jomtien",
      "aliases": [
        "Central Pattaya",
        "Jomtien"
      ],
      "summary": "The practical Pattaya / Chonburi hotel base when you want beach access, nightlife options, and easier fallback than a far-flung resort edge.",
      "graph_role": "hotel-area anchor",
      "region": "Pattaya / Chonburi",
      "province": "Chonburi",
      "lat": 12.8898,
      "lon": 100.8766,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/central-pattaya-jomtien/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand nightlife venues",
          "path": "/data/sources/openstreetmap-thailand-nightlife-venues/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Road friction",
        "nightlife and venue density",
        "AQI and heat comfort",
        "hotel density"
      ],
      "signals": [
        {
          "type": "coast_utility_base",
          "label": "Coast utility base",
          "severity": "high",
          "summary": "This area exists as the easy short-break answer when beach access and named venues both matter."
        },
        {
          "type": "nightlife_noise_tradeoff",
          "label": "Nightlife and noise tradeoff",
          "severity": "medium",
          "summary": "Central Pattaya convenience often comes with noise and sleep penalties, while Jomtien softens that at the cost of extra movement."
        },
        {
          "type": "weekend_traffic_risk",
          "label": "Weekend traffic risk",
          "severity": "medium",
          "summary": "Road pressure and corridor traffic can turn a cheap hotel choice into an annoying short-stay base."
        }
      ],
      "today_checks": [
        "Choose the exact zone before the hotel.",
        "Use Jomtien when sleep and softer pacing matter more than nightlife.",
        "Do not assume all Pattaya-area hotels have the same return-route convenience."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "nightlife_plan"
      ],
      "related_entities": [
        "pattaya-chonburi",
        "u-tapao-airport",
        "bangkok",
        "suvarnabhumi-airport",
        "bangkok-mochit-2"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/pattaya-chonburi/",
          "label": "Pattaya / Chonburi destination guide"
        },
        {
          "path": "/venues/nightlife/",
          "label": "Thailand nightlife venue layer"
        },
        {
          "path": "/venues/restaurants/",
          "label": "Thailand restaurant venue layer"
        }
      ],
      "note": "This is a combined practical base entity until more detailed Pattaya-area hotel zones are added."
    },
    {
      "entity_id": "central-hua-hin-khao-takiab",
      "slug": "central-hua-hin-khao-takiab",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Central Hua Hin / Khao Takiab",
      "name_th": "ใจกลางหัวหิน / เขาตะเกียบ",
      "name_en": "Central Hua Hin / Khao Takiab",
      "aliases": [
        "Central Hua Hin",
        "Khao Takiab"
      ],
      "summary": "The best Hua Hin / Cha-am base when you want markets, beach access, seafood, and a calmer hotel rhythm than party-heavy coast strips.",
      "graph_role": "hotel-area anchor",
      "region": "Hua Hin / Cha-am",
      "province": "Prachuap Khiri Khan",
      "lat": 12.5367,
      "lon": 99.9783,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/central-hua-hin-khao-takiab/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand restaurants and cafes",
          "path": "/data/sources/openstreetmap-thailand-restaurants-and-cafes/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Road and rail access",
        "AQI and heat comfort",
        "market and food density",
        "hotel density"
      ],
      "signals": [
        {
          "type": "gentle_base_quality",
          "label": "Gentle base quality",
          "severity": "high",
          "summary": "Central Hua Hin / Khao Takiab is the easiest answer when the trip wants beach access without high nightlife pressure."
        },
        {
          "type": "spread_penalty",
          "label": "Spread penalty",
          "severity": "medium",
          "summary": "The value drops when travelers underestimate local distance between hotels, markets, and station or road transfer points."
        },
        {
          "type": "weekend_surge",
          "label": "Weekend surge",
          "severity": "medium",
          "summary": "Weekends and holidays can change hotel value more than the calm baseline suggests."
        }
      ],
      "today_checks": [
        "Use this base when calm beach-town logic matters more than nightlife.",
        "Check station or road transfer time before paying if arrival day is tight.",
        "Treat Cha-am as a separate feel, not the same strip."
      ],
      "decisions": [
        "where_to_stay",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "hua-hin",
        "hua-hin-station",
        "bangkok",
        "bangkok-mochit-2"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/hua-hin/",
          "label": "Hua Hin / Cha-am destination guide"
        },
        {
          "path": "/venues/restaurants/",
          "label": "Thailand restaurant venue layer"
        },
        {
          "path": "/rail/",
          "label": "Thailand rail layer"
        }
      ],
      "note": "This is the practical calm-base entity until more detailed Hua Hin and Cha-am hotel zones are separated."
    },
    {
      "entity_id": "ao-nang",
      "slug": "ao-nang",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Ao Nang",
      "name_th": "อ่าวนาง",
      "name_en": "Ao Nang",
      "aliases": [
        "Ao Nang Beach"
      ],
      "summary": "Krabi's most practical first-time base when transfer ease, tours, and easy backup matter more than pure scenery mood.",
      "graph_role": "hotel-area anchor",
      "region": "Krabi",
      "province": "Krabi",
      "lat": 8.0329,
      "lon": 98.8253,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/ao-nang/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Marine weather",
        "pier and boat context",
        "hotel density",
        "road transfer burden"
      ],
      "signals": [
        {
          "type": "logistics_strength",
          "label": "Logistics strength",
          "severity": "high",
          "summary": "Ao Nang is the graph's default Krabi answer because it keeps the coast usable even when plans change."
        },
        {
          "type": "tour_density",
          "label": "Tour density",
          "severity": "medium",
          "summary": "The area is strongest when boat days are optional rather than mandatory."
        },
        {
          "type": "coast_friction",
          "label": "Coast friction",
          "severity": "medium",
          "summary": "Ao Nang still depends on road and pier timing more than Phuket-like infrastructure bases."
        }
      ],
      "today_checks": [
        "Choose Ao Nang when practical coast access matters more than perfect scenery mood.",
        "Keep one non-boat day available.",
        "Do not confuse a scenic promo photo with a resilient base."
      ],
      "decisions": [
        "where_to_stay",
        "ferry_plan",
        "beach_plan"
      ],
      "related_entities": [
        "krabi",
        "railay",
        "krabi-airport",
        "ao-nang-pier",
        "rassada-pier"
      ],
      "related_pages": [
        {
          "path": "/accommodation/krabi/",
          "label": "Where to stay in Krabi"
        },
        {
          "path": "/where-to-go/krabi/",
          "label": "Krabi destination guide"
        },
        {
          "path": "/ferries/krabi-koh-lanta/",
          "label": "Krabi to Koh Lanta ferries"
        }
      ],
      "note": "Ao Nang is the logistics-first Krabi hotel-area entity."
    },
    {
      "entity_id": "railay",
      "slug": "railay",
      "entity_type": "hotel_area",
      "entity_type_label": "Hotel area",
      "canonical_name": "Railay",
      "name_th": "ไร่เลย์",
      "name_en": "Railay",
      "aliases": [
        "Railay Beach"
      ],
      "summary": "Krabi's scenery-first base when limestone views and beach mood justify extra transfer fragility.",
      "graph_role": "hotel-area anchor",
      "region": "Krabi",
      "province": "Krabi",
      "lat": 8.0054,
      "lon": 98.837,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/railay/",
      "source_links": [
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "OSM Thailand accommodation",
          "path": "/data/sources/osm-thailand-accommodation/",
          "known": true
        },
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Marine weather",
        "boat and pier context",
        "hotel density",
        "route fragility"
      ],
      "signals": [
        {
          "type": "scenery_payoff",
          "label": "Scenery payoff",
          "severity": "high",
          "summary": "Railay exists for dramatic beach-and-cliff payoff, not for easiest logistics."
        },
        {
          "type": "boat_dependency",
          "label": "Boat dependency",
          "severity": "high",
          "summary": "The value drops quickly when weather, pier timing, or arrival-day transfer stacks weaken."
        },
        {
          "type": "fragility_penalty",
          "label": "Fragility penalty",
          "severity": "medium",
          "summary": "Railay is strongest when the trip can absorb a little transfer uncertainty."
        }
      ],
      "today_checks": [
        "Use Railay only when the scenery payoff is worth a more fragile arrival and exit stack.",
        "Do not force Railay on a tight arrival day.",
        "Keep Ao Nang visible as the practical fallback."
      ],
      "decisions": [
        "where_to_stay",
        "ferry_plan",
        "beach_plan"
      ],
      "related_entities": [
        "krabi",
        "ao-nang",
        "krabi-airport",
        "ao-nang-pier",
        "rassada-pier"
      ],
      "related_pages": [
        {
          "path": "/accommodation/krabi/",
          "label": "Where to stay in Krabi"
        },
        {
          "path": "/where-to-go/krabi/",
          "label": "Krabi destination guide"
        },
        {
          "path": "/ferries/krabi-koh-lanta/",
          "label": "Krabi to Koh Lanta ferries"
        }
      ],
      "note": "Railay is the scenery-first, higher-fragility Krabi hotel-area entity."
    },
    {
      "entity_id": "hua-hin-station",
      "slug": "hua-hin-station",
      "entity_type": "station",
      "entity_type_label": "Station",
      "canonical_name": "Hua Hin Railway Station",
      "name_th": "สถานีรถไฟหัวหิน",
      "name_en": "Hua Hin Railway Station",
      "aliases": [
        "Hua Hin station",
        "Hua Hin train station"
      ],
      "summary": "The rail anchor behind Hua Hin and Khao Takiab stays when coast comfort depends on easier Bangkok-linked overland access.",
      "graph_role": "station anchor",
      "region": "Hua Hin / Cha-am",
      "province": "Prachuap Khiri Khan",
      "lat": 12.5693,
      "lon": 99.957,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/hua-hin-station/",
      "source_links": [
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Public rail-support structure",
        "official SRT station presence",
        "road and hotel last-mile context"
      ],
      "signals": [
        {
          "type": "rail_access",
          "label": "Rail access",
          "severity": "high",
          "summary": "This station matters because Hua Hin is one of the few Thai coast bases where rail can still shape the stay decision."
        },
        {
          "type": "arrival_simplicity",
          "label": "Arrival simplicity",
          "severity": "medium",
          "summary": "A simple station arrival can be more valuable here than squeezing every move through a road-only weekend corridor."
        },
        {
          "type": "last_mile_gap",
          "label": "Last-mile gap",
          "severity": "medium",
          "summary": "Station presence helps, but the hotel still needs honest last-mile transfer time."
        }
      ],
      "today_checks": [
        "Use the station anchor when overland simplicity matters more than nightlife.",
        "Check the last-mile hotel transfer, not just the train leg.",
        "Treat Hua Hin station as a practical arrival anchor, not a promise of fast rail everywhere."
      ],
      "decisions": [
        "rail_plan",
        "where_to_stay",
        "route_feasibility"
      ],
      "related_entities": [
        "hua-hin",
        "central-hua-hin-khao-takiab",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/hua-hin/",
          "label": "Hua Hin / Cha-am destination guide"
        },
        {
          "path": "/rail/",
          "label": "Thailand rail layer"
        }
      ],
      "note": "Hua Hin station turns vague rail convenience into a real graph anchor."
    },
    {
      "entity_id": "bts-asok",
      "slug": "bts-asok",
      "entity_type": "station",
      "entity_type_label": "Station",
      "canonical_name": "BTS Asok / MRT Sukhumvit",
      "name_th": "สถานีอโศก / สถานีสุขุมวิท",
      "name_en": "BTS Asok / MRT Sukhumvit",
      "aliases": [
        "Asok interchange",
        "Sukhumvit interchange"
      ],
      "summary": "Bangkok's clearest rail-linked interchange anchor for hotel logic, rainy-day movement, and low-friction first-time planning.",
      "graph_role": "station anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7373,
      "lon": 100.5601,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/bts-asok/",
      "source_links": [
        {
          "name": "BTS SkyTrain system maps and service pages",
          "path": "/data/sources/bts-skytrain-system-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "MRT / MRTA metro maps and service pages",
          "path": "/data/sources/mrt-mrta-metro-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        }
      ],
      "observation_coverage": [
        "BTS and MRT service context",
        "hotel density",
        "venue density",
        "traffic avoidance value"
      ],
      "signals": [
        {
          "type": "interchange_strength",
          "label": "Interchange strength",
          "severity": "high",
          "summary": "Asok is the cleanest proof point for Bangkok hotel decisions that really depend on BTS and MRT overlap."
        },
        {
          "type": "hotel_base_signal",
          "label": "Hotel-base signal",
          "severity": "high",
          "summary": "Hotels close to this interchange sit in one of Bangkok's strongest low-friction zones."
        },
        {
          "type": "rain_backup",
          "label": "Rain backup",
          "severity": "medium",
          "summary": "Rail plus malls and food density make this station area resilient on wet or heat-heavy days."
        }
      ],
      "today_checks": [
        "Use this node when low transport friction matters more than old-city mood.",
        "Confirm the hotel is actually walkable to the interchange.",
        "Avoid pretending every Sukhumvit hotel is equally rail-simple."
      ],
      "decisions": [
        "where_to_stay",
        "rail_plan",
        "where_to_go_today"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "silom-sathorn"
      ],
      "related_pages": [
        {
          "path": "/rail/bts-mrt-bangkok/",
          "label": "BTS and MRT Bangkok"
        },
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        }
      ],
      "note": "This is an interchange entity, not a whole district."
    },
    {
      "entity_id": "bangkok-mochit-2",
      "slug": "bangkok-mochit-2",
      "entity_type": "bus_terminal",
      "entity_type_label": "Bus terminal",
      "canonical_name": "Bangkok Mochit 2 Bus Terminal",
      "name_th": "สถานีขนส่งผู้โดยสารกรุงเทพ (จตุจักร)",
      "name_en": "Bangkok Mochit 2 Bus Terminal",
      "aliases": [
        "Mo Chit 2",
        "Bangkok Bus Terminal Chatuchak"
      ],
      "summary": "The main intercity bus anchor for north and Isaan route logic from Bangkok.",
      "graph_role": "bus-terminal anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.8136,
      "lon": 100.5484,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/bangkok-mochit-2/",
      "source_links": [
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "Ministry of Transport Data Catalog",
          "path": "/data/sources/ministry-of-transport-data-catalog/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand bus stops and route relations",
          "path": "/data/sources/openstreetmap-thailand-bus-stops-and-route-relations/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Namtang GTFS structure",
        "MOT terminal identity",
        "BKS timetable context",
        "road friction"
      ],
      "signals": [
        {
          "type": "bus_route_coverage",
          "label": "Bus route coverage",
          "severity": "high",
          "summary": "This terminal matters because many long-distance bus pages start or end here."
        },
        {
          "type": "terminal_complexity",
          "label": "Terminal complexity",
          "severity": "medium",
          "summary": "Mochit 2 is useful, but terminal sprawl and Bangkok traffic can make it feel harder than the timetable suggests."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "The terminal keeps overland pivots available when flights or trains are weaker."
        }
      ],
      "today_checks": [
        "Budget extra Bangkok travel time.",
        "Treat the terminal itself as a friction layer, not just a route label.",
        "Compare train and flight options before locking the bus."
      ],
      "decisions": [
        "route_feasibility",
        "bus_plan"
      ],
      "related_entities": [
        "bangkok",
        "isaan",
        "chiang-mai"
      ],
      "related_pages": [
        {
          "path": "/bus-stations/bangkok-mochit-2/",
          "label": "Mochit 2 station page"
        },
        {
          "path": "/routes/by-bus/bangkok-chiang-mai/",
          "label": "Bangkok to Chiang Mai by bus"
        }
      ],
      "note": "Terminal burden is part of the decision, not a small footnote."
    },
    {
      "entity_id": "suvarnabhumi-airport",
      "slug": "suvarnabhumi-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Suvarnabhumi Airport",
      "name_th": "สนามบินสุวรรณภูมิ",
      "name_en": "Suvarnabhumi Airport",
      "aliases": [
        "BKK",
        "Suvarnabhumi"
      ],
      "summary": "Bangkok's main long-haul airport anchor, relevant for route resilience, airport rail logic, taxi friction, and same-day hotel decisions.",
      "graph_role": "airport anchor",
      "region": "Bangkok",
      "province": "Samut Prakan",
      "lat": 13.69,
      "lon": 100.7501,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/suvarnabhumi-airport/",
      "source_links": [
        {
          "name": "AOT airport flight status",
          "path": "/data/sources/aot-airport-flight-status/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "BTS SkyTrain system maps and service pages",
          "path": "/data/sources/bts-skytrain-system-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "MRT / MRTA metro maps and service pages",
          "path": "/data/sources/mrt-mrta-metro-maps-and-service-pages/",
          "known": true
        },
        {
          "name": "AOT Suvarnabhumi public taxi",
          "path": "/data/sources/aot-suvarnabhumi-public-taxi/",
          "known": true
        },
        {
          "name": "AOT Suvarnabhumi Grab pickup points",
          "path": "/data/sources/aot-suvarnabhumi-grab-pickup-points/",
          "known": true
        }
      ],
      "observation_coverage": [
        "AOT flight status context",
        "airport rail access",
        "taxi and Grab rules",
        "car-rental counters",
        "airport-linked hotel logic"
      ],
      "signals": [
        {
          "type": "airport_access",
          "label": "Airport access",
          "severity": "high",
          "summary": "Suvarnabhumi is central to same-day arrival logic, airport-rail tradeoffs, and cross-country route design."
        },
        {
          "type": "ground_friction",
          "label": "Ground friction",
          "severity": "medium",
          "summary": "Taxi, airport rail, and hotel distance all change the real arrival quality."
        },
        {
          "type": "route_resilience",
          "label": "Route resilience",
          "severity": "medium",
          "summary": "Direct flight access often makes Bangkok the best pivot when other parts of Thailand weaken."
        }
      ],
      "today_checks": [
        "Decide between airport rail and taxi before landing.",
        "Do not overrate a Bangkok hotel if it creates a punishing airport transfer.",
        "Use the airport as a route pivot, not just an arrival fact."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_stay",
        "flight_plan"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "silom-sathorn"
      ],
      "related_pages": [
        {
          "path": "/flights/suvarnabhumi-bkk/",
          "label": "Suvarnabhumi flights"
        },
        {
          "path": "/taxi/suvarnabhumi-airport-taxi/",
          "label": "Suvarnabhumi taxi"
        },
        {
          "path": "/accommodation/bangkok/",
          "label": "Where to stay in Bangkok"
        }
      ],
      "note": "Airport entities already anchor route logic and source context, and they are ready to absorb deeper flight and ground-access signals when those feeds are attached."
    },
    {
      "entity_id": "don-mueang-airport",
      "slug": "don-mueang-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Don Mueang Airport",
      "name_th": "สนามบินดอนเมือง",
      "name_en": "Don Mueang Airport",
      "aliases": [
        "DMK",
        "Don Mueang"
      ],
      "summary": "Bangkok's domestic and low-cost airport anchor, useful when domestic route efficiency matters more than full-service international convenience.",
      "graph_role": "airport anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.9126,
      "lon": 100.607,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/don-mueang-airport/",
      "source_links": [
        {
          "name": "AOT airport flight status",
          "path": "/data/sources/aot-airport-flight-status/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "AOT Don Mueang taxi meter service",
          "path": "/data/sources/aot-don-mueang-taxi-meter-service/",
          "known": true
        },
        {
          "name": "AOT Don Mueang Grab pickup points",
          "path": "/data/sources/aot-don-mueang-grab-pickup-points/",
          "known": true
        }
      ],
      "observation_coverage": [
        "AOT flight status context",
        "taxi and ride-hailing rules",
        "airport-linked route friction"
      ],
      "signals": [
        {
          "type": "domestic_route_value",
          "label": "Domestic route value",
          "severity": "high",
          "summary": "DMK often matters when the trip uses budget domestic flights across Thailand."
        },
        {
          "type": "ground_access_penalty",
          "label": "Ground-access penalty",
          "severity": "medium",
          "summary": "Hotel and traffic logic can make a cheap domestic fare less attractive than it looks."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "Domestic flexibility keeps DMK relevant as a route-repair airport."
        }
      ],
      "today_checks": [
        "Compare airport access time against the fare savings.",
        "Use DMK intentionally for domestic chains, not by accident.",
        "Avoid hotel choices that make the airport transfer the worst part of the day."
      ],
      "decisions": [
        "route_feasibility",
        "flight_plan"
      ],
      "related_entities": [
        "bangkok",
        "suvarnabhumi-airport"
      ],
      "related_pages": [
        {
          "path": "/taxi/don-mueang-airport-taxi/",
          "label": "Don Mueang taxi"
        },
        {
          "path": "/flights/don-mueang-dmk/",
          "label": "Don Mueang flights"
        }
      ],
      "note": "DMK is a domestic route-repair entity more than a glamour airport entity."
    },
    {
      "entity_id": "chiang-mai-airport",
      "slug": "chiang-mai-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Chiang Mai Airport",
      "name_th": "ท่าอากาศยานเชียงใหม่",
      "name_en": "Chiang Mai Airport",
      "aliases": [
        "CNX",
        "Chiang Mai International Airport"
      ],
      "summary": "Northern Thailand's main airport anchor for Chiang Mai city access, domestic route recovery, and smoke-season pivot logic.",
      "graph_role": "airport anchor",
      "region": "Chiang Mai",
      "province": "Chiang Mai",
      "lat": 18.7668,
      "lon": 98.9626,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/chiang-mai-airport/",
      "source_links": [
        {
          "name": "NOAA Aviation Weather API",
          "path": "/data/sources/noaa-aviation-weather-api/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "Department of Airports flight info",
          "path": "/data/sources/department-of-airports-flight-info/",
          "known": true
        },
        {
          "name": "AOT Chiang Mai car rental services",
          "path": "/data/sources/aot-chiang-mai-car-rental-services/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport weather context",
        "public transfer support",
        "city access and hotel logic"
      ],
      "signals": [
        {
          "type": "airport_access",
          "label": "Airport access",
          "severity": "high",
          "summary": "Chiang Mai Airport matters because quick city access and realistic onward moves change whether the north still feels easy."
        },
        {
          "type": "ground_friction",
          "label": "Ground friction",
          "severity": "medium",
          "summary": "A cheap fare does not help much if the hotel or road transfer turns the arrival into a slog."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "CNX is the cleanest north-side route repair anchor when smoke, weather, or timing start weakening overland plans."
        }
      ],
      "today_checks": [
        "Keep PM2.5 and flight timing in the same decision.",
        "Do not overrate a cheap fare if the transfer burns the day.",
        "Treat the airport as part of the north pivot, not just a booking detail."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_go_today",
        "flight_plan"
      ],
      "related_entities": [
        "chiang-mai",
        "nimman"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/chiang-mai/",
          "label": "Chiang Mai destination guide"
        },
        {
          "path": "/rail/bangkok-chiang-mai-train/",
          "label": "Bangkok to Chiang Mai train"
        },
        {
          "path": "/flights/bangkok-to-chiang-mai/",
          "label": "Bangkok to Chiang Mai flights"
        }
      ],
      "note": "CNX is a route-support anchor for the north, not just an aviation fact."
    },
    {
      "entity_id": "phuket-airport",
      "slug": "phuket-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Phuket Airport",
      "name_th": "ท่าอากาศยานภูเก็ต",
      "name_en": "Phuket Airport",
      "aliases": [
        "HKT",
        "Phuket International Airport"
      ],
      "summary": "Phuket's airport anchor for infrastructure-first beach trips, coast pivots, and weather-backup route design.",
      "graph_role": "airport anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 8.1132,
      "lon": 98.3169,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/phuket-airport/",
      "source_links": [
        {
          "name": "NOAA Aviation Weather API",
          "path": "/data/sources/noaa-aviation-weather-api/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "AOT airport flight status",
          "path": "/data/sources/aot-airport-flight-status/",
          "known": true
        },
        {
          "name": "AOT Phuket car rental services",
          "path": "/data/sources/aot-phuket-car-rental-services/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport weather context",
        "public transfer support",
        "beach-area access"
      ],
      "signals": [
        {
          "type": "airport_access",
          "label": "Airport access",
          "severity": "high",
          "summary": "Phuket Airport is part of why Phuket works as the infrastructure-first beach answer."
        },
        {
          "type": "ground_friction",
          "label": "Ground friction",
          "severity": "medium",
          "summary": "The beach base you choose can make the airport feel easy or exhausting."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "HKT keeps the Andaman side flexible when boat plans weaken but the coast still works."
        }
      ],
      "today_checks": [
        "Choose the beach zone before assuming the airport transfer is easy.",
        "Use the airport as part of the weather-backup story.",
        "Do not treat all Phuket hotel areas as equally airport-simple."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_go_today",
        "flight_plan"
      ],
      "related_entities": [
        "phuket",
        "kata-karon",
        "rassada-pier"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        },
        {
          "path": "/ferries/phuket-krabi/",
          "label": "Phuket to Krabi ferries"
        },
        {
          "path": "/flights/phuket-hkt/",
          "label": "Phuket flights"
        }
      ],
      "note": "HKT matters because it keeps Phuket resilient even when the boat layer weakens."
    },
    {
      "entity_id": "krabi-airport",
      "slug": "krabi-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Krabi Airport",
      "name_th": "ท่าอากาศยานกระบี่",
      "name_en": "Krabi Airport",
      "aliases": [
        "KBV",
        "Krabi International Airport"
      ],
      "summary": "Krabi's airport anchor for scenery-first coast plans that still need a realistic arrival and exit path.",
      "graph_role": "airport anchor",
      "region": "Krabi",
      "province": "Krabi",
      "lat": 8.0991,
      "lon": 98.9862,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/krabi-airport/",
      "source_links": [
        {
          "name": "NOAA Aviation Weather API",
          "path": "/data/sources/noaa-aviation-weather-api/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "Department of Airports flight info",
          "path": "/data/sources/department-of-airports-flight-info/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport weather context",
        "public transfer support",
        "coast access"
      ],
      "signals": [
        {
          "type": "airport_access",
          "label": "Airport access",
          "severity": "medium",
          "summary": "Krabi Airport helps the coast, but it does not remove the transfer burden behind scenery-heavy plans."
        },
        {
          "type": "ground_friction",
          "label": "Ground friction",
          "severity": "medium",
          "summary": "Airport ease can disappear if the final beach or pier move is long."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "KBV is valuable when you want Andaman access without forcing every move through a pier."
        }
      ],
      "today_checks": [
        "Do not confuse a clean airport arrival with a frictionless beach transfer.",
        "Keep boat dependence separate from airport convenience.",
        "Use the airport as part of the backup plan, not the whole route argument."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_go_today",
        "flight_plan"
      ],
      "related_entities": [
        "krabi",
        "phuket"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/krabi/",
          "label": "Krabi destination guide"
        },
        {
          "path": "/ferries/krabi-koh-lanta/",
          "label": "Krabi to Koh Lanta ferries"
        }
      ],
      "note": "KBV helps the Andaman side, but it does not erase the downstream transfer penalty."
    },
    {
      "entity_id": "u-tapao-airport",
      "slug": "u-tapao-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "U-Tapao Airport",
      "name_th": "สนามบินอู่ตะเภา",
      "name_en": "U-Tapao Airport",
      "aliases": [
        "UTP",
        "U-Tapao",
        "Rayong-Pattaya International Airport"
      ],
      "summary": "The practical airport anchor behind Pattaya and Jomtien coast planning when Bangkok airport detours are not worth the friction.",
      "graph_role": "airport anchor",
      "region": "Pattaya / Chonburi",
      "province": "Rayong",
      "lat": 12.6799,
      "lon": 101.005,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/u-tapao-airport/",
      "source_links": [
        {
          "name": "NOAA Aviation Weather API",
          "path": "/data/sources/noaa-aviation-weather-api/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport weather context",
        "public transfer structure",
        "east-coast route support"
      ],
      "signals": [
        {
          "type": "coast_air_access",
          "label": "Coast air access",
          "severity": "high",
          "summary": "U-Tapao matters because it can remove a Bangkok airport detour from short east-coast trip logic."
        },
        {
          "type": "ground_transfer_focus",
          "label": "Ground transfer focus",
          "severity": "medium",
          "summary": "The airport only helps if the final road leg into Pattaya or Jomtien stays honest."
        },
        {
          "type": "backup_airport_value",
          "label": "Backup airport value",
          "severity": "medium",
          "summary": "This anchor gives Pattaya / Chonburi a more local airport fallback than Bangkok-first planning."
        }
      ],
      "today_checks": [
        "Use U-Tapao when a short coast trip wants the closest air anchor, not automatic Bangkok airport logic.",
        "Check the final road leg into Pattaya or Jomtien before paying.",
        "Treat it as a coast-support airport, not a promise of broad flight choice."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_stay",
        "flight_plan"
      ],
      "related_entities": [
        "pattaya-chonburi",
        "central-pattaya-jomtien",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/pattaya-chonburi/",
          "label": "Pattaya / Chonburi destination guide"
        },
        {
          "path": "/route-check/",
          "label": "Route check"
        }
      ],
      "note": "U-Tapao is the local airport anchor behind Pattaya-side planning, even when Bangkok still dominates broader route choice."
    },
    {
      "entity_id": "samui-airport",
      "slug": "samui-airport",
      "entity_type": "airport",
      "entity_type_label": "Airport",
      "canonical_name": "Samui Airport",
      "name_th": "ท่าอากาศยานสมุย",
      "name_en": "Samui Airport",
      "aliases": [
        "USM",
        "Samui International Airport"
      ],
      "summary": "Samui's airport anchor for the softest Gulf-island arrival path and the cleanest pivot away from fragile mainland-plus-ferry stacks.",
      "graph_role": "airport anchor",
      "region": "Koh Samui",
      "province": "Surat Thani",
      "lat": 9.5478,
      "lon": 100.0625,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/samui-airport/",
      "source_links": [
        {
          "name": "NOAA Aviation Weather API",
          "path": "/data/sources/noaa-aviation-weather-api/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Airport weather context",
        "public transfer support",
        "island-base and pier logic"
      ],
      "signals": [
        {
          "type": "airport_access",
          "label": "Airport access",
          "severity": "high",
          "summary": "Samui Airport is part of why Samui works as the softest Gulf-island base."
        },
        {
          "type": "ground_friction",
          "label": "Ground friction",
          "severity": "medium",
          "summary": "A clean airport arrival still needs hotel and pier logic behind it."
        },
        {
          "type": "route_pivot_strength",
          "label": "Route pivot strength",
          "severity": "medium",
          "summary": "USM lets Gulf plans stay flexible when mainland or ferry stacks weaken."
        }
      ],
      "today_checks": [
        "Compare flight cost and weather against the mainland-plus-ferry stack.",
        "Use Samui itself as the stable island base before expanding the chain.",
        "Do not assume every Samui hotel is equally easy from the airport."
      ],
      "decisions": [
        "route_feasibility",
        "where_to_go_today",
        "flight_plan"
      ],
      "related_entities": [
        "koh-samui",
        "na-thon-pier",
        "bophut-fishermans-village"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/koh-samui/",
          "label": "Koh Samui destination guide"
        },
        {
          "path": "/ferries/koh-samui-koh-phangan-koh-tao/",
          "label": "Samui / Phangan / Tao ferries"
        }
      ],
      "note": "USM matters most as the soft-entry Gulf anchor, not as a promise of low total trip cost."
    },
    {
      "entity_id": "rassada-pier",
      "slug": "rassada-pier",
      "entity_type": "pier",
      "entity_type_label": "Pier",
      "canonical_name": "Rassada Pier",
      "name_th": "ท่าเรือรัษฎา",
      "name_en": "Rassada Pier",
      "aliases": [
        "Ratsada Pier"
      ],
      "summary": "Phuket's key ferry-transfer anchor for island and coast hops where pier identity and weather matter more than the brochure route line.",
      "graph_role": "pier anchor",
      "region": "Phuket",
      "province": "Phuket",
      "lat": 7.8851,
      "lon": 98.4154,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/rassada-pier/",
      "source_links": [
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Ferry operator commercial context",
          "path": "/data/sources/ferry-operator-commercial-context/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Pier identity",
        "marine weather",
        "route and hotel transfer burden"
      ],
      "signals": [
        {
          "type": "pier_identity",
          "label": "Pier identity",
          "severity": "high",
          "summary": "Rassada matters because the wrong pier assumption can break the transfer day."
        },
        {
          "type": "ferry_fragility",
          "label": "Ferry fragility",
          "severity": "medium",
          "summary": "Boat value depends on Andaman weather and downstream transfer stacks."
        },
        {
          "type": "transfer_penalty",
          "label": "Transfer penalty",
          "severity": "medium",
          "summary": "Even good ferry options can feel worse when the hotel base sits on the wrong side of Phuket."
        }
      ],
      "today_checks": [
        "Confirm the actual pier and check-in point.",
        "Do not book tight airport-to-pier stacks.",
        "Keep road backup visible when sea conditions weaken."
      ],
      "decisions": [
        "ferry_plan",
        "route_feasibility"
      ],
      "related_entities": [
        "phuket",
        "krabi",
        "kata-karon"
      ],
      "related_pages": [
        {
          "path": "/ferries/phuket-krabi/",
          "label": "Phuket to Krabi ferries"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "Piers should stay separate from hotels and ferry-booking pages."
    },
    {
      "entity_id": "ao-nang-pier",
      "slug": "ao-nang-pier",
      "entity_type": "pier",
      "entity_type_label": "Pier",
      "canonical_name": "Ao Nang Pier",
      "name_th": "ท่าเรืออ่าวนาง",
      "name_en": "Ao Nang Pier",
      "aliases": [
        "Ao Nang boat pier",
        "Nopparat / Ao Nang pier"
      ],
      "summary": "The practical pier-side anchor behind Ao Nang and Railay transfer logic when coast plans depend on honest boat and mainland handoff timing.",
      "graph_role": "pier anchor",
      "region": "Krabi",
      "province": "Krabi",
      "lat": 8.0324,
      "lon": 98.8241,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/ao-nang-pier/",
      "source_links": [
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "Namtang GTFS",
          "path": "/data/sources/namtang-gtfs/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Ferry operator commercial context",
          "path": "/data/sources/ferry-operator-commercial-context/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Pier transfer structure",
        "marine weather",
        "official passenger-berth support",
        "coast-transfer burden"
      ],
      "signals": [
        {
          "type": "pier_identity",
          "label": "Pier identity",
          "severity": "high",
          "summary": "Ao Nang Pier matters because Krabi coast plans often fail on the wrong pier assumption rather than the beach choice."
        },
        {
          "type": "coast_transfer_support",
          "label": "Coast transfer support",
          "severity": "medium",
          "summary": "This anchor separates practical Ao Nang and Railay handoff logic from generic province-wide boat optimism."
        },
        {
          "type": "weather_dependency",
          "label": "Weather dependency",
          "severity": "medium",
          "summary": "Even a practical Krabi base gets weaker when the pier layer and sea-state stack deteriorate."
        }
      ],
      "today_checks": [
        "Confirm the actual pier and boat-side transfer before paying for a tight arrival day.",
        "Use Ao Nang Pier to keep Railay and coast-hop logic honest.",
        "Keep one mainland-side fallback if the sea-state weakens."
      ],
      "decisions": [
        "ferry_plan",
        "route_feasibility",
        "where_to_stay"
      ],
      "related_entities": [
        "krabi",
        "ao-nang",
        "railay",
        "krabi-airport"
      ],
      "related_pages": [
        {
          "path": "/ferries/krabi-koh-lanta/",
          "label": "Krabi to Koh Lanta ferries"
        },
        {
          "path": "/accommodation/krabi/",
          "label": "Where to stay in Krabi"
        }
      ],
      "note": "Ao Nang Pier makes the Krabi coast transfer layer inspectable instead of leaving it as broad province prose."
    },
    {
      "entity_id": "na-thon-pier",
      "slug": "na-thon-pier",
      "entity_type": "pier",
      "entity_type_label": "Pier",
      "canonical_name": "Na Thon Pier",
      "name_th": "ท่าเรือหน้าทอน",
      "name_en": "Na Thon Pier",
      "aliases": [
        "Nathon Pier"
      ],
      "summary": "Samui's practical pier anchor for mainland and island-chain logic.",
      "graph_role": "pier anchor",
      "region": "Koh Samui",
      "province": "Surat Thani",
      "lat": 9.5699,
      "lon": 99.9965,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/na-thon-pier/",
      "source_links": [
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Ferry operator commercial context",
          "path": "/data/sources/ferry-operator-commercial-context/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Pier identity",
        "ferry timing",
        "weather stack",
        "hotel transfer burden"
      ],
      "signals": [
        {
          "type": "island_chain_gate",
          "label": "Island-chain gate",
          "severity": "high",
          "summary": "Na Thon is where Samui stops being just a resort base and becomes part of a ferry chain."
        },
        {
          "type": "last_boat_risk",
          "label": "Last-boat risk",
          "severity": "medium",
          "summary": "Pier timing matters because late arrivals can break island stacks fast."
        },
        {
          "type": "weather_dependency",
          "label": "Weather dependency",
          "severity": "medium",
          "summary": "Even a strong Samui stay can weaken if the ferry layer does."
        }
      ],
      "today_checks": [
        "Use Samui itself as the stable fallback.",
        "Keep mainland and island hotel policies refundable when the ferry stack looks weak.",
        "Do not assume every Samui hotel is equally easy from the pier."
      ],
      "decisions": [
        "ferry_plan",
        "route_feasibility"
      ],
      "related_entities": [
        "koh-samui",
        "koh-phangan",
        "bophut-fishermans-village",
        "donsak-pier"
      ],
      "related_pages": [
        {
          "path": "/ferries/koh-samui-koh-phangan-koh-tao/",
          "label": "Samui / Phangan / Tao ferries"
        },
        {
          "path": "/accommodation/koh-samui/",
          "label": "Where to stay in Koh Samui"
        }
      ],
      "note": "Na Thon is the practical Gulf-pier anchor."
    },
    {
      "entity_id": "donsak-pier",
      "slug": "donsak-pier",
      "entity_type": "pier",
      "entity_type_label": "Pier",
      "canonical_name": "Donsak Pier",
      "name_th": "ท่าเรือดอนสัก",
      "name_en": "Donsak Pier",
      "aliases": [
        "Donsak",
        "Surat Thani ferry pier"
      ],
      "summary": "The mainland pier anchor behind many Samui and Phangan transfers, where road arrival time and last-boat logic matter more than hotel copy.",
      "graph_role": "pier anchor",
      "region": "Surat Thani mainland",
      "province": "Surat Thani",
      "lat": 9.3169,
      "lon": 99.685,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/donsak-pier/",
      "source_links": [
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "Ferry operator commercial context",
          "path": "/data/sources/ferry-operator-commercial-context/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Pier timing",
        "road arrival burden",
        "ferry route context",
        "weather stack"
      ],
      "signals": [
        {
          "type": "mainland_transfer_gate",
          "label": "Mainland transfer gate",
          "severity": "high",
          "summary": "Donsak matters because many Gulf island plans are really road-to-pier plans first."
        },
        {
          "type": "timing_penalty",
          "label": "Timing penalty",
          "severity": "medium",
          "summary": "This pier punishes late road arrivals more than casual travelers expect."
        },
        {
          "type": "ferry_backup_value",
          "label": "Ferry backup value",
          "severity": "medium",
          "summary": "Donsak keeps island routes alive when weather is good and timing is honest."
        }
      ],
      "today_checks": [
        "Do not stack a weak road day behind the last boat.",
        "Treat the mainland leg as part of the island decision.",
        "Use Samui itself as the route-repair anchor if the chain gets messy."
      ],
      "decisions": [
        "ferry_plan",
        "route_feasibility"
      ],
      "related_entities": [
        "na-thon-pier",
        "koh-samui",
        "koh-phangan"
      ],
      "related_pages": [
        {
          "path": "/ferries/koh-samui-koh-phangan-koh-tao/",
          "label": "Samui / Phangan / Tao ferries"
        }
      ],
      "note": "Mainland piers deserve their own graph objects."
    },
    {
      "entity_id": "yaowarat-gold-district",
      "slug": "yaowarat-gold-district",
      "entity_type": "market_district",
      "entity_type_label": "Market district",
      "canonical_name": "Yaowarat gold district",
      "name_th": "ย่านทองเยาวราช",
      "name_en": "Yaowarat gold district",
      "aliases": [
        "Bangkok / Yaowarat gold district",
        "Yaowarat gold shops",
        "Chinatown gold district"
      ],
      "summary": "Bangkok's densest public gold-shopping anchor, where the national Thai quote meets the clearest comparison-shopping and buyback context.",
      "graph_role": "gold-shopping anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7399,
      "lon": 100.5101,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "high",
      "path": "/entities/yaowarat-gold-district/",
      "source_links": [
        {
          "name": "Gold Traders Association Thailand gold prices",
          "path": "/data/sources/gold-traders-association-thailand-gold-prices/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        },
        {
          "name": "TFEX Gold Futures contract and market data",
          "path": "/data/sources/tfex-gold-futures-contract-and-market-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "GTA national gold quote",
        "USD/THB quote context",
        "city buying-friction context",
        "gold and jewelry POI density"
      ],
      "signals": [
        {
          "type": "comparison_density",
          "label": "Comparison density",
          "severity": "high",
          "summary": "Yaowarat leads because multiple nearby shops make spread, receipt, and buyback comparison easier than in most Thai city contexts."
        },
        {
          "type": "national_quote_anchor",
          "label": "National quote anchor",
          "severity": "high",
          "summary": "The district uses the national Gold Traders Association quote; it is not a separate local official price market."
        },
        {
          "type": "shop_level_variation",
          "label": "Shop-level variation",
          "severity": "medium",
          "summary": "Even in Yaowarat, workmanship, ornament premium, and buyback terms still vary by shop."
        }
      ],
      "today_checks": [
        "Keep the national GTA bar and ornament quote visible before comparing shops.",
        "Ask about workmanship, receipts, and buyback terms instead of relying on a headline quote alone.",
        "Use Yaowarat when comparison-shopping confidence matters more than convenience."
      ],
      "decisions": [
        "gold_buying_check"
      ],
      "related_entities": [
        "bangkok",
        "bts-asok",
        "suvarnabhumi-airport"
      ],
      "related_pages": [
        {
          "path": "/gold/yaowarat-gold-shops/",
          "label": "Yaowarat gold shops"
        },
        {
          "path": "/gold/thailand-gold-price/",
          "label": "Thailand gold price"
        },
        {
          "path": "/where-to-go/bangkok/",
          "label": "Bangkok destination guide"
        },
        {
          "path": "/food/bangkok-chinatown-food-route/",
          "label": "Bangkok Chinatown food route"
        }
      ],
      "note": "This is the strongest public Thai gold-shopping anchor in the graph, but it still does not guarantee any one shop's final price or buyback policy."
    },
    {
      "entity_id": "chiang-mai-gold-shopping",
      "slug": "chiang-mai-gold-shopping",
      "entity_type": "market_district",
      "entity_type_label": "Market district",
      "canonical_name": "Chiang Mai gold shopping",
      "name_th": "การซื้อทองเชียงใหม่",
      "name_en": "Chiang Mai gold shopping",
      "aliases": [
        "Chiang Mai gold shops",
        "Chiang Mai gold buying"
      ],
      "summary": "Regional gold-shopping anchor for Chiang Mai when convenience matters more than the deepest comparison-shopping field.",
      "graph_role": "gold-shopping anchor",
      "region": "Northern Thailand",
      "province": "Chiang Mai",
      "lat": 18.7883,
      "lon": 98.9853,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/chiang-mai-gold-shopping/",
      "source_links": [
        {
          "name": "Gold Traders Association Thailand gold prices",
          "path": "/data/sources/gold-traders-association-thailand-gold-prices/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        },
        {
          "name": "TFEX Gold Futures contract and market data",
          "path": "/data/sources/tfex-gold-futures-contract-and-market-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "GTA national gold quote",
        "USD/THB quote context",
        "city buying-friction context",
        "gold and jewelry POI density"
      ],
      "signals": [
        {
          "type": "regional_convenience",
          "label": "Regional convenience",
          "severity": "high",
          "summary": "Chiang Mai works when the trip already centers on the north and the buyer does not need Bangkok-level shop density."
        },
        {
          "type": "national_quote_anchor",
          "label": "National quote anchor",
          "severity": "high",
          "summary": "Chiang Mai still relies on the same national Thai quote, not a separate official northern price."
        },
        {
          "type": "comparison_limit",
          "label": "Comparison limit",
          "severity": "medium",
          "summary": "The city is more about convenience than maximum comparison depth, so premium and buyback terms still need direct checking."
        }
      ],
      "today_checks": [
        "Compare the Chiang Mai shop quote against the national GTA reference first.",
        "Treat ornament premium and buyback terms as the main local variation.",
        "Use Bangkok later if the purchase is large enough that comparison density matters more than convenience."
      ],
      "decisions": [
        "gold_buying_check"
      ],
      "related_entities": [
        "chiang-mai",
        "old-city-chiang-mai",
        "nimman",
        "chiang-mai-airport"
      ],
      "related_pages": [
        {
          "path": "/gold/thailand-gold-price/",
          "label": "Thailand gold price"
        },
        {
          "path": "/where-to-go/chiang-mai/",
          "label": "Chiang Mai destination guide"
        }
      ],
      "note": "Chiang Mai is a convenience gold-buying anchor, not a separate official local market."
    },
    {
      "entity_id": "phuket-gold-shopping",
      "slug": "phuket-gold-shopping",
      "entity_type": "market_district",
      "entity_type_label": "Market district",
      "canonical_name": "Phuket gold shopping",
      "name_th": "การซื้อทองภูเก็ต",
      "name_en": "Phuket gold shopping",
      "aliases": [
        "Phuket gold shops",
        "Phuket gold buying"
      ],
      "summary": "Tourist-market gold-shopping anchor for Phuket, where convenience is real but the national quote still matters more than any local headline price.",
      "graph_role": "gold-shopping anchor",
      "region": "Southern Thailand, Andaman Coast",
      "province": "Phuket",
      "lat": 7.8804,
      "lon": 98.3923,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/phuket-gold-shopping/",
      "source_links": [
        {
          "name": "Gold Traders Association Thailand gold prices",
          "path": "/data/sources/gold-traders-association-thailand-gold-prices/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        },
        {
          "name": "TFEX Gold Futures contract and market data",
          "path": "/data/sources/tfex-gold-futures-contract-and-market-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "GTA national gold quote",
        "USD/THB quote context",
        "city buying-friction context",
        "gold and jewelry POI density"
      ],
      "signals": [
        {
          "type": "tourist_market_friction",
          "label": "Tourist-market friction",
          "severity": "high",
          "summary": "Phuket is a convenience market where spread, language support, and receipt clarity matter more than in Bangkok."
        },
        {
          "type": "national_quote_anchor",
          "label": "National quote anchor",
          "severity": "high",
          "summary": "Phuket uses the same national Thai quote, not a separate official provincial gold price."
        },
        {
          "type": "convenience_penalty",
          "label": "Convenience penalty",
          "severity": "medium",
          "summary": "Convenience can be worth paying for, but it is not the same as being the best comparison-shopping field."
        }
      ],
      "today_checks": [
        "Do not treat any Phuket quote as if it were an official Phuket-specific gold benchmark.",
        "Keep the national GTA quote visible while comparing local spread and workmanship.",
        "Use Bangkok later if comparison-shopping confidence matters more than trip convenience."
      ],
      "decisions": [
        "gold_buying_check"
      ],
      "related_entities": [
        "phuket",
        "patong",
        "phuket-old-town",
        "phuket-airport"
      ],
      "related_pages": [
        {
          "path": "/gold/thailand-gold-price/",
          "label": "Thailand gold price"
        },
        {
          "path": "/where-to-go/phuket/",
          "label": "Phuket destination guide"
        }
      ],
      "note": "Phuket should stay framed as a tourist-market buying context, not a separate local price feed."
    },
    {
      "entity_id": "pattaya-gold-shopping",
      "slug": "pattaya-gold-shopping",
      "entity_type": "market_district",
      "entity_type_label": "Market district",
      "canonical_name": "Pattaya / Chonburi gold shopping",
      "name_th": "การซื้อทองพัทยา / ชลบุรี",
      "name_en": "Pattaya / Chonburi gold shopping",
      "aliases": [
        "Pattaya gold shops",
        "Chonburi gold buying"
      ],
      "summary": "Convenience-first gold-shopping anchor for Pattaya / Chonburi when the trip is already on the east coast and Bangkok-level comparison density is not the goal.",
      "graph_role": "gold-shopping anchor",
      "region": "Eastern Gulf Coast",
      "province": "Chonburi",
      "lat": 12.9236,
      "lon": 100.8825,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/pattaya-gold-shopping/",
      "source_links": [
        {
          "name": "Gold Traders Association Thailand gold prices",
          "path": "/data/sources/gold-traders-association-thailand-gold-prices/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        },
        {
          "name": "TFEX Gold Futures contract and market data",
          "path": "/data/sources/tfex-gold-futures-contract-and-market-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "GTA national gold quote",
        "USD/THB quote context",
        "city buying-friction context",
        "gold and jewelry POI density"
      ],
      "signals": [
        {
          "type": "tourist_market_friction",
          "label": "Tourist-market friction",
          "severity": "high",
          "summary": "Pattaya / Chonburi is a convenience market where spread, workmanship, and buyback questions need more deliberate checking."
        },
        {
          "type": "national_quote_anchor",
          "label": "National quote anchor",
          "severity": "high",
          "summary": "The same national Thai quote applies here; this is not a separate official east-coast gold market."
        },
        {
          "type": "comparison_limit",
          "label": "Comparison limit",
          "severity": "medium",
          "summary": "The area is useful for convenience, not for the widest public comparison-shopping field."
        }
      ],
      "today_checks": [
        "Anchor every quote to the national GTA bar and ornament figures first.",
        "Ask directly about spread, workmanship, and buyback terms before paying.",
        "Use Bangkok if deeper comparison-shopping matters more than east-coast convenience."
      ],
      "decisions": [
        "gold_buying_check"
      ],
      "related_entities": [
        "pattaya-chonburi",
        "central-pattaya-jomtien",
        "u-tapao-airport",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/gold/thailand-gold-price/",
          "label": "Thailand gold price"
        },
        {
          "path": "/where-to-go/pattaya-chonburi/",
          "label": "Pattaya / Chonburi destination guide"
        }
      ],
      "note": "Pattaya / Chonburi is a convenience context around the national quote, not a separate official local gold price."
    },
    {
      "entity_id": "hat-yai-gold-shopping",
      "slug": "hat-yai-gold-shopping",
      "entity_type": "market_district",
      "entity_type_label": "Market district",
      "canonical_name": "Hat Yai gold shopping",
      "name_th": "การซื้อทองหาดใหญ่",
      "name_en": "Hat Yai gold shopping",
      "aliases": [
        "Hat Yai gold shops",
        "Songkhla gold buying",
        "Hat Yai jewelry district"
      ],
      "summary": "Southern regional gold-shopping anchor for Hat Yai when the trip already centers on the lower south and Bangkok-level comparison density is not the goal.",
      "graph_role": "gold-shopping anchor",
      "region": "Southern Thailand",
      "province": "Songkhla",
      "lat": 7.0084,
      "lon": 100.4747,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/hat-yai-gold-shopping/",
      "source_links": [
        {
          "name": "Gold Traders Association Thailand gold prices",
          "path": "/data/sources/gold-traders-association-thailand-gold-prices/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        },
        {
          "name": "TFEX Gold Futures contract and market data",
          "path": "/data/sources/tfex-gold-futures-contract-and-market-data/",
          "known": true
        }
      ],
      "observation_coverage": [
        "GTA national gold quote",
        "USD/THB quote context",
        "city buying-friction context",
        "gold and jewelry POI density"
      ],
      "signals": [
        {
          "type": "regional_convenience",
          "label": "Regional convenience",
          "severity": "high",
          "summary": "Hat Yai is useful when the trip already centers on the lower south and the buyer wants a practical regional comparison field instead of flying to Bangkok."
        },
        {
          "type": "national_quote_anchor",
          "label": "National quote anchor",
          "severity": "high",
          "summary": "Hat Yai still relies on the same national Thai quote, not a separate official southern gold price."
        },
        {
          "type": "comparison_limit",
          "label": "Comparison limit",
          "severity": "medium",
          "summary": "Hat Yai can be a strong regional convenience market, but spread, workmanship, and buyback terms still need direct checking shop by shop."
        }
      ],
      "today_checks": [
        "Anchor every quote to the national GTA bar and ornament figures first.",
        "Use Hat Yai when southern convenience matters more than Bangkok-level comparison density.",
        "Ask directly about spread, workmanship, and buyback terms before paying."
      ],
      "decisions": [
        "gold_buying_check"
      ],
      "related_entities": [
        "yaowarat-gold-district",
        "phuket-gold-shopping",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/gold/thailand-gold-price/",
          "label": "Thailand gold price"
        }
      ],
      "note": "Hat Yai is a southern convenience context around the national Thai quote, not a separate official local gold price."
    },
    {
      "entity_id": "air4thai-bangkok-urban-cluster",
      "slug": "air4thai-bangkok-urban-cluster",
      "entity_type": "monitoring_cluster",
      "entity_type_label": "Monitoring cluster",
      "canonical_name": "Air4Thai Bangkok urban cluster",
      "name_th": "กลุ่มสถานี Air4Thai กรุงเทพฯ",
      "name_en": "Air4Thai Bangkok urban cluster",
      "aliases": [
        "Bangkok AQI cluster",
        "Bangkok Air4Thai coverage"
      ],
      "summary": "Monitoring cluster for the public AQI and PM2.5 station layer used across Bangkok decisions. This is a city-level signal group, not one exact sensor.",
      "graph_role": "monitoring-cluster anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7563,
      "lon": 100.5018,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium-high",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium-high",
      "path": "/entities/air4thai-bangkok-urban-cluster/",
      "source_links": [
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "OpenAQ Thailand",
          "path": "/data/sources/openaq-thailand/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Live AQI",
        "PM2.5",
        "source freshness",
        "station coverage"
      ],
      "signals": [
        {
          "type": "aqi_signal_hook",
          "label": "AQI signal hook",
          "severity": "high",
          "summary": "This cluster feeds the Bangkok AQI and outdoor-comfort decision layer."
        },
        {
          "type": "freshness_dependency",
          "label": "Freshness dependency",
          "severity": "high",
          "summary": "The value of the cluster depends on whether the public station layer is current."
        },
        {
          "type": "citywide_proxy_limit",
          "label": "Proxy limit",
          "severity": "medium",
          "summary": "One cluster cannot perfectly represent every Bangkok neighborhood."
        }
      ],
      "today_checks": [
        "Use the cluster as a city signal, not a neighborhood guarantee.",
        "Prioritize fresh readings over baseline prose when they disagree.",
        "Watch for contradiction between AQI and a heavy outdoor plan."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "food_route"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "riverside-old-town"
      ],
      "related_pages": [
        {
          "path": "/today/bangkok/",
          "label": "Bangkok Today"
        },
        {
          "path": "/where-to-go/bangkok/",
          "label": "Bangkok destination guide"
        },
        {
          "path": "/data/thailand-air-quality-apis/",
          "label": "Thailand air quality APIs"
        }
      ],
      "note": "This cluster page can split into child station entities later if stable station-level coverage adds more decision value than the current cluster view."
    },
    {
      "entity_id": "noise4thai-bangkok-roadside-cluster",
      "slug": "noise4thai-bangkok-roadside-cluster",
      "entity_type": "monitoring_cluster",
      "entity_type_label": "Monitoring cluster",
      "canonical_name": "Noise4Thai Bangkok roadside cluster",
      "name_th": "กลุ่มสถานีเสียงกรุงเทพฯ ริมถนน",
      "name_en": "Noise4Thai Bangkok roadside cluster",
      "aliases": [
        "Bangkok roadside noise cluster"
      ],
      "summary": "Monitoring cluster for Bangkok's official roadside and community noise context. This is an area-level signal group, not one precise microphone.",
      "graph_role": "monitoring-cluster anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.7563,
      "lon": 100.525,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/noise4thai-bangkok-roadside-cluster/",
      "source_links": [
        {
          "name": "PCD Noise4Thai",
          "path": "/data/sources/pcd-noise4thai/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "AOT airport noise monitoring",
          "path": "/data/sources/aot-airport-noise-monitoring/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Noise4Thai Leq and station context",
        "historical noise",
        "airport and nightlife context"
      ],
      "signals": [
        {
          "type": "noise_signal_hook",
          "label": "Noise signal hook",
          "severity": "medium",
          "summary": "The cluster helps explain where hotel-area or nightlife comfort assumptions may fail."
        },
        {
          "type": "roadside_bias",
          "label": "Roadside bias",
          "severity": "medium",
          "summary": "Roadside noise clusters can overstate noise compared with quieter micro-neighborhoods."
        },
        {
          "type": "hotel_area_context",
          "label": "Hotel-area context",
          "severity": "medium",
          "summary": "Noise layers matter most when hotel, nightlife, and return-route logic intersect."
        }
      ],
      "today_checks": [
        "Do not assume one noisy corridor means all Bangkok stays are noisy.",
        "Use this with hotel-area and nightlife decisions.",
        "Prefer the quieter pivot when sleep matters more than nightlife access."
      ],
      "decisions": [
        "where_to_stay",
        "nightlife_plan"
      ],
      "related_entities": [
        "bangkok",
        "sukhumvit",
        "silom-sathorn"
      ],
      "related_pages": [
        {
          "path": "/noise/bangkok-roadside-noise/",
          "label": "Bangkok roadside noise"
        },
        {
          "path": "/noise/hotel-noise-risk-thailand/",
          "label": "Hotel noise risk in Thailand"
        }
      ],
      "note": "Noise should remain a context layer, not the only hotel-area decision variable."
    },
    {
      "entity_id": "thaiwater-chao-phraya-bangkok",
      "slug": "thaiwater-chao-phraya-bangkok",
      "entity_type": "monitoring_cluster",
      "entity_type_label": "Monitoring cluster",
      "canonical_name": "Thaiwater Chao Phraya Bangkok corridor",
      "name_th": "กลุ่มติดตามน้ำเจ้าพระยากรุงเทพฯ",
      "name_en": "Thaiwater Chao Phraya Bangkok corridor",
      "aliases": [
        "Bangkok river water cluster",
        "Chao Phraya Bangkok monitoring corridor"
      ],
      "summary": "Monitoring cluster for river, canal, salinity, and flood-adjacent conditions around Bangkok's Chao Phraya corridor.",
      "graph_role": "monitoring-cluster anchor",
      "region": "Bangkok",
      "province": "Bangkok",
      "lat": 13.744,
      "lon": 100.495,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-09",
      "last_verified_at": "2026-05-09",
      "source_confidence": "medium",
      "path": "/entities/thaiwater-chao-phraya-bangkok/",
      "source_links": [
        {
          "name": "Thaiwater WaterQuality API",
          "path": "/data/sources/thaiwater-waterquality-api/",
          "known": true
        },
        {
          "name": "Pollution Control Department water quality",
          "path": "/data/sources/pollution-control-department-water-quality/",
          "known": true
        },
        {
          "name": "MWA raw-water salinity",
          "path": "/data/sources/mwa-raw-water-salinity/",
          "known": true
        },
        {
          "name": "BMA canal water quality",
          "path": "/data/sources/bma-canal-water-quality/",
          "known": true
        }
      ],
      "observation_coverage": [
        "Thaiwater observations",
        "river and canal quality context",
        "MWA salinity context",
        "flood-adjacent monitoring"
      ],
      "signals": [
        {
          "type": "flood_signal_hook",
          "label": "Flood signal hook",
          "severity": "medium",
          "summary": "This cluster now acts as the Bangkok flood and river-condition context anchor inside the graph."
        },
        {
          "type": "river_condition_hook",
          "label": "River condition hook",
          "severity": "medium",
          "summary": "It helps explain when river-facing or canal-adjacent plans need more caution."
        },
        {
          "type": "service_area_context",
          "label": "Service-area context",
          "severity": "low",
          "summary": "The corridor is more useful for context than for single-spot travel decisions today."
        }
      ],
      "today_checks": [
        "Use this as city-river context, not beach-water logic.",
        "Watch it more closely in heavy-rain windows.",
        "Keep hotel-area and route friction decisions separate from raw river data."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay"
      ],
      "related_entities": [
        "bangkok",
        "riverside-old-town"
      ],
      "related_pages": [
        {
          "path": "/water/chao-phraya-water-quality/",
          "label": "Chao Phraya water quality"
        },
        {
          "path": "/water/bangkok-canals/",
          "label": "Bangkok canals"
        }
      ],
      "note": "This is a monitoring corridor, not a single water station."
    },
    {
      "entity_id": "chiang-rai",
      "slug": "chiang-rai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Chiang Rai",
      "name_th": "เชียงราย",
      "name_en": "Chiang Rai",
      "aliases": [],
      "summary": "Chiang Rai is strongest when the trip actually wants northern border, culture, mountain route base.",
      "graph_role": "destination anchor",
      "region": "Northern Thailand",
      "province": "Chiang Rai",
      "lat": 19.9105,
      "lon": 99.8406,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/chiang-rai/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "AQI and haze comfort",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Chiang Rai works best when the trip actually wants northern border, culture, mountain route base."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Chiang Rai sits in the graph as northern border/culture/mountain route base."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Chiang Rai gets weaker when smoke season and car-route dependence."
        }
      ],
      "today_checks": [
        "Choose City center / Clock Tower before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat smoke season and car-route dependence as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route"
      ],
      "related_entities": [
        "chiang-mai",
        "pai"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/chiang-rai/",
          "label": "Chiang Rai destination guide"
        },
        {
          "path": "/accommodation/chiang-rai/",
          "label": "Where to stay in Chiang Rai"
        },
        {
          "path": "/research/cities/chiang-rai/",
          "label": "Chiang Rai city research brief"
        },
        {
          "path": "/food/chiang-rai-food-route/",
          "label": "Chiang Rai food guide"
        },
        {
          "path": "/temples/chiang-rai/",
          "label": "Chiang Rai temple route"
        },
        {
          "path": "/research/temples/chiang-rai/",
          "label": "Chiang Rai temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "hat-yai",
      "slug": "hat-yai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Hat Yai",
      "name_th": "หาดใหญ่",
      "name_en": "Hat Yai",
      "aliases": [
        "HDY"
      ],
      "summary": "Hat Yai is strongest when the trip actually wants south rail, air, border hub.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Lower South",
      "province": "Songkhla",
      "lat": 7.0084,
      "lon": 100.4747,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/hat-yai/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Tourist Police Bureau",
          "path": "/data/sources/tourist-police-bureau/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Hat Yai works best when the trip actually wants south rail, air, border hub."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Hat Yai sits in the graph as south rail/air/border hub, food, shopping."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Hat Yai gets weaker when flood/rain and event/border-route conditions are live."
        }
      ],
      "today_checks": [
        "Choose Downtown / Kim Yong / Santisuk before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat flood/rain and event/border-route conditions are live as a real trip breaker when conditions line up that way.",
        "Keep Songkhla visible as the first pivot if the city weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "rail_plan",
        "gold_buying_check"
      ],
      "related_entities": [
        "bangkok",
        "hat-yai-gold-shopping"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/hat-yai/",
          "label": "Hat Yai destination guide"
        },
        {
          "path": "/accommodation/hat-yai/",
          "label": "Where to stay in Hat Yai"
        },
        {
          "path": "/research/cities/hat-yai/",
          "label": "Hat Yai city research brief"
        },
        {
          "path": "/food/hat-yai-food-route/",
          "label": "Hat Yai food guide"
        },
        {
          "path": "/temples/hat-yai/",
          "label": "Hat Yai temple route"
        },
        {
          "path": "/research/temples/hat-yai/",
          "label": "Hat Yai temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "trang",
      "slug": "trang",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Trang",
      "name_th": "ตรัง",
      "name_en": "Trang",
      "aliases": [
        "TST"
      ],
      "summary": "Trang is strongest when the trip actually wants food city + Andaman island ferry base.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Andaman South",
      "province": "Trang",
      "lat": 7.5594,
      "lon": 99.6114,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/trang/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Trang works best when the trip actually wants food city + Andaman island ferry base."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Trang sits in the graph as food city + Andaman island ferry base."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Trang gets weaker when monsoon boat fragility; city vs island base split."
        }
      ],
      "today_checks": [
        "Choose Trang city before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat monsoon boat fragility; city vs island base split as a real trip breaker when conditions line up that way.",
        "Keep Krabi visible as the first pivot if the city weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "ferry_plan"
      ],
      "related_entities": [
        "krabi",
        "hat-yai"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/trang/",
          "label": "Trang destination guide"
        },
        {
          "path": "/accommodation/trang/",
          "label": "Where to stay in Trang"
        },
        {
          "path": "/research/cities/trang/",
          "label": "Trang city research brief"
        },
        {
          "path": "/food/southern-thai-food-for-beach-trips/",
          "label": "Trang food guide"
        },
        {
          "path": "/temples/trang/",
          "label": "Trang temple route"
        },
        {
          "path": "/research/temples/trang/",
          "label": "Trang temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "surat-thani",
      "slug": "surat-thani",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Surat Thani",
      "name_th": "สุราษฎร์ธานี",
      "name_en": "Surat Thani",
      "aliases": [
        "URT"
      ],
      "summary": "Surat Thani is strongest when the trip actually wants rail, air, bus-to-ferry gateway.",
      "graph_role": "destination anchor",
      "region": "Southern Thailand, Gulf Gateway",
      "province": "Surat Thani",
      "lat": 9.1382,
      "lon": 99.3215,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/surat-thani/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Surat Thani works best when the trip actually wants rail, air, bus-to-ferry gateway."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Surat Thani sits in the graph as rail/air/bus-to-ferry gateway."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Surat Thani gets weaker when ferry/marine weather and schedule fragility dominate."
        }
      ],
      "today_checks": [
        "Choose Surat Thani city / Tapee River before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat ferry/marine weather and schedule fragility dominate as a real trip breaker when conditions line up that way.",
        "Keep Krabi visible as the first pivot if the city weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "ferry_plan",
        "rail_plan"
      ],
      "related_entities": [
        "koh-samui",
        "koh-phangan"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/surat-thani/",
          "label": "Surat Thani destination guide"
        },
        {
          "path": "/accommodation/surat-thani/",
          "label": "Where to stay in Surat Thani"
        },
        {
          "path": "/research/cities/surat-thani/",
          "label": "Surat Thani city research brief"
        },
        {
          "path": "/food/southern-thai-food-for-beach-trips/",
          "label": "Surat Thani food guide"
        },
        {
          "path": "/temples/surat-thani/",
          "label": "Surat Thani temple route"
        },
        {
          "path": "/research/temples/surat-thani/",
          "label": "Surat Thani temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "sukhothai",
      "slug": "sukhothai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Sukhothai",
      "name_th": "สุโขทัย",
      "name_en": "Sukhothai",
      "aliases": [
        "Old Sukhothai"
      ],
      "summary": "Sukhothai is strongest when the trip actually wants UNESCO heritage, old-city stay, cycling.",
      "graph_role": "destination anchor",
      "region": "Lower Northern Thailand",
      "province": "Sukhothai",
      "lat": 17.0056,
      "lon": 99.8264,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/sukhothai/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Sukhothai works best when the trip actually wants UNESCO heritage, old-city stay, cycling."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Sukhothai sits in the graph as UNESCO heritage, old-city stay, cycling."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Sukhothai gets weaker when heat and festival crowding."
        }
      ],
      "today_checks": [
        "Choose Old City / Historical Park before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat heat and festival crowding as a real trip breaker when conditions line up that way.",
        "Keep Ayutthaya visible as the first pivot if the city weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route"
      ],
      "related_entities": [
        "ayutthaya",
        "chiang-mai"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/sukhothai/",
          "label": "Sukhothai destination guide"
        },
        {
          "path": "/accommodation/sukhothai/",
          "label": "Where to stay in Sukhothai"
        },
        {
          "path": "/research/cities/sukhothai/",
          "label": "Sukhothai city research brief"
        },
        {
          "path": "/temples/sukhothai/",
          "label": "Sukhothai temple route"
        },
        {
          "path": "/research/temples/sukhothai/",
          "label": "Sukhothai temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "nakhon-ratchasima",
      "slug": "nakhon-ratchasima",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Nakhon Ratchasima",
      "name_th": "นครราชสีมา",
      "name_en": "Nakhon Ratchasima",
      "aliases": [],
      "summary": "Nakhon Ratchasima is strongest when the trip actually wants Isan gateway, Khao Yai, Phimai pivots.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand",
      "province": "Nakhon Ratchasima",
      "lat": 14.9799,
      "lon": 102.0977,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/nakhon-ratchasima/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "AQI and haze comfort",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Nakhon Ratchasima works best when the trip actually wants Isan gateway, Khao Yai, Phimai pivots."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Nakhon Ratchasima sits in the graph as Isan gateway, Khao Yai/Phimai pivots, rail/road hub."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Nakhon Ratchasima gets weaker when city vs Khao Yai expectations must be separated."
        }
      ],
      "today_checks": [
        "Choose Khorat city / Ya Mo before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat city vs Khao Yai expectations must be separated as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "isaan",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/nakhon-ratchasima/",
          "label": "Nakhon Ratchasima destination guide"
        },
        {
          "path": "/accommodation/nakhon-ratchasima/",
          "label": "Where to stay in Nakhon Ratchasima"
        },
        {
          "path": "/research/cities/nakhon-ratchasima/",
          "label": "Nakhon Ratchasima city research brief"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Nakhon Ratchasima food guide"
        },
        {
          "path": "/temples/nakhon-ratchasima/",
          "label": "Nakhon Ratchasima temple route"
        },
        {
          "path": "/research/temples/nakhon-ratchasima/",
          "label": "Nakhon Ratchasima temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "chanthaburi",
      "slug": "chanthaburi",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Chanthaburi",
      "name_th": "จันทบุรี",
      "name_en": "Chanthaburi",
      "aliases": [
        "Chanthaburi Gem Market"
      ],
      "summary": "Chanthaburi is strongest when the trip actually wants gem, jewelry market, fruit route.",
      "graph_role": "destination anchor",
      "region": "Eastern Thailand",
      "province": "Chanthaburi",
      "lat": 12.6113,
      "lon": 102.1039,
      "coordinate_confidence": "high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/chanthaburi/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Chanthaburi gem market public tourism and map sources",
          "path": "/data/sources/chanthaburi-gem-market-public-tourism-and-map-sources/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand gold, gem, and jewelry POIs",
          "path": "/data/sources/openstreetmap-thailand-gold-gem-and-jewelry-pois/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Chanthaburi works best when the trip actually wants gem, jewelry market, fruit route."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Chanthaburi sits in the graph as gem/jewelry market, fruit route, old-town food."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Chanthaburi gets weaker when gem/gold pricing and shop trust cannot be static."
        }
      ],
      "today_checks": [
        "Choose Old Town / riverfront before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat gem/gold pricing and shop trust cannot be static as a real trip breaker when conditions line up that way.",
        "Keep Pattaya visible as the first pivot if the city weakens."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "gold_buying_check"
      ],
      "related_entities": [
        "bangkok",
        "pattaya-chonburi"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/chanthaburi/",
          "label": "Chanthaburi destination guide"
        },
        {
          "path": "/accommodation/chanthaburi/",
          "label": "Where to stay in Chanthaburi"
        },
        {
          "path": "/research/cities/chanthaburi/",
          "label": "Chanthaburi city research brief"
        },
        {
          "path": "/food/chanthaburi-food-route/",
          "label": "Chanthaburi food guide"
        },
        {
          "path": "/temples/chanthaburi/",
          "label": "Chanthaburi temple route"
        },
        {
          "path": "/research/temples/chanthaburi/",
          "label": "Chanthaburi temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "khon-kaen",
      "slug": "khon-kaen",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Khon Kaen",
      "name_th": "ขอนแก่น",
      "name_en": "Khon Kaen",
      "aliases": [],
      "summary": "Khon Kaen is strongest when the trip actually wants Isan urban hub, rail, air.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand",
      "province": "Khon Kaen",
      "lat": 16.4419,
      "lon": 102.835,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "medium",
      "path": "/entities/khon-kaen/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "AQI and haze comfort",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Khon Kaen works best when the trip actually wants Isan urban hub, rail, air."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Khon Kaen sits in the graph as Isan urban hub, rail/air/business/food."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Khon Kaen gets weaker when heat/AQI and limited classic sightseeing depth."
        }
      ],
      "today_checks": [
        "Choose City/Khaen Nakhon before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat heat/AQI and limited classic sightseeing depth as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "isaan",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/khon-kaen/",
          "label": "Khon Kaen destination guide"
        },
        {
          "path": "/accommodation/khon-kaen/",
          "label": "Where to stay in Khon Kaen"
        },
        {
          "path": "/research/cities/khon-kaen/",
          "label": "Khon Kaen city research brief"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Khon Kaen food guide"
        },
        {
          "path": "/temples/khon-kaen/",
          "label": "Khon Kaen temple route"
        },
        {
          "path": "/research/temples/khon-kaen/",
          "label": "Khon Kaen temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "ubon-ratchathani",
      "slug": "ubon-ratchathani",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Ubon Ratchathani",
      "name_th": "อุบลราชธานี",
      "name_en": "Ubon Ratchathani",
      "aliases": [],
      "summary": "Ubon Ratchathani is strongest when the trip actually wants Isan culture, Candle Festival, Mekong.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand",
      "province": "Ubon Ratchathani",
      "lat": 15.2447,
      "lon": 104.8472,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/ubon-ratchathani/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "AQI and haze comfort",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Ubon Ratchathani works best when the trip actually wants Isan culture, Candle Festival, Mekong."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Ubon Ratchathani sits in the graph as Isan culture, Candle Festival, Mekong/Pha Taem route."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Ubon Ratchathani gets weaker when festival crowding, heat, cross-border road spread."
        }
      ],
      "today_checks": [
        "Choose City / Thung Si Mueang before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat festival crowding, heat, cross-border road spread as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route"
      ],
      "related_entities": [
        "isaan",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/ubon-ratchathani/",
          "label": "Ubon Ratchathani destination guide"
        },
        {
          "path": "/accommodation/ubon-ratchathani/",
          "label": "Where to stay in Ubon Ratchathani"
        },
        {
          "path": "/research/cities/ubon-ratchathani/",
          "label": "Ubon Ratchathani city research brief"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Ubon Ratchathani food guide"
        },
        {
          "path": "/temples/ubon-ratchathani/",
          "label": "Ubon Ratchathani temple route"
        },
        {
          "path": "/research/temples/ubon-ratchathani/",
          "label": "Ubon Ratchathani temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "buriram",
      "slug": "buriram",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Buriram",
      "name_th": "บุรีรัมย์",
      "name_en": "Buriram",
      "aliases": [],
      "summary": "Buriram is strongest when the trip actually wants Khmer-route + MotoGP, football event base.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand",
      "province": "Buri Ram",
      "lat": 14.993,
      "lon": 103.1029,
      "coordinate_confidence": "medium",
      "active_status": "active",
      "confidence": "medium",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "medium",
      "path": "/entities/buriram/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Buriram works best when the trip actually wants Khmer-route + MotoGP, football event base."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Buriram sits in the graph as Khmer-route + MotoGP/football event base."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Buriram gets weaker when event dates radically change hotel/crowd logic."
        }
      ],
      "today_checks": [
        "Choose Buriram city center before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat event dates radically change hotel/crowd logic as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route"
      ],
      "related_entities": [
        "isaan",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/buriram/",
          "label": "Buriram destination guide"
        },
        {
          "path": "/accommodation/buriram/",
          "label": "Where to stay in Buriram"
        },
        {
          "path": "/research/cities/buriram/",
          "label": "Buriram city research brief"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Buriram food guide"
        },
        {
          "path": "/temples/buriram/",
          "label": "Buriram temple route"
        },
        {
          "path": "/research/temples/buriram/",
          "label": "Buriram temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    },
    {
      "entity_id": "nong-khai",
      "slug": "nong-khai",
      "entity_type": "destination",
      "entity_type_label": "Destination",
      "canonical_name": "Nong Khai",
      "name_th": "หนองคาย",
      "name_en": "Nong Khai",
      "aliases": [],
      "summary": "Nong Khai is strongest when the trip actually wants Mekong, Vientiane border rail-road base.",
      "graph_role": "destination anchor",
      "region": "Northeastern Thailand, Mekong Border",
      "province": "Nong Khai",
      "lat": 17.8783,
      "lon": 102.7413,
      "coordinate_confidence": "medium-high",
      "active_status": "active",
      "confidence": "high",
      "first_seen_at": "2026-05-15",
      "last_verified_at": "2026-05-15",
      "source_confidence": "high",
      "path": "/entities/nong-khai/",
      "source_links": [
        {
          "name": "Thai Meteorological Department",
          "path": "/data/sources/thai-meteorological-department/",
          "known": true
        },
        {
          "name": "OpenStreetMap Thailand",
          "path": "/data/sources/openstreetmap-thailand/",
          "known": true
        },
        {
          "name": "TAT accommodation data",
          "path": "/data/sources/tat-accommodation-data/",
          "known": true
        },
        {
          "name": "Google Places hotels",
          "path": "/data/sources/google-places-hotels/",
          "known": true
        },
        {
          "name": "Air4Thai / Pollution Control Department",
          "path": "/data/sources/air4thai-pollution-control-department/",
          "known": true
        },
        {
          "name": "SRT timetable data",
          "path": "/data/sources/srt-timetable-data/",
          "known": true
        },
        {
          "name": "AOT air transport statistics",
          "path": "/data/sources/aot-air-transport-statistics/",
          "known": true
        },
        {
          "name": "Marine Department piers",
          "path": "/data/sources/marine-department-piers/",
          "known": true
        }
      ],
      "observation_coverage": [
        "TMD weather and heat",
        "hotel-area fit",
        "route friction",
        "AQI and haze comfort",
        "rail timing and station access",
        "airport access and late-arrival burden",
        "marine weather and ferry timing",
        "event and crowd timing"
      ],
      "signals": [
        {
          "type": "trip_fit",
          "label": "Trip fit",
          "severity": "high",
          "summary": "Nong Khai works best when the trip actually wants Mekong, Vientiane border rail-road base."
        },
        {
          "type": "route_shape",
          "label": "Route shape",
          "severity": "medium",
          "summary": "Nong Khai sits in the graph as Mekong/Vientiane border rail-road base."
        },
        {
          "type": "live_caveat",
          "label": "Live caveat",
          "severity": "medium",
          "summary": "Nong Khai gets weaker when border/rail schedules and Naga event crowds are live."
        }
      ],
      "today_checks": [
        "Choose Nong Khai transport core before comparing rooms.",
        "Check the hardest transfer before paying for the stay.",
        "Treat border/rail schedules and Naga event crowds are live as a real trip breaker when conditions line up that way."
      ],
      "decisions": [
        "where_to_go_today",
        "where_to_stay",
        "route_feasibility",
        "food_route",
        "rail_plan"
      ],
      "related_entities": [
        "isaan",
        "bangkok"
      ],
      "related_pages": [
        {
          "path": "/where-to-go/nong-khai/",
          "label": "Nong Khai destination guide"
        },
        {
          "path": "/accommodation/nong-khai/",
          "label": "Where to stay in Nong Khai"
        },
        {
          "path": "/research/cities/nong-khai/",
          "label": "Nong Khai city research brief"
        },
        {
          "path": "/food/isaan-food-guide/",
          "label": "Nong Khai food guide"
        },
        {
          "path": "/temples/nong-khai/",
          "label": "Nong Khai temple route"
        },
        {
          "path": "/research/temples/nong-khai/",
          "label": "Nong Khai temple research"
        }
      ],
      "note": "Derived from the 2026-05-15 city research package so destination entities keep pace with the promoted city layer."
    }
  ]
}