[
  {
    "city": "Bangkok",
    "thai_name": "กรุงเทพมหานคร",
    "province": "Bangkok",
    "recommended_slug": "bangkok",
    "page_status": "first-class destination",
    "merge_recommendation": "Do not merge; use metro provinces as related nodes",
    "summary": "Bangkok is modeled as: arrival hub, stay-area choice, food, gold/shopping, rail/air pivot. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "arrival hub",
      "stay-area choice",
      "food",
      "gold",
      "shopping"
    ],
    "avoid_if": [
      "AQI, heat, rain flooding, event crowding are live signals"
    ],
    "best_months": "November–February",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat; May–October rain if transit-flexible"
      ],
      "high_risk": [
        "bad-air episodes; heavy rain/flood advisories; major festival/event dates"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Sukhumvit / Asok–Phrom Phong",
        "best_for": "rail access, hotel depth",
        "watch_outs": "traffic and generic mall-hotel feel",
        "transport_logic": "BTS/MRT",
        "walkability_or_spread": "linear/compact rail corridor",
        "weather_noise_flood_or_air_caveat": "rain/AQI"
      },
      {
        "name": "Silom / Sathorn",
        "best_for": "business, river access, BTS/MRT",
        "watch_outs": "office traffic",
        "transport_logic": "BTS/MRT/river",
        "walkability_or_spread": "compact corridors",
        "weather_noise_flood_or_air_caveat": "rain/AQI"
      },
      {
        "name": "Riverside / Old City",
        "best_for": "heritage, temples, river hotels",
        "watch_outs": "weaker late-night rail",
        "transport_logic": "boat/road/MRT mix",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "river/rain sensitivity"
      }
    ],
    "nearby_alternatives": [
      "Nonthaburi",
      "Samut Prakan",
      "Ayutthaya",
      "Kanchanaburi",
      "Pattaya"
    ],
    "route_roles": [
      "primary air gateway",
      "rail hub",
      "bus/van hub",
      "gold-buying live-price node"
    ],
    "food_angle": "High-confidence food-route city; build neighborhood route widgets rather than attraction copy.",
    "culture_angle": "Old-city, river, museum and temple routes; event calendar should be live.",
    "shopping_gold_gem_angle": "Gold-buying check should be live-price/shop-trust using Gold Traders Association pricing and static Yaowarat context.",
    "arrival_modes": [
      "Suvarnabhumi Airport",
      "Don Mueang Airport",
      "SRT rail",
      "intercity bus/van",
      "river boat"
    ],
    "should_be_static": [
      "base-area logic",
      "route role",
      "seasonal risk bands",
      "gold-price source identity"
    ],
    "should_not_be_static": [
      "AQI",
      "daily rain",
      "event crowding",
      "gold price",
      "train/bus schedules"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Krung Thep",
        "Bangkok Metropolis",
        "BKK"
      ],
      "approx_lat": "13.7563",
      "approx_lon": "100.5018",
      "related_entities_to_create": [
        "Suvarnabhumi Airport",
        "Don Mueang Airport",
        "Yaowarat",
        "Rattanakosin",
        "Sukhumvit",
        "Silom"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "bangkok-stay-guide",
        "bangkok-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Bangkok",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Bangkok/219",
        "why_it_matters": "official destination identity",
        "supports": "static copy"
      },
      {
        "name": "Visit Bangkok",
        "type": "official",
        "url": "https://visit.bangkok.go.th/",
        "why_it_matters": "city tourism/event surface",
        "supports": "future signal"
      },
      {
        "name": "Suvarnabhumi Airport",
        "type": "official",
        "url": "https://suvarnabhumi.airportthai.co.th/",
        "why_it_matters": "airport route evidence",
        "supports": "route-check"
      }
    ]
  },
  {
    "city": "Ayutthaya",
    "thai_name": "พระนครศรีอยุธยา",
    "province": "Phra Nakhon Si Ayutthaya",
    "recommended_slug": "ayutthaya",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Ayutthaya is modeled as: heritage day-trip / 1-night river base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "heritage day-trip",
      "1-night river base"
    ],
    "avoid_if": [
      "heat exposure, lowland rain/flood, bike comfort"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "heat exposure, lowland rain/flood, bike comfort"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Historical island",
        "best_for": "ruins, cycling, first-timers",
        "watch_outs": "heat exposure",
        "transport_logic": "bike/tuk-tuk",
        "walkability_or_spread": "compact island, sites spread",
        "weather_noise_flood_or_air_caveat": "heat/rain/flood"
      },
      {
        "name": "Railway station / east bank",
        "best_for": "rail day trips",
        "watch_outs": "less atmosphere",
        "transport_logic": "rail + ferry/tuk-tuk",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rain"
      },
      {
        "name": "Riverside",
        "best_for": "slower overnight stays",
        "watch_outs": "flood sensitivity",
        "transport_logic": "road/boat",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "river levels"
      }
    ],
    "nearby_alternatives": [
      "Bangkok",
      "Lopburi",
      "Kanchanaburi",
      "Sukhothai"
    ],
    "route_roles": [
      "heritage day-trip / 1-night river base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "rail",
      "road",
      "bus/van",
      "river/boat tours"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Phra Nakhon Si Ayutthaya"
      ],
      "approx_lat": "14.3532",
      "approx_lon": "100.5689",
      "related_entities_to_create": [
        "Ayutthaya Historical Park",
        "Ayutthaya Railway Station",
        "Bang Pa-in"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "ayutthaya-stay-guide",
        "ayutthaya-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Phra Nakhon Si Ayutthaya",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Phra-Nakhon-Si-Ayutthaya/229",
        "why_it_matters": "official city identity",
        "supports": "static copy"
      },
      {
        "name": "UNESCO Historic City of Ayutthaya",
        "type": "public",
        "url": "https://whc.unesco.org/en/list/576/",
        "why_it_matters": "World Heritage basis",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Buriram",
    "thai_name": "บุรีรัมย์",
    "province": "Buri Ram",
    "recommended_slug": "buriram",
    "page_status": "first-class destination, event-aware",
    "merge_recommendation": "No merge",
    "summary": "Buriram is modeled as: Khmer-route + MotoGP/football event base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Khmer-route + MotoGP",
      "football event base"
    ],
    "avoid_if": [
      "event dates radically change hotel/crowd logic"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "event dates radically change hotel/crowd logic"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Buriram city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Khmer-route + MotoGP/football event base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Buri Ram",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Buri-Ram/572",
        "why_it_matters": "official heritage/sport identity",
        "supports": "static copy"
      },
      {
        "name": "MotoGP Thailand",
        "type": "public",
        "url": "https://www.motogpthailand.com/",
        "why_it_matters": "event pressure source",
        "supports": "future signal"
      }
    ]
  },
  {
    "city": "Chanthaburi",
    "thai_name": "จันทบุรี",
    "province": "Chanthaburi",
    "recommended_slug": "chanthaburi",
    "page_status": "specialized vertical node + first-class candidate",
    "merge_recommendation": "No merge",
    "summary": "Chanthaburi is modeled as: gem/jewelry market, fruit route, old-town food. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "gem",
      "jewelry market",
      "fruit route",
      "old-town food"
    ],
    "avoid_if": [
      "gem/gold pricing and shop trust cannot be static"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "gem/gold pricing and shop trust cannot be static"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Old Town / riverfront",
        "best_for": "food, culture, walking",
        "watch_outs": "rain/flood caveat",
        "transport_logic": "walk/road",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "river/rain"
      },
      {
        "name": "Gem Market / Si Chan Road",
        "best_for": "gem/jewelry vertical",
        "watch_outs": "needs buyer due diligence",
        "transport_logic": "walk/road",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rain"
      },
      {
        "name": "Chao Lao / Laem Sing coast",
        "best_for": "beach add-on",
        "watch_outs": "away from city/gems",
        "transport_logic": "road",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "coastal rain"
      }
    ],
    "nearby_alternatives": [
      "Pattaya",
      "Chonburi",
      "Trat",
      "Rayong"
    ],
    "route_roles": [
      "gem/jewelry market, fruit route, old-town food"
    ],
    "food_angle": "High; fruit and old-town food justify vertical treatment.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "Very high for gems/jewelry; static page should link to live buying checklist and official associations.",
    "arrival_modes": [
      "road",
      "bus/van",
      "nearby Trat/U-Tapao alternatives"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Chanthaburi Gem Market"
      ],
      "approx_lat": "12.6113",
      "approx_lon": "102.1039",
      "related_entities_to_create": [
        "Chanthaburi Gem Market",
        "Old Chanthaboon Waterfront",
        "Chao Lao",
        "Laem Sing",
        "fruit orchards"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "chanthaburi-stay-guide",
        "chanthaburi-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Chanthaburi",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Chanthaburi/463",
        "why_it_matters": "official old-town/fruit/gem context",
        "supports": "static copy"
      },
      {
        "name": "TAT Gems Market",
        "type": "official",
        "url": "https://www.tourismthailand.org/Attraction/gems-market",
        "why_it_matters": "gem market evidence",
        "supports": "gold-buying-check"
      },
      {
        "name": "Chanthaburi Gems and Jewelry Traders Association",
        "type": "public",
        "url": "https://www.cga.or.th/",
        "why_it_matters": "market/association source",
        "supports": "future observation"
      }
    ]
  },
  {
    "city": "Cha-am",
    "thai_name": "ชะอำ",
    "province": "Phetchaburi",
    "recommended_slug": "hua-hin-cha-am / cha-am entity",
    "page_status": "merged with another page",
    "merge_recommendation": "Merge with Hua Hin; shared Bangkok beach-drive market; Cha-am is quieter northern sub-base",
    "summary": "Cha-am is modeled as: budget/family beach fallback from Hua Hin. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "budget",
      "family beach fallback from Hua Hin"
    ],
    "avoid_if": [
      "weekend crowd, weaker food/stay depth than Hua Hin"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "weekend crowd, weaker food/stay depth than Hua Hin"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Cha-am city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "budget/family beach fallback from Hua Hin"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Cha-am",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Cha-am/241",
        "why_it_matters": "merged sub-base evidence",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Chiang Mai",
    "thai_name": "เชียงใหม่",
    "province": "Chiang Mai",
    "recommended_slug": "chiang-mai",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Chiang Mai is modeled as: northern city base, culture, food, mountain pivots. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "northern city base",
      "culture",
      "food",
      "mountain pivots"
    ],
    "avoid_if": [
      "smoke season/AQI cannot be static beyond risk framing"
    ],
    "best_months": "November–February",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "June–October green/rain season; May shoulder heat/rain"
      ],
      "high_risk": [
        "March–April smoke/heat; heavy-rain mountain-road advisories"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Old City",
        "best_for": "temples, walking, first-timers",
        "watch_outs": "traffic moat, tourist density",
        "transport_logic": "walk/songthaew/tuk-tuk",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "AQI and heat"
      },
      {
        "name": "Nimman / MAYA",
        "best_for": "cafes, workation, airport access",
        "watch_outs": "less historic",
        "transport_logic": "road/ride-hail",
        "walkability_or_spread": "compact district",
        "weather_noise_flood_or_air_caveat": "AQI"
      },
      {
        "name": "Riverside / Night Bazaar",
        "best_for": "markets, families, easier evening routes",
        "watch_outs": "less quiet",
        "transport_logic": "road and walking pockets",
        "walkability_or_spread": "semi-spread",
        "weather_noise_flood_or_air_caveat": "river rain caveat"
      }
    ],
    "nearby_alternatives": [
      "Chiang Rai",
      "Pai",
      "Nan",
      "Mae Hong Son",
      "Sukhothai"
    ],
    "route_roles": [
      "northern air hub",
      "mountain route base",
      "food-route node"
    ],
    "food_angle": "High; needs neighborhood food-route widgets rather than generic dishes.",
    "culture_angle": "Lanna city, temples, festivals, craft districts.",
    "shopping_gold_gem_angle": "Gold-buying check can exist as city-level live-price/shop-directory support; lower priority than Bangkok.",
    "arrival_modes": [
      "Chiang Mai International Airport",
      "SRT northern rail",
      "intercity bus",
      "road from Bangkok/Chiang Rai/Pai"
    ],
    "should_be_static": [
      "base areas",
      "smoke-season warning band",
      "route roles",
      "nearby pivots"
    ],
    "should_not_be_static": [
      "AQI",
      "burning severity",
      "festival dates",
      "flight/rail schedules"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "CNX"
      ],
      "approx_lat": "18.7883",
      "approx_lon": "98.9853",
      "related_entities_to_create": [
        "Old City Chiang Mai",
        "Nimman",
        "Doi Suthep",
        "Chiang Mai Airport"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "chiang-mai-stay-guide",
        "chiang-mai-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Chiang Mai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Chiang-Mai/101",
        "why_it_matters": "official destination identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Chiang Rai",
    "thai_name": "เชียงราย",
    "province": "Chiang Rai",
    "recommended_slug": "chiang-rai",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Chiang Rai is modeled as: northern border/culture/mountain route base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "northern border",
      "culture",
      "mountain route base"
    ],
    "avoid_if": [
      "smoke season and car-route dependence"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "smoke season and car-route dependence"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Chiang Rai city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "northern border/culture/mountain route base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Chiang Rai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Chiang-Rai/102",
        "why_it_matters": "official border/mountain identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Chonburi",
    "thai_name": "ชลบุรี",
    "province": "Chonburi",
    "recommended_slug": "chonburi",
    "page_status": "support node only / east-coast route node",
    "merge_recommendation": "Split from Pattaya; Chonburi province is broader route/seafood/industrial coast",
    "summary": "Chonburi is modeled as: Bangkok–Pattaya–Rayong route context, Si Racha/Ko Sichang support. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Bangkok–Pattaya–Rayong route context",
      "Si Racha",
      "Ko Sichang support"
    ],
    "avoid_if": [
      "too broad for one traveler page"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "too broad for one traveler page"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Chonburi core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Bangkok–Pattaya–Rayong route context, Si Racha/Ko Sichang support"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Chon Buri",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Chon-Buri/464",
        "why_it_matters": "province support identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Hat Yai",
    "thai_name": "หาดใหญ่",
    "province": "Songkhla",
    "recommended_slug": "hat-yai",
    "page_status": "first-class destination",
    "merge_recommendation": "Keep Songkhla Old Town as related support node",
    "summary": "Hat Yai is modeled as: south rail/air/border hub, food, shopping. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "south rail",
      "air",
      "border hub",
      "food",
      "shopping"
    ],
    "avoid_if": [
      "flood/rain and event/border-route conditions are live"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "flood/rain and event/border-route conditions are live"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Downtown / Kim Yong / Santisuk",
        "best_for": "food and shopping",
        "watch_outs": "crowded/noisy",
        "transport_logic": "walk/road/rail nearby",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rain/flood"
      },
      {
        "name": "Central Festival / airport road",
        "best_for": "business, malls, airport access",
        "watch_outs": "less local food texture",
        "transport_logic": "road",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "rain traffic"
      },
      {
        "name": "Railway station area",
        "best_for": "rail route",
        "watch_outs": "transport-first",
        "transport_logic": "SRT rail",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "schedule/rain"
      }
    ],
    "nearby_alternatives": [
      "Songkhla",
      "Trang",
      "Nakhon Si Thammarat",
      "Malaysia border"
    ],
    "route_roles": [
      "south rail/air/border hub, food, shopping"
    ],
    "food_angle": "High; dedicated food-route page justified.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "Gold-buying check possible as live-price/shop-directory support; shopping is primary static angle.",
    "arrival_modes": [
      "Hat Yai Airport",
      "SRT rail",
      "bus/road",
      "Malaysia border route"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "HDY"
      ],
      "approx_lat": "7.0084",
      "approx_lon": "100.4747",
      "related_entities_to_create": [
        "Kim Yong Market",
        "Santisuk Market",
        "Hat Yai Junction",
        "Songkhla Old Town",
        "Sadao border route"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "hat-yai-stay-guide",
        "hat-yai-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Hat Yai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Hat-Yai/362",
        "why_it_matters": "official food/shopping/gateway identity",
        "supports": "static copy"
      },
      {
        "name": "TAT Kim Yong Market",
        "type": "official",
        "url": "https://www.tourismthailand.org/Attraction/kim-yong-market",
        "why_it_matters": "market/food-shopping evidence",
        "supports": "food-route"
      }
    ]
  },
  {
    "city": "Hua Hin",
    "thai_name": "หัวหิน",
    "province": "Prachuap Khiri Khan",
    "recommended_slug": "hua-hin-cha-am",
    "page_status": "merged destination",
    "merge_recommendation": "Merge with Cha-am; keep distinct base areas inside same page",
    "summary": "Hua Hin is modeled as: Bangkok beach/rail weekend base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Bangkok beach",
      "rail weekend base"
    ],
    "avoid_if": [
      "weekend crowd, rain/road congestion"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "weekend crowd, rain/road congestion"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Hua Hin town / night market",
        "best_for": "food, rail, short stays",
        "watch_outs": "busy weekends",
        "transport_logic": "rail/road/walk pockets",
        "walkability_or_spread": "compact center",
        "weather_noise_flood_or_air_caveat": "rain/crowd"
      },
      {
        "name": "Khao Takiab",
        "best_for": "quieter beach",
        "watch_outs": "farther from town",
        "transport_logic": "road/baht bus",
        "walkability_or_spread": "linear",
        "weather_noise_flood_or_air_caveat": "rain road delays"
      },
      {
        "name": "Cha-am beachfront",
        "best_for": "budget/family beach",
        "watch_outs": "weaker Hua Hin town depth",
        "transport_logic": "road/rail nearby",
        "walkability_or_spread": "linear",
        "weather_noise_flood_or_air_caveat": "weekend crowd"
      }
    ],
    "nearby_alternatives": [
      "Cha-am",
      "Pranburi",
      "Bangkok",
      "Prachuap Khiri Khan"
    ],
    "route_roles": [
      "Bangkok beach/rail weekend base"
    ],
    "food_angle": "Useful seafood/night-market angle, secondary to base selection.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road from Bangkok",
      "rail",
      "Hua Hin Airport route-dependent"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Hua Hin–Cha-am"
      ],
      "approx_lat": "12.5684",
      "approx_lon": "99.9577",
      "related_entities_to_create": [
        "Cha-am",
        "Khao Takiab",
        "Pranburi",
        "Hua Hin Railway Station"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "hua-hin-cha-am-stay-guide",
        "hua-hin-cha-am-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Hua Hin",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Hua-Hin/240",
        "why_it_matters": "anchor destination identity",
        "supports": "static copy"
      },
      {
        "name": "Thailand.go.th Hua Hin Jazz City Event 2026",
        "type": "official",
        "url": "https://www.thailand.go.th/public/event-detail/hua-hin-jazz-city-event-2026",
        "why_it_matters": "event crowd-pressure source",
        "supports": "future signal"
      }
    ]
  },
  {
    "city": "Kanchanaburi",
    "thai_name": "กาญจนบุรี",
    "province": "Kanchanaburi",
    "recommended_slug": "kanchanaburi",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Kanchanaburi is modeled as: river/rail/history/nature base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "river",
      "rail",
      "history",
      "nature base"
    ],
    "avoid_if": [
      "town, Sai Yok, Erawan distance makes base choice material"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "town, Sai Yok, Erawan distance makes base choice material"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Town / River Kwai Bridge",
        "best_for": "rail/history/food",
        "watch_outs": "not deep nature",
        "transport_logic": "rail/road",
        "walkability_or_spread": "semi-compact",
        "weather_noise_flood_or_air_caveat": "heat"
      },
      {
        "name": "Riverfront resorts",
        "best_for": "slow stays and families",
        "watch_outs": "needs transfers",
        "transport_logic": "road",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "river/rain"
      },
      {
        "name": "Sai Yok / Nam Tok",
        "best_for": "nature and rail extension",
        "watch_outs": "far from town",
        "transport_logic": "rail/road",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "rain-road risk"
      }
    ],
    "nearby_alternatives": [
      "Ayutthaya",
      "Bangkok",
      "Hua Hin",
      "Nakhon Pathom"
    ],
    "route_roles": [
      "river/rail/history/nature base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "rail",
      "road",
      "bus/van"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Kanchanaburi Town"
      ],
      "approx_lat": "14.0228",
      "approx_lon": "99.5328",
      "related_entities_to_create": [
        "River Kwai Bridge",
        "Nam Tok",
        "Sai Yok",
        "Erawan",
        "Hellfire Pass"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "kanchanaburi-stay-guide",
        "kanchanaburi-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Kanchanaburi",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Kanchanaburi/222",
        "why_it_matters": "road/rail/accessibility and province identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Khon Kaen",
    "thai_name": "ขอนแก่น",
    "province": "Khon Kaen",
    "recommended_slug": "khon-kaen",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Khon Kaen is modeled as: Isan urban hub, rail/air/business/food. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Isan urban hub",
      "rail",
      "air",
      "business",
      "food"
    ],
    "avoid_if": [
      "heat/AQI and limited classic sightseeing depth"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "heat/AQI and limited classic sightseeing depth"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Khon Kaen city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Isan urban hub, rail/air/business/food"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Khon Kaen",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Khon-Kaen/575",
        "why_it_matters": "official hub/commercial identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Krabi",
    "thai_name": "กระบี่",
    "province": "Krabi",
    "recommended_slug": "krabi",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Krabi is modeled as: Andaman beach/island/ferry base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Andaman beach",
      "island",
      "ferry base"
    ],
    "avoid_if": [
      "monsoon marine fragility; Railay is boat-dependent"
    ],
    "best_months": "December–March",
    "season_windows": {
      "best": [
        "December–March"
      ],
      "acceptable_with_caveats": [
        "November and April shoulder; May–October flexible travel"
      ],
      "high_risk": [
        "rough sea advisories; heavy rain; boat-only base during monsoon"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Ao Nang",
        "best_for": "default hotels, tours, piers",
        "watch_outs": "tour density",
        "transport_logic": "road and boat hub",
        "walkability_or_spread": "linear/spread",
        "weather_noise_flood_or_air_caveat": "marine weather"
      },
      {
        "name": "Railay",
        "best_for": "limestone, climbing, scenery",
        "watch_outs": "boat-only access",
        "transport_logic": "boat-dependent",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rough sea can weaken base"
      },
      {
        "name": "Krabi Town",
        "best_for": "food, buses, cheaper stays",
        "watch_outs": "not beach-first",
        "transport_logic": "road to beaches/piers",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rain less disruptive than boat bases"
      }
    ],
    "nearby_alternatives": [
      "Phuket",
      "Trang",
      "Surat Thani",
      "Phang Nga"
    ],
    "route_roles": [
      "Andaman airport",
      "ferry node",
      "island route base"
    ],
    "food_angle": "Useful but secondary to ferry/base widgets.",
    "culture_angle": "Limestone landscape and local markets; avoid generic attraction listing.",
    "shopping_gold_gem_angle": "No primary static vertical.",
    "arrival_modes": [
      "Krabi Airport",
      "road",
      "ferry/speedboat"
    ],
    "should_be_static": [
      "base-area hierarchy",
      "monsoon caveat",
      "ferry-dependence warning"
    ],
    "should_not_be_static": [
      "sea state",
      "boat schedule",
      "pier closures",
      "daily rain"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "KBV"
      ],
      "approx_lat": "8.0863",
      "approx_lon": "98.9063",
      "related_entities_to_create": [
        "Ao Nang",
        "Railay",
        "Krabi Town",
        "Klong Muang",
        "Phi Phi route",
        "Krabi Airport"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "krabi-stay-guide",
        "krabi-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Krabi",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Krabi/344",
        "why_it_matters": "official destination identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Lopburi",
    "thai_name": "ลพบุรี",
    "province": "Lopburi",
    "recommended_slug": "lopburi",
    "page_status": "route anchor / support node",
    "merge_recommendation": "No merge; link with Ayutthaya/Sukhothai/Khorat routes",
    "summary": "Lopburi is modeled as: history stop, rail route, seasonal sunflower side-trip. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "history stop",
      "rail route",
      "seasonal sunflower side-trip"
    ],
    "avoid_if": [
      "not enough broad hotel-area depth for first-class page"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "not enough broad hotel-area depth for first-class page"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Lopburi core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "history stop, rail route, seasonal sunflower side-trip"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Lop Buri",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Lop-Buri/223",
        "why_it_matters": "official heritage/seasonal identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Mae Hong Son",
    "thai_name": "แม่ฮ่องสอน",
    "province": "Mae Hong Son",
    "recommended_slug": "mae-hong-son",
    "page_status": "first-class route-heavy destination",
    "merge_recommendation": "No merge; Pai remains separate because traveler behavior differs",
    "summary": "Mae Hong Son is modeled as: road-loop, mountain culture, slow travel. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "road-loop",
      "mountain culture",
      "slow travel"
    ],
    "avoid_if": [
      "winding road, smoke, rain/landslide risk"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "winding road, smoke, rain/landslide risk"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Mae Hong Son transport core",
        "best_for": "route stop and transfer resilience",
        "watch_outs": "limited hotel-area depth",
        "transport_logic": "rail/road/bus or airport depending city",
        "walkability_or_spread": "compact core plus spread route targets",
        "weather_noise_flood_or_air_caveat": "heat/rain/schedule conditions can weaken route value"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "road-loop, mountain culture, slow travel"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Mae Hong Son",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Mae-Hong-Son/106",
        "why_it_matters": "official road/carsickness and Pai-loop context",
        "supports": "route-check"
      }
    ]
  },
  {
    "city": "Nan",
    "thai_name": "น่าน",
    "province": "Nan",
    "recommended_slug": "nan",
    "page_status": "first-class destination candidate",
    "merge_recommendation": "No merge",
    "summary": "Nan is modeled as: quiet northern culture/nature base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "quiet northern culture",
      "nature base"
    ],
    "avoid_if": [
      "smoke season and low public live-signal density"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "smoke season and low public live-signal density"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nan city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "quiet northern culture/nature base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nan",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nan/108",
        "why_it_matters": "official destination identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Nakhon Phanom",
    "thai_name": "นครพนม",
    "province": "Nakhon Phanom",
    "recommended_slug": "nakhon-phanom",
    "page_status": "first-class Mekong-route candidate",
    "merge_recommendation": "No merge",
    "summary": "Nakhon Phanom is modeled as: Mekong river base, Laos-view route, slow urban stay. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Mekong river base",
      "Laos-view route",
      "slow urban stay"
    ],
    "avoid_if": [
      "weaker hotel-area complexity; event/live sources needed"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "weaker hotel-area complexity; event/live sources needed"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nakhon Phanom transport core",
        "best_for": "route stop and transfer resilience",
        "watch_outs": "limited hotel-area depth",
        "transport_logic": "rail/road/bus or airport depending city",
        "walkability_or_spread": "compact core plus spread route targets",
        "weather_noise_flood_or_air_caveat": "heat/rain/schedule conditions can weaken route value"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Mekong river base, Laos-view route, slow urban stay"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nakhon Phanom",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nakhon-Phanom/579",
        "why_it_matters": "official Mekong identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Nakhon Ratchasima",
    "thai_name": "นครราชสีมา",
    "province": "Nakhon Ratchasima",
    "recommended_slug": "nakhon-ratchasima",
    "page_status": "first-class destination / route hub",
    "merge_recommendation": "No merge; keep Khao Yai/Pak Chong as sub-base or related entity",
    "summary": "Nakhon Ratchasima is modeled as: Isan gateway, Khao Yai/Phimai pivots, rail/road hub. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Isan gateway",
      "Khao Yai",
      "Phimai pivots",
      "rail",
      "road hub"
    ],
    "avoid_if": [
      "city vs Khao Yai expectations must be separated"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "city vs Khao Yai expectations must be separated"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nakhon Ratchasima transport core",
        "best_for": "route stop and transfer resilience",
        "watch_outs": "limited hotel-area depth",
        "transport_logic": "rail/road/bus or airport depending city",
        "walkability_or_spread": "compact core plus spread route targets",
        "weather_noise_flood_or_air_caveat": "heat/rain/schedule conditions can weaken route value"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Isan gateway, Khao Yai/Phimai pivots, rail/road hub"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nakhon Ratchasima",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nakhon-Ratchasima/580",
        "why_it_matters": "official gateway/Khao Yai/Phimai positioning",
        "supports": "static copy"
      },
      {
        "name": "Fine Arts Department Phimai Historical Park",
        "type": "official",
        "url": "https://virtualhistoricalpark.finearts.go.th/phimai/index.php/en/",
        "why_it_matters": "heritage route source",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Nakhon Si Thammarat",
    "thai_name": "นครศรีธรรมราช",
    "province": "Nakhon Si Thammarat",
    "recommended_slug": "nakhon-si-thammarat",
    "page_status": "first-class culture/food candidate",
    "merge_recommendation": "No merge",
    "summary": "Nakhon Si Thammarat is modeled as: southern temple/culture/food route. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "southern temple",
      "culture",
      "food route"
    ],
    "avoid_if": [
      "Gulf monsoon/flood timing needs live checks"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "Gulf monsoon/flood timing needs live checks"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nakhon Si Thammarat city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "southern temple/culture/food route"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nakhon Si Thammarat",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nakhon-Si-Thammarat/345",
        "why_it_matters": "official culture/food candidate identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Nong Khai",
    "thai_name": "หนองคาย",
    "province": "Nong Khai",
    "recommended_slug": "nong-khai",
    "page_status": "first-class route anchor",
    "merge_recommendation": "No merge",
    "summary": "Nong Khai is modeled as: Mekong/Vientiane border rail-road base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Mekong",
      "Vientiane border rail-road base"
    ],
    "avoid_if": [
      "border/rail schedules and Naga event crowds are live"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "border/rail schedules and Naga event crowds are live"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nong Khai transport core",
        "best_for": "route stop and transfer resilience",
        "watch_outs": "limited hotel-area depth",
        "transport_logic": "rail/road/bus or airport depending city",
        "walkability_or_spread": "compact core plus spread route targets",
        "weather_noise_flood_or_air_caveat": "heat/rain/schedule conditions can weaken route value"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Mekong/Vientiane border rail-road base"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nong Khai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nong-Khai/582",
        "why_it_matters": "official border/Mekong/Naga identity",
        "supports": "static copy"
      },
      {
        "name": "Thailand.go.th Naga Fireball event",
        "type": "official",
        "url": "https://www.thailand.go.th/public/event-detail/naga-fireball-miracle-of-faith",
        "why_it_matters": "event/crowd signal candidate",
        "supports": "future signal"
      }
    ]
  },
  {
    "city": "Nonthaburi",
    "thai_name": "นนทบุรี",
    "province": "Nonthaburi",
    "recommended_slug": "nonthaburi",
    "page_status": "support node only",
    "merge_recommendation": "Keep under Bangkok metro",
    "summary": "Nonthaburi is modeled as: Ko Kret / river day-trip / Bangkok-adjacent stay. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Ko Kret",
      "river day-trip",
      "Bangkok-adjacent stay"
    ],
    "avoid_if": [
      "indistinct from Bangkok for most travelers"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "indistinct from Bangkok for most travelers"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Nonthaburi core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Ko Kret / river day-trip / Bangkok-adjacent stay"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Nonthaburi",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Nonthaburi/226",
        "why_it_matters": "Bangkok-adjacent/river identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Pai",
    "thai_name": "ปาย",
    "province": "Mae Hong Son",
    "recommended_slug": "pai",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge with Mae Hong Son; road and stay logic differ",
    "summary": "Pai is modeled as: mountain small-town base, road-loop stop. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "mountain small-town base",
      "road-loop stop"
    ],
    "avoid_if": [
      "route 1095 sickness/friction, winter crowds, smoke"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "route 1095 sickness/friction, winter crowds, smoke"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Pai city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "mountain small-town base, road-loop stop"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Pai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Attraction/pai",
        "why_it_matters": "official Pai identity",
        "supports": "static copy"
      },
      {
        "name": "TAT Mae Hong Son",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Mae-Hong-Son/106",
        "why_it_matters": "road/carsickness and loop context",
        "supports": "route-check"
      }
    ]
  },
  {
    "city": "Pattaya",
    "thai_name": "พัทยา",
    "province": "Chonburi",
    "recommended_slug": "pattaya",
    "page_status": "first-class destination",
    "merge_recommendation": "Split from Chonburi",
    "summary": "Pattaya is modeled as: beach/nightlife/family inventory, Ko Lan, events. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "beach",
      "nightlife",
      "family inventory",
      "Ko Lan",
      "events"
    ],
    "avoid_if": [
      "crowd/event pressure, rain drainage, beach-water/marine checks"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "crowd/event pressure, rain drainage, beach-water/marine checks"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Central Pattaya",
        "best_for": "nightlife, events, beach access",
        "watch_outs": "noise/crowds",
        "transport_logic": "walk/baht bus",
        "walkability_or_spread": "compact strip",
        "weather_noise_flood_or_air_caveat": "rain/event congestion"
      },
      {
        "name": "Jomtien",
        "best_for": "families, longer stays, quieter beach",
        "watch_outs": "farther from nightlife",
        "transport_logic": "baht bus/road",
        "walkability_or_spread": "linear",
        "weather_noise_flood_or_air_caveat": "rain/sea"
      },
      {
        "name": "Naklua / Wongamat",
        "best_for": "quieter upscale stays",
        "watch_outs": "less central",
        "transport_logic": "road/baht bus",
        "walkability_or_spread": "semi-spread",
        "weather_noise_flood_or_air_caveat": "event/road delays"
      }
    ],
    "nearby_alternatives": [
      "Chonburi",
      "Bangkok",
      "Rayong",
      "Hua Hin"
    ],
    "route_roles": [
      "beach/nightlife/family inventory, Ko Lan, events"
    ],
    "food_angle": "Secondary seafood/market route; stronger as stay and crowd-decision page.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "Gold-buying check possible as live price/shop-directory support; not primary.",
    "arrival_modes": [
      "road from Bangkok",
      "U-Tapao Airport",
      "bus/van",
      "Ko Lan ferry"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Pattaya City"
      ],
      "approx_lat": "12.9236",
      "approx_lon": "100.8825",
      "related_entities_to_create": [
        "Central Pattaya",
        "Jomtien",
        "Naklua",
        "Ko Lan",
        "U-Tapao Airport"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "pattaya-stay-guide",
        "pattaya-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Pattaya",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Pattaya/469",
        "why_it_matters": "separate official destination identity",
        "supports": "static copy"
      },
      {
        "name": "TAT Pattaya International Fireworks Festival 2025",
        "type": "official",
        "url": "https://www.tourismthailand.org/Events-and-Festivals/pattaya-international-fireworks-festival-2025",
        "why_it_matters": "event pressure source",
        "supports": "future signal"
      }
    ]
  },
  {
    "city": "Pathum Thani",
    "thai_name": "ปทุมธานี",
    "province": "Pathum Thani",
    "recommended_slug": "pathum-thani",
    "page_status": "support node only",
    "merge_recommendation": "Keep under Bangkok metro / route-support",
    "summary": "Pathum Thani is modeled as: north Bangkok route, museums, markets, university/industrial context. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "north Bangkok route",
      "museums",
      "markets",
      "university",
      "industrial context"
    ],
    "avoid_if": [
      "weak standalone traveler decision value"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "weak standalone traveler decision value"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Pathum Thani core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "north Bangkok route, museums, markets, university/industrial context"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Pathum Thani",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Pathum-Thani/227",
        "why_it_matters": "Bangkok north support/market/museum identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Phuket",
    "thai_name": "ภูเก็ต",
    "province": "Phuket",
    "recommended_slug": "phuket",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Phuket is modeled as: island base, beaches, food, ferries, airport. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "island base",
      "beaches",
      "food",
      "ferries",
      "airport"
    ],
    "avoid_if": [
      "monsoon surf/boat risk and island traffic cannot be static"
    ],
    "best_months": "December–March",
    "season_windows": {
      "best": [
        "December–March"
      ],
      "acceptable_with_caveats": [
        "November and April shoulder; May–October if flexible/non-boat"
      ],
      "high_risk": [
        "southwest monsoon rough sea/red-flag periods; heavy-rain advisories"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Old Town",
        "best_for": "food, culture, markets",
        "watch_outs": "not a beach base",
        "transport_logic": "road to beaches/piers",
        "walkability_or_spread": "compact core",
        "weather_noise_flood_or_air_caveat": "rain traffic"
      },
      {
        "name": "Patong",
        "best_for": "nightlife and hotel inventory",
        "watch_outs": "noise/crowds",
        "transport_logic": "road-heavy",
        "walkability_or_spread": "compact beach strip",
        "weather_noise_flood_or_air_caveat": "surf/rain/crowd"
      },
      {
        "name": "Kata / Karon",
        "best_for": "beach families, lower chaos",
        "watch_outs": "still road-dependent",
        "transport_logic": "road to airport/Old Town",
        "walkability_or_spread": "linear",
        "weather_noise_flood_or_air_caveat": "monsoon surf"
      }
    ],
    "nearby_alternatives": [
      "Krabi",
      "Khao Lak",
      "Phang Nga",
      "Trang"
    ],
    "route_roles": [
      "international airport",
      "Andaman ferry node",
      "food-route node"
    ],
    "food_angle": "Very high; build Phuket food-route and Old Town dining widgets.",
    "culture_angle": "Old Town, Sino-Portuguese context, shrines, festivals.",
    "shopping_gold_gem_angle": "Gold-buying check viable as live-price/shop-directory support; not a primary static claim.",
    "arrival_modes": [
      "Phuket International Airport",
      "road bridge",
      "ferry/speedboat"
    ],
    "should_be_static": [
      "base-area distinctions",
      "monsoon risk band",
      "food identity",
      "airport/road role"
    ],
    "should_not_be_static": [
      "ferry schedules",
      "sea state",
      "red flags",
      "room prices",
      "AQI"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "HKT"
      ],
      "approx_lat": "7.8804",
      "approx_lon": "98.3923",
      "related_entities_to_create": [
        "Phuket Old Town",
        "Patong",
        "Kata",
        "Karon",
        "Rawai",
        "Chalong Pier",
        "Phuket Airport"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "phuket-stay-guide",
        "phuket-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Phuket",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Phuket/350",
        "why_it_matters": "official destination identity",
        "supports": "static copy"
      },
      {
        "name": "UNESCO Creative Cities Phuket",
        "type": "public",
        "url": "https://www.unesco.org/en/creative-cities/phuket",
        "why_it_matters": "gastronomy vertical support",
        "supports": "food-route"
      }
    ]
  },
  {
    "city": "Samut Prakan",
    "thai_name": "สมุทรปราการ",
    "province": "Samut Prakan",
    "recommended_slug": "samut-prakan",
    "page_status": "support node only / airport-adjacent",
    "merge_recommendation": "Keep under Bangkok metro; Suvarnabhumi is airport entity",
    "summary": "Samut Prakan is modeled as: airport-adjacent stays, Bangkok edge attractions. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "airport-adjacent stays",
      "Bangkok edge attractions"
    ],
    "avoid_if": [
      "not a broad city-stay destination"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "not a broad city-stay destination"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Samut Prakan core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "airport-adjacent stays, Bangkok edge attractions"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Samut Prakan",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Samut-Prakan/234",
        "why_it_matters": "official Bangkok-adjacent identity",
        "supports": "static copy"
      },
      {
        "name": "Suvarnabhumi Airport",
        "type": "official",
        "url": "https://suvarnabhumi.airportthai.co.th/",
        "why_it_matters": "airport support role",
        "supports": "route-check"
      }
    ]
  },
  {
    "city": "Songkhla",
    "thai_name": "สงขลา",
    "province": "Songkhla",
    "recommended_slug": "songkhla",
    "page_status": "support node / specialized old-town-food node",
    "merge_recommendation": "Pair with Hat Yai; Songkhla is heritage/coastal sub-base",
    "summary": "Songkhla is modeled as: old town, Samila/waterfront, food/culture. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "old town",
      "Samila",
      "waterfront",
      "food",
      "culture"
    ],
    "avoid_if": [
      "26 km separation from Hat Yai changes base logic"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "26 km separation from Hat Yai changes base logic"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Songkhla core / main access area",
        "best_for": "specific-purpose support trips",
        "watch_outs": "not a broad standalone base",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "spread unless local core is defined",
        "weather_noise_flood_or_air_caveat": "rain/AQI/traffic should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "old town, Samila/waterfront, food/culture"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "medium",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Songkhla",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Songkhla/353",
        "why_it_matters": "historic/cultural identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Surat Thani",
    "thai_name": "สุราษฎร์ธานี",
    "province": "Surat Thani",
    "recommended_slug": "surat-thani",
    "page_status": "first-class ferry/route anchor",
    "merge_recommendation": "No merge; Samui/Phangan/Tao should be separate islands",
    "summary": "Surat Thani is modeled as: rail/air/bus-to-ferry gateway. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "rail",
      "air",
      "bus-to-ferry gateway"
    ],
    "avoid_if": [
      "ferry/marine weather and schedule fragility dominate"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "ferry/marine weather and schedule fragility dominate"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Surat Thani city / Tapee River",
        "best_for": "overnight buffer and food",
        "watch_outs": "not island-like",
        "transport_logic": "road to rail/airport/piers",
        "walkability_or_spread": "compact pockets",
        "weather_noise_flood_or_air_caveat": "rain/river"
      },
      {
        "name": "Phun Phin rail side",
        "best_for": "rail-to-ferry logistics",
        "watch_outs": "route-only",
        "transport_logic": "rail/van",
        "walkability_or_spread": "limited",
        "weather_noise_flood_or_air_caveat": "schedule/rain"
      },
      {
        "name": "Don Sak pier area",
        "best_for": "early ferry resilience",
        "watch_outs": "little city value",
        "transport_logic": "pier-first",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "marine weather"
      }
    ],
    "nearby_alternatives": [
      "Krabi",
      "Nakhon Si Thammarat",
      "Chumphon",
      "Trang"
    ],
    "route_roles": [
      "rail/air/bus-to-ferry gateway"
    ],
    "food_angle": "Support food stop; not broad vertical.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "Surat Thani Airport",
      "SRT rail",
      "bus/van",
      "Don Sak ferry"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "URT"
      ],
      "approx_lat": "9.1382",
      "approx_lon": "99.3215",
      "related_entities_to_create": [
        "Don Sak",
        "Phun Phin",
        "Surat Thani Airport",
        "Tapee River",
        "Koh Samui route",
        "Koh Phangan route",
        "Koh Tao route"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "surat-thani-stay-guide",
        "surat-thani-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Surat Thani",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Surat-Thani/354",
        "why_it_matters": "official island/gateway identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Sukhothai",
    "thai_name": "สุโขทัย",
    "province": "Sukhothai",
    "recommended_slug": "sukhothai",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Sukhothai is modeled as: UNESCO heritage, old-city stay, cycling. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "UNESCO heritage",
      "old-city stay",
      "cycling"
    ],
    "avoid_if": [
      "heat and festival crowding"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "heat and festival crowding"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Old City / Historical Park",
        "best_for": "heritage and cycling",
        "watch_outs": "less nightlife/transit",
        "transport_logic": "bike/road",
        "walkability_or_spread": "compact park, hotels spread",
        "weather_noise_flood_or_air_caveat": "heat/rain"
      },
      {
        "name": "New Sukhothai",
        "best_for": "bus, food, cheaper stays",
        "watch_outs": "farther from park",
        "transport_logic": "bus/road",
        "walkability_or_spread": "compact town",
        "weather_noise_flood_or_air_caveat": "heat"
      },
      {
        "name": "Si Satchanalai route",
        "best_for": "heritage extension",
        "watch_outs": "needs road time",
        "transport_logic": "road",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "heat/rain"
      }
    ],
    "nearby_alternatives": [
      "Ayutthaya",
      "Chiang Mai",
      "Phitsanulok",
      "Lopburi"
    ],
    "route_roles": [
      "UNESCO heritage, old-city stay, cycling"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "Sukhothai Airport",
      "bus/road",
      "nearby rail via Phitsanulok"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "Old Sukhothai"
      ],
      "approx_lat": "17.0056",
      "approx_lon": "99.8264",
      "related_entities_to_create": [
        "Sukhothai Historical Park",
        "New Sukhothai",
        "Si Satchanalai"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "sukhothai-stay-guide",
        "sukhothai-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Sukhothai",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Sukhothai/114",
        "why_it_matters": "official heritage identity",
        "supports": "static copy"
      },
      {
        "name": "UNESCO Sukhothai",
        "type": "public",
        "url": "https://whc.unesco.org/en/list/574/",
        "why_it_matters": "World Heritage basis",
        "supports": "static copy"
      },
      {
        "name": "TAT Sukhothai Loi Krathong Festival",
        "type": "official",
        "url": "https://www.tourismthailand.org/Events-and-Festivals/sukhothai-loi-krathong-festival",
        "why_it_matters": "event crowd signal",
        "supports": "future signal"
      }
    ]
  },
  {
    "city": "Trang",
    "thai_name": "ตรัง",
    "province": "Trang",
    "recommended_slug": "trang",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Trang is modeled as: food city + Andaman island ferry base. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "food city + Andaman island ferry base"
    ],
    "avoid_if": [
      "monsoon boat fragility; city vs island base split"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "monsoon boat fragility; city vs island base split"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Trang city",
        "best_for": "food, rail, airport, morning markets",
        "watch_outs": "not beach base",
        "transport_logic": "rail/road/airport",
        "walkability_or_spread": "compact",
        "weather_noise_flood_or_air_caveat": "rain manageable"
      },
      {
        "name": "Pak Meng / coast",
        "best_for": "island departures",
        "watch_outs": "less food depth",
        "transport_logic": "road/boat",
        "walkability_or_spread": "spread",
        "weather_noise_flood_or_air_caveat": "marine weather"
      },
      {
        "name": "Islands",
        "best_for": "beach/island stays",
        "watch_outs": "boat-only fragility",
        "transport_logic": "boat",
        "walkability_or_spread": "compact islands",
        "weather_noise_flood_or_air_caveat": "rough sea"
      }
    ],
    "nearby_alternatives": [
      "Krabi",
      "Phuket",
      "Hat Yai",
      "Nakhon Si Thammarat"
    ],
    "route_roles": [
      "food city + Andaman island ferry base"
    ],
    "food_angle": "High; promote to dedicated food-route vertical.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "Trang Airport",
      "SRT rail",
      "road",
      "ferry/boat"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [
        "TST"
      ],
      "approx_lat": "7.5594",
      "approx_lon": "99.6114",
      "related_entities_to_create": [
        "Trang Railway Station",
        "Pak Meng",
        "Koh Mook",
        "Koh Kradan",
        "Kantang"
      ],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": [
        "trang-stay-guide",
        "trang-route-check"
      ]
    },
    "source_candidates": [
      {
        "name": "TAT Trang",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Trang/355",
        "why_it_matters": "official coastline/island identity",
        "supports": "static copy"
      }
    ]
  },
  {
    "city": "Ubon Ratchathani",
    "thai_name": "อุบลราชธานี",
    "province": "Ubon Ratchathani",
    "recommended_slug": "ubon-ratchathani",
    "page_status": "first-class destination",
    "merge_recommendation": "No merge",
    "summary": "Ubon Ratchathani is modeled as: Isan culture, Candle Festival, Mekong/Pha Taem route. Static copy should foreground traveler decisions and avoid live claims.",
    "best_for": [
      "Isan culture",
      "Candle Festival",
      "Mekong",
      "Pha Taem route"
    ],
    "avoid_if": [
      "festival crowding, heat, cross-border road spread"
    ],
    "best_months": "November–February unless the page-specific season window states otherwise.",
    "season_windows": {
      "best": [
        "November–February"
      ],
      "acceptable_with_caveats": [
        "March–May heat",
        "May–October rain-aware travel"
      ],
      "high_risk": [
        "festival crowding, heat, cross-border road spread"
      ]
    },
    "static_decision_signals": {
      "today_signal": "Do not hardcode; use TMD, Air4Thai/PCD, transport and event feeds where relevant.",
      "weather_risk": "Use seasonal static framing only; daily weather is a future live signal.",
      "aqi_risk": "Live-check via Air4Thai/PCD where station coverage exists; especially relevant in dry/smoke season.",
      "transport_friction": "Treat route timing, transfer spread and public transport schedules as live or semi-live.",
      "food_signal": "Use as static food-route positioning only when supported by official/local source candidates.",
      "crowd_level": "Do not hardcode current crowding; express event/weekend sensitivity as static risk.",
      "comfort_penalties": [
        "heat",
        "rain",
        "AQI where relevant",
        "event/crowd pressure",
        "route spread"
      ]
    },
    "base_areas": [
      {
        "name": "Ubon Ratchathani city center",
        "best_for": "first-time base and route logistics",
        "watch_outs": "verify neighborhood/stay demand before hardcoding",
        "transport_logic": "road/transit-dependent",
        "walkability_or_spread": "semi-compact or spread",
        "weather_noise_flood_or_air_caveat": "daily weather/AQI should be live checked"
      }
    ],
    "nearby_alternatives": [],
    "route_roles": [
      "Isan culture, Candle Festival, Mekong/Pha Taem route"
    ],
    "food_angle": "Support food-route only if official/local market/food sources are added.",
    "culture_angle": "Use official TAT/provincial/heritage sources; avoid attraction listicles.",
    "shopping_gold_gem_angle": "No primary static vertical unless separately listed.",
    "arrival_modes": [
      "road/bus/van",
      "rail/airport/ferry where relevant"
    ],
    "should_be_static": [
      "page status",
      "merge/split logic",
      "seasonal caveats",
      "base-area logic"
    ],
    "should_not_be_static": [
      "daily weather",
      "AQI",
      "transport schedules",
      "event dates",
      "prices"
    ],
    "data_confidence": "high",
    "entity_seed_notes": {
      "aliases": [],
      "approx_lat": "",
      "approx_lon": "",
      "related_entities_to_create": [],
      "observation_coverage_candidates": [
        "TMD",
        "Air4Thai/PCD where available",
        "SRT/CAAT/ferry/event feeds where relevant"
      ],
      "related_page_candidates": []
    },
    "source_candidates": [
      {
        "name": "TAT Ubon Ratchathani",
        "type": "official",
        "url": "https://www.tourismthailand.org/Destinations/Provinces/Ubon-Ratchathani/587",
        "why_it_matters": "official culture/festival/route identity",
        "supports": "static copy"
      },
      {
        "name": "TAT Ubon Candle Festival 2025",
        "type": "official",
        "url": "https://www.tourismthailand.org/Articles/ubon-ratchathani-candle-festival-2025-en",
        "why_it_matters": "crowd/event pressure source",
        "supports": "future signal"
      }
    ]
  }
]