{
  "generatedAt": "2026-05-15T00:00:00+07:00",
  "canonical": "https://enjoythai.land/research/cities/",
  "markdownUrl": "https://enjoythai.land/research/cities/index.md",
  "htmlUrl": "https://enjoythai.land/research/cities/",
  "sourceDataVersion": "2026-05-15",
  "packetCount": 31,
  "firstClassCount": 23,
  "supportNodeCount": 6,
  "mergedCount": 2,
  "matrix": [
    {
      "city": "Bangkok",
      "recommended_slug": "bangkok",
      "thai_name": "กรุงเทพมหานคร",
      "province": "Bangkok",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "Do not merge; use metro provinces as related nodes",
      "strongest_traveler_use_case": "arrival hub, stay-area choice, food, gold/shopping, rail/air pivot",
      "biggest_static_risk_or_caveat": "AQI, heat, rain flooding, event crowding are live signals",
      "decision_families": "today; where-to-stay; route-check; food-route; gold-buying-check",
      "confidence_level": "high"
    },
    {
      "city": "Ayutthaya",
      "recommended_slug": "ayutthaya",
      "thai_name": "พระนครศรีอยุธยา",
      "province": "Phra Nakhon Si Ayutthaya",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "heritage day-trip / 1-night river base",
      "biggest_static_risk_or_caveat": "heat exposure, lowland rain/flood, bike comfort",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Buriram",
      "recommended_slug": "buriram",
      "thai_name": "บุรีรัมย์",
      "province": "Buri Ram",
      "recommended_page_status": "first-class destination, event-aware",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Khmer-route + MotoGP/football event base",
      "biggest_static_risk_or_caveat": "event dates radically change hotel/crowd logic",
      "decision_families": "today; where-to-stay; route-check",
      "confidence_level": "medium"
    },
    {
      "city": "Chanthaburi",
      "recommended_slug": "chanthaburi",
      "thai_name": "จันทบุรี",
      "province": "Chanthaburi",
      "recommended_page_status": "specialized vertical node + first-class candidate",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "gem/jewelry market, fruit route, old-town food",
      "biggest_static_risk_or_caveat": "gem/gold pricing and shop trust cannot be static",
      "decision_families": "today; where-to-stay; route-check; food-route; gold-buying-check/gem-check",
      "confidence_level": "high"
    },
    {
      "city": "Cha-am",
      "recommended_slug": "hua-hin-cha-am / cha-am entity",
      "thai_name": "ชะอำ",
      "province": "Phetchaburi",
      "recommended_page_status": "merged with another page",
      "if_merged_merged_with_what_and_why": "Merge with Hua Hin; shared Bangkok beach-drive market; Cha-am is quieter northern sub-base",
      "strongest_traveler_use_case": "budget/family beach fallback from Hua Hin",
      "biggest_static_risk_or_caveat": "weekend crowd, weaker food/stay depth than Hua Hin",
      "decision_families": "today; where-to-stay; route-check",
      "confidence_level": "high"
    },
    {
      "city": "Chiang Mai",
      "recommended_slug": "chiang-mai",
      "thai_name": "เชียงใหม่",
      "province": "Chiang Mai",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "northern city base, culture, food, mountain pivots",
      "biggest_static_risk_or_caveat": "smoke season/AQI cannot be static beyond risk framing",
      "decision_families": "today; where-to-stay; route-check; food-route; gold-buying-check",
      "confidence_level": "high"
    },
    {
      "city": "Chiang Rai",
      "recommended_slug": "chiang-rai",
      "thai_name": "เชียงราย",
      "province": "Chiang Rai",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "northern border/culture/mountain route base",
      "biggest_static_risk_or_caveat": "smoke season and car-route dependence",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Chonburi",
      "recommended_slug": "chonburi",
      "thai_name": "ชลบุรี",
      "province": "Chonburi",
      "recommended_page_status": "support node only / east-coast route node",
      "if_merged_merged_with_what_and_why": "Split from Pattaya; Chonburi province is broader route/seafood/industrial coast",
      "strongest_traveler_use_case": "Bangkok–Pattaya–Rayong route context, Si Racha/Ko Sichang support",
      "biggest_static_risk_or_caveat": "too broad for one traveler page",
      "decision_families": "today; route-check; food-route; ferry-check",
      "confidence_level": "high"
    },
    {
      "city": "Hat Yai",
      "recommended_slug": "hat-yai",
      "thai_name": "หาดใหญ่",
      "province": "Songkhla",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "Keep Songkhla Old Town as related support node",
      "strongest_traveler_use_case": "south rail/air/border hub, food, shopping",
      "biggest_static_risk_or_caveat": "flood/rain and event/border-route conditions are live",
      "decision_families": "today; where-to-stay; route-check; food-route; gold-buying-check",
      "confidence_level": "high"
    },
    {
      "city": "Hua Hin",
      "recommended_slug": "hua-hin-cha-am",
      "thai_name": "หัวหิน",
      "province": "Prachuap Khiri Khan",
      "recommended_page_status": "merged destination",
      "if_merged_merged_with_what_and_why": "Merge with Cha-am; keep distinct base areas inside same page",
      "strongest_traveler_use_case": "Bangkok beach/rail weekend base",
      "biggest_static_risk_or_caveat": "weekend crowd, rain/road congestion",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Kanchanaburi",
      "recommended_slug": "kanchanaburi",
      "thai_name": "กาญจนบุรี",
      "province": "Kanchanaburi",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "river/rail/history/nature base",
      "biggest_static_risk_or_caveat": "town, Sai Yok, Erawan distance makes base choice material",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Khon Kaen",
      "recommended_slug": "khon-kaen",
      "thai_name": "ขอนแก่น",
      "province": "Khon Kaen",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Isan urban hub, rail/air/business/food",
      "biggest_static_risk_or_caveat": "heat/AQI and limited classic sightseeing depth",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Krabi",
      "recommended_slug": "krabi",
      "thai_name": "กระบี่",
      "province": "Krabi",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Andaman beach/island/ferry base",
      "biggest_static_risk_or_caveat": "monsoon marine fragility; Railay is boat-dependent",
      "decision_families": "today; where-to-stay; route-check; ferry-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Lopburi",
      "recommended_slug": "lopburi",
      "thai_name": "ลพบุรี",
      "province": "Lopburi",
      "recommended_page_status": "route anchor / support node",
      "if_merged_merged_with_what_and_why": "No merge; link with Ayutthaya/Sukhothai/Khorat routes",
      "strongest_traveler_use_case": "history stop, rail route, seasonal sunflower side-trip",
      "biggest_static_risk_or_caveat": "not enough broad hotel-area depth for first-class page",
      "decision_families": "today; route-check",
      "confidence_level": "medium"
    },
    {
      "city": "Mae Hong Son",
      "recommended_slug": "mae-hong-son",
      "thai_name": "แม่ฮ่องสอน",
      "province": "Mae Hong Son",
      "recommended_page_status": "first-class route-heavy destination",
      "if_merged_merged_with_what_and_why": "No merge; Pai remains separate because traveler behavior differs",
      "strongest_traveler_use_case": "road-loop, mountain culture, slow travel",
      "biggest_static_risk_or_caveat": "winding road, smoke, rain/landslide risk",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Nan",
      "recommended_slug": "nan",
      "thai_name": "น่าน",
      "province": "Nan",
      "recommended_page_status": "first-class destination candidate",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "quiet northern culture/nature base",
      "biggest_static_risk_or_caveat": "smoke season and low public live-signal density",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Nakhon Phanom",
      "recommended_slug": "nakhon-phanom",
      "thai_name": "นครพนม",
      "province": "Nakhon Phanom",
      "recommended_page_status": "first-class Mekong-route candidate",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Mekong river base, Laos-view route, slow urban stay",
      "biggest_static_risk_or_caveat": "weaker hotel-area complexity; event/live sources needed",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Nakhon Ratchasima",
      "recommended_slug": "nakhon-ratchasima",
      "thai_name": "นครราชสีมา",
      "province": "Nakhon Ratchasima",
      "recommended_page_status": "first-class destination / route hub",
      "if_merged_merged_with_what_and_why": "No merge; keep Khao Yai/Pak Chong as sub-base or related entity",
      "strongest_traveler_use_case": "Isan gateway, Khao Yai/Phimai pivots, rail/road hub",
      "biggest_static_risk_or_caveat": "city vs Khao Yai expectations must be separated",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Nakhon Si Thammarat",
      "recommended_slug": "nakhon-si-thammarat",
      "thai_name": "นครศรีธรรมราช",
      "province": "Nakhon Si Thammarat",
      "recommended_page_status": "first-class culture/food candidate",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "southern temple/culture/food route",
      "biggest_static_risk_or_caveat": "Gulf monsoon/flood timing needs live checks",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Nong Khai",
      "recommended_slug": "nong-khai",
      "thai_name": "หนองคาย",
      "province": "Nong Khai",
      "recommended_page_status": "first-class route anchor",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Mekong/Vientiane border rail-road base",
      "biggest_static_risk_or_caveat": "border/rail schedules and Naga event crowds are live",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Nonthaburi",
      "recommended_slug": "nonthaburi",
      "thai_name": "นนทบุรี",
      "province": "Nonthaburi",
      "recommended_page_status": "support node only",
      "if_merged_merged_with_what_and_why": "Keep under Bangkok metro",
      "strongest_traveler_use_case": "Ko Kret / river day-trip / Bangkok-adjacent stay",
      "biggest_static_risk_or_caveat": "indistinct from Bangkok for most travelers",
      "decision_families": "today; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Pai",
      "recommended_slug": "pai",
      "thai_name": "ปาย",
      "province": "Mae Hong Son",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge with Mae Hong Son; road and stay logic differ",
      "strongest_traveler_use_case": "mountain small-town base, road-loop stop",
      "biggest_static_risk_or_caveat": "route 1095 sickness/friction, winter crowds, smoke",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Pattaya",
      "recommended_slug": "pattaya",
      "thai_name": "พัทยา",
      "province": "Chonburi",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "Split from Chonburi",
      "strongest_traveler_use_case": "beach/nightlife/family inventory, Ko Lan, events",
      "biggest_static_risk_or_caveat": "crowd/event pressure, rain drainage, beach-water/marine checks",
      "decision_families": "today; where-to-stay; route-check; ferry-check; food-route; gold-buying-check",
      "confidence_level": "high"
    },
    {
      "city": "Pathum Thani",
      "recommended_slug": "pathum-thani",
      "thai_name": "ปทุมธานี",
      "province": "Pathum Thani",
      "recommended_page_status": "support node only",
      "if_merged_merged_with_what_and_why": "Keep under Bangkok metro / route-support",
      "strongest_traveler_use_case": "north Bangkok route, museums, markets, university/industrial context",
      "biggest_static_risk_or_caveat": "weak standalone traveler decision value",
      "decision_families": "today; route-check",
      "confidence_level": "high"
    },
    {
      "city": "Phuket",
      "recommended_slug": "phuket",
      "thai_name": "ภูเก็ต",
      "province": "Phuket",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "island base, beaches, food, ferries, airport",
      "biggest_static_risk_or_caveat": "monsoon surf/boat risk and island traffic cannot be static",
      "decision_families": "today; where-to-stay; route-check; ferry-check; food-route; gold-buying-check",
      "confidence_level": "high"
    },
    {
      "city": "Samut Prakan",
      "recommended_slug": "samut-prakan",
      "thai_name": "สมุทรปราการ",
      "province": "Samut Prakan",
      "recommended_page_status": "support node only / airport-adjacent",
      "if_merged_merged_with_what_and_why": "Keep under Bangkok metro; Suvarnabhumi is airport entity",
      "strongest_traveler_use_case": "airport-adjacent stays, Bangkok edge attractions",
      "biggest_static_risk_or_caveat": "not a broad city-stay destination",
      "decision_families": "today; where-to-stay; route-check",
      "confidence_level": "high"
    },
    {
      "city": "Songkhla",
      "recommended_slug": "songkhla",
      "thai_name": "สงขลา",
      "province": "Songkhla",
      "recommended_page_status": "support node / specialized old-town-food node",
      "if_merged_merged_with_what_and_why": "Pair with Hat Yai; Songkhla is heritage/coastal sub-base",
      "strongest_traveler_use_case": "old town, Samila/waterfront, food/culture",
      "biggest_static_risk_or_caveat": "26 km separation from Hat Yai changes base logic",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "medium"
    },
    {
      "city": "Surat Thani",
      "recommended_slug": "surat-thani",
      "thai_name": "สุราษฎร์ธานี",
      "province": "Surat Thani",
      "recommended_page_status": "first-class ferry/route anchor",
      "if_merged_merged_with_what_and_why": "No merge; Samui/Phangan/Tao should be separate islands",
      "strongest_traveler_use_case": "rail/air/bus-to-ferry gateway",
      "biggest_static_risk_or_caveat": "ferry/marine weather and schedule fragility dominate",
      "decision_families": "today; where-to-stay; route-check; ferry-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Sukhothai",
      "recommended_slug": "sukhothai",
      "thai_name": "สุโขทัย",
      "province": "Sukhothai",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "UNESCO heritage, old-city stay, cycling",
      "biggest_static_risk_or_caveat": "heat and festival crowding",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Trang",
      "recommended_slug": "trang",
      "thai_name": "ตรัง",
      "province": "Trang",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "food city + Andaman island ferry base",
      "biggest_static_risk_or_caveat": "monsoon boat fragility; city vs island base split",
      "decision_families": "today; where-to-stay; route-check; ferry-check; food-route",
      "confidence_level": "high"
    },
    {
      "city": "Ubon Ratchathani",
      "recommended_slug": "ubon-ratchathani",
      "thai_name": "อุบลราชธานี",
      "province": "Ubon Ratchathani",
      "recommended_page_status": "first-class destination",
      "if_merged_merged_with_what_and_why": "No merge",
      "strongest_traveler_use_case": "Isan culture, Candle Festival, Mekong/Pha Taem route",
      "biggest_static_risk_or_caveat": "festival crowding, heat, cross-border road spread",
      "decision_families": "today; where-to-stay; route-check; food-route",
      "confidence_level": "high"
    }
  ],
  "gapAnalysis": {
    "promoteOrKeep": [
      "Bangkok — unavoidable national gateway; high decision density across stay, AQI, route, food, gold.",
      "Chiang Mai — strong city/base/food/smoke decision density.",
      "Phuket — base-area + ferry + marine + food decision density.",
      "Krabi — ferry/base/marine logic is too important for generic page.",
      "Pattaya — must split from Chonburi; distinct hotel/crowd/ferry/event logic.",
      "Hua Hin–Cha-am — merged page is valid; needs separate sub-base logic.",
      "Pai — small but high decision density because route 1095, smoke, crowding and base choice matter.",
      "Ayutthaya — heritage + day/overnight + heat/flood route decisions.",
      "Kanchanaburi — high base-spread/route-friction value.",
      "Chiang Rai — airport, border/mountain routes, smoke-season logic.",
      "Khon Kaen — Isan urban hub; useful stay/route/food record.",
      "Ubon Ratchathani — event/culture/Mekong route page justified.",
      "Nakhon Ratchasima — gateway page needed to separate Khorat/Pak Chong/Khao Yai/Phimai.",
      "Nong Khai — Laos/Mekong route anchor.",
      "Surat Thani — ferry/route anchor, even if city tourism depth is modest.",
      "Trang — food city + Andaman ferry node.",
      "Hat Yai — southern rail/air/border food-shopping hub.",
      "Sukhothai — UNESCO heritage and old/new city base split.",
      "Chanthaburi — gem/fruit/old-town verticals justify promotion.",
      "Buriram — event + Khmer route page justified.",
      "Nan — promote if northern quiet-route coverage is a product goal.",
      "Mae Hong Son — promote as route-heavy node, not generic city page.",
      "Nakhon Phanom — promote if building Mekong route coverage.",
      "Nakhon Si Thammarat — promote as southern culture/food candidate, but improve source coverage first."
    ],
    "supportOnly": [
      "Nonthaburi — Bangkok metro river/Ko Kret support.",
      "Pathum Thani — Bangkok north-route / market / museum support.",
      "Samut Prakan — Bangkok airport-adjacent and east-coast route support.",
      "Chonburi — province/east-coast support after splitting Pattaya.",
      "Songkhla — Hat Yai-related old-town/food/culture node unless building a broader Hat Yai–Songkhla page.",
      "Lopburi — route anchor rather than full city destination unless creating central heritage rail corridor."
    ],
    "mergedRecords": [
      {
        "current merge": "Pattaya + Chonburi",
        "recommendation": "split",
        "reason": "Pattaya has destination-specific hotel, event, ferry and crowd logic; Chonburi province is a broader support/east-coast corridor."
      },
      {
        "current merge": "Hua Hin + Cha-am",
        "recommendation": "keep merged",
        "reason": "Same Bangkok beach-drive decision market; Cha-am is best modeled as quieter northern sub-base."
      },
      {
        "current merge": "Hat Yai + Songkhla",
        "recommendation": "partial merge",
        "reason": "Hat Yai should be first-class hub; Songkhla Old Town should be related support/specialized food-culture node."
      },
      {
        "current merge": "Bangkok + metro provinces",
        "recommendation": "do not merge as equal pages",
        "reason": "Nonthaburi, Pathum Thani and Samut Prakan should support Bangkok decisions, not compete as broad destination pages."
      }
    ],
    "stayGuides": {
      "High priority": [
        "Bangkok",
        "Chiang Mai",
        "Phuket",
        "Krabi",
        "Pattaya",
        "Hua Hin–Cha-am",
        "Pai",
        "Ayutthaya",
        "Kanchanaburi",
        "Chiang Rai",
        "Surat Thani",
        "Hat Yai",
        "Trang",
        "Sukhothai",
        "Nakhon Ratchasima",
        "Chanthaburi."
      ],
      "Medium priority": [
        "Khon Kaen",
        "Ubon Ratchathani",
        "Nong Khai",
        "Buriram",
        "Mae Hong Son",
        "Nan",
        "Nakhon Si Thammarat",
        "Nakhon Phanom."
      ],
      "Do not create generic stay-guide pages yet": [
        "Nonthaburi",
        "Pathum Thani",
        "Samut Prakan",
        "Lopburi",
        "Chonburi province-wide",
        "Songkhla standalone."
      ]
    },
    "specializedVerticals": [
      {
        "vertical": "food-route",
        "strongest cities/nodes": "Bangkok, Chiang Mai, Phuket, Hat Yai, Trang, Chanthaburi, Nakhon Si Thammarat, Songkhla, Khon Kaen, Ubon Ratchathani"
      },
      {
        "vertical": "rail/route anchor",
        "strongest cities/nodes": "Bangkok, Ayutthaya, Kanchanaburi, Sukhothai via nearby rail/bus, Lopburi, Nakhon Ratchasima, Khon Kaen, Nong Khai, Ubon Ratchathani, Hat Yai, Surat Thani, Trang"
      },
      {
        "vertical": "ferry anchor",
        "strongest cities/nodes": "Phuket, Krabi, Surat Thani, Trang, Pattaya/Ko Lan, Chonburi/Ko Sichang support"
      },
      {
        "vertical": "gold-buying-check",
        "strongest cities/nodes": "Bangkok first; Chiang Mai, Phuket, Pattaya and Hat Yai as live-price/shop-directory support"
      },
      {
        "vertical": "gem-market / jewelry",
        "strongest cities/nodes": "Chanthaburi first; Bangkok jewelry/gold context second; Phuket/Pattaya/Hat Yai only if source coverage improves"
      }
    ],
    "sourceFoundation": [
      {
        "source foundation": "strongest official/public observation base",
        "cities": "Bangkok, Chiang Mai, Phuket, Krabi, Hat Yai, Surat Thani, Trang, Pattaya, Ayutthaya, Kanchanaburi, Sukhothai, Ubon, Nong Khai"
      },
      {
        "source foundation": "strong static official base, medium live-observation base",
        "cities": "Chiang Rai, Nakhon Ratchasima, Khon Kaen, Buriram, Chanthaburi, Hua Hin–Cha-am"
      },
      {
        "source foundation": "mostly static/editorial until better local feeds are added",
        "cities": "Nan, Mae Hong Son, Nakhon Phanom, Nakhon Si Thammarat, Lopburi, Songkhla"
      },
      {
        "source foundation": "support-node source base only",
        "cities": "Nonthaburi, Pathum Thani, Samut Prakan, Chonburi province-wide"
      }
    ]
  },
  "files": [
    {
      "name": "README.md",
      "publicUrl": "https://enjoythai.land/research/cities/files/README.md"
    },
    {
      "name": "city_research_packets.json",
      "publicUrl": "https://enjoythai.land/research/cities/files/city_research_packets.json"
    },
    {
      "name": "city_strategy_matrix.csv",
      "publicUrl": "https://enjoythai.land/research/cities/files/city_strategy_matrix.csv"
    },
    {
      "name": "hardcoded_logic_replacement.csv",
      "publicUrl": "https://enjoythai.land/research/cities/files/hardcoded_logic_replacement.csv"
    },
    {
      "name": "promotion_gap_analysis.md",
      "publicUrl": "https://enjoythai.land/research/cities/files/promotion_gap_analysis.md"
    },
    {
      "name": "report.md",
      "publicUrl": "https://enjoythai.land/research/cities/files/report.md"
    },
    {
      "name": "source_appendix.csv",
      "publicUrl": "https://enjoythai.land/research/cities/files/source_appendix.csv"
    }
  ],
  "zipUrl": "https://enjoythai.land/research/cities/files/enjoythai_city_research_package_2026-05-15.zip"
}
