{"generated_at":"2026-08-22T17:51:47.142Z","storage":{"mode":"versioned-snapshot","snapshot_generated_at":"2026-08-22T17:51:47.142Z"},"family":{"id":"today","name":"Where to go today","decisionType":"where_to_go_today","status":"active","endpoint":"/api/decisions/today","note":"Ranks destination entities using live AQI and comfort signals plus source confidence, regional context, and airport-scale, airport-access, airport board-surface, or airport environmental-support context where it materially changes the trip shape.","output":"Best and weakest destination picks today."},"decision_count":12,"filters":{"destination":"","route":"","limit":50},"rows":[{"decision_id":"today_ayutthaya","decision_type":"where_to_go_today","subject_id":"ayutthaya","subject_name":"Ayutthaya","subject_type":"destination","score":64,"component_score":74.5,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Ayutthaya is a cautious today pick.","best_for":"Easy history from Bangkok with low commitment.","avoid_if":"You hate heat exposure or want a slow overnight small-town mood instead.","check_first":["Start early in hot months.","Use train or simple road logic rather than over-designing the transfer.","Treat Bangkok as the hotel base unless the trip specifically wants slower nights."],"next_action":"Go early, travel light, and keep the day tight enough to avoid a punishing noon slog.","pivot":"Return to Bangkok early if heat becomes the real story.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":22,"available_components":21,"live_components":20,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.955},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"ayutthaya","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"ayutthaya","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":50,"weight":0.22,"contribution":11,"source":"signal","signal_type":"rain_risk","entity_id":"ayutthaya","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"airport_transfer_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_ground_service_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official airport taxi, Grab, rental, and pickup-rule context around the main airport anchor, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_board_surface_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official passenger self-serve board visibility from public AOT flight-status pages. The board rows themselves use a browser turnstile token, so this is not direct live airline status truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_scale_context","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official AOT passenger and aircraft-movement scale context behind the main airport anchor, not live delay, gate, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_environmental_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is SET-hosted AOT annual-report disclosure context around the main airport anchor, not live measured sound-level truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":52,"weight":0.012,"contribution":0.62,"source":"signal","signal_type":"rail_feasibility","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is public rail-support structure around the destination, not live seat, delay, or operator-disruption truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"water_risk","label":"Water and flood fit","score":76,"weight":0.08,"contribution":6.08,"source":"signal","signal_type":"flood_water_risk","entity_id":"ayutthaya","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context, not live speed, queue, lane, or incident truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"medical_fallback_support","entity_id":"ayutthaya","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"ayutthaya","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":77,"weight":0.05,"contribution":3.85,"source":"signal","signal_type":"road_safety_risk","entity_id":"ayutthaya","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":74,"weight":0.05,"contribution":3.7,"source":"signal","signal_type":"transport_friction","entity_id":"ayutthaya","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"ayutthaya","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"ayutthaya","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"ayutthaya","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":79,"weight":0.015,"contribution":1.19,"source":"blueprint","signal_type":null,"entity_id":"ayutthaya","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":49,"note":"Component scores spread by 49 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"23 joined sources support this decision.","weakest_signal":{"type":"regional_disaster_context","label":"Regional disaster context is busy","reason":"GDACS currently shows 4 active hazard groups across 32 tracked events. This is a route-confidence layer, not a local place safety verdict."},"related_pages":[{"path":"/where-to-go/ayutthaya/","label":"Ayutthaya destination guide"},{"path":"/rail/bangkok-ayutthaya-train/","label":"Bangkok to Ayutthaya train"},{"path":"/accommodation/ayutthaya/","label":"Ayutthaya stay guide"},{"path":"/food/ayutthaya-food-route/","label":"Ayutthaya food guide"},{"path":"/temples/ayutthaya/","label":"Ayutthaya temple route"},{"path":"/research/temples/ayutthaya/","label":"Ayutthaya temple research"}],"path":"/entities/ayutthaya/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:30:00.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_bangkok","decision_type":"where_to_go_today","subject_id":"bangkok","subject_name":"Bangkok","subject_type":"destination","score":63,"component_score":73.6,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Bangkok is a cautious today pick.","best_for":"First trips, rainy-day resilience, food density, hospitals, and rail-linked city movement.","avoid_if":"You want a quiet, taxi-heavy, or outdoor-only city break.","check_first":["Check Air4Thai before heavy outdoor days.","Choose a BTS/MRT-linked base before paying for a hotel.","Treat cross-city taxi-heavy days as a risk, not a default."],"next_action":"Pick a BTS/MRT-linked base first, then shape temple, food, and river days around nearby zones.","pivot":"Use Ayutthaya or Kanchanaburi as the easier side-trip move, or shift to a coast if city noise is the real problem.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":31,"available_components":30,"live_components":29,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.968},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"bangkok","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"bangkok","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":50,"weight":0.22,"contribution":11,"source":"signal","signal_type":"rain_risk","entity_id":"bangkok","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"airport_weather_operability","label":"Airport weather operability","score":60,"weight":0.08,"contribution":4.8,"source":"signal","signal_type":"flight_delay_risk","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"airport_transfer_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_ground_service_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official airport taxi, Grab, rental, and pickup-rule context around the main airport anchor, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_board_surface_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official passenger self-serve board visibility from public AOT flight-status pages. The board rows themselves use a browser turnstile token, so this is not direct live airline status truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_scale_context","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official AOT passenger and aircraft-movement scale context behind the main airport anchor, not live delay, gate, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_environmental_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is SET-hosted AOT annual-report disclosure context around the main airport anchor, not live measured sound-level truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"rail_feasibility","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public rail-support structure around the destination, not live seat, delay, or operator-disruption truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.012,"contribution":1.03,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_motorcycle_taxi_support","label":"Official motorcycle-taxi support","score":88,"weight":0.012,"contribution":1.06,"source":"signal","signal_type":"official_motorcycle_taxi_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official Bangkok motorcycle-taxi stand and driver coverage from the public DLT/data.go.th dataset, useful as last-mile support context rather than live availability, dispatch, or queue truth."},{"key":"taxi_pickup_dropoff_support","label":"Taxi pickup and dropoff support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"taxi_pickup_dropoff_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public OTP monthly taxi GPS analytics and hotspot coverage around Bangkok traveler entities, useful as aggregate demand and pickup/dropoff context rather than live dispatch, ETA, queue, or raw trip truth."},{"key":"urban_rapid_transit_support","label":"Urban rapid-transit support","score":98,"weight":0.012,"contribution":1.18,"source":"signal","signal_type":"urban_rapid_transit_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official BTS and MRTA route-map and service-page support, not live headway, crowding, or outage truth."},{"key":"urban_bus_operator_support","label":"Urban bus-operator support","score":88,"weight":0.012,"contribution":1.06,"source":"signal","signal_type":"urban_bus_operator_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public Thai Smile Group branch and depot footprint around Bangkok traveler entities, not realtime vehicle, ETA, crowding, or outage truth."},{"key":"water_risk","label":"Water and flood fit","score":44,"weight":0.08,"contribution":3.52,"source":"signal","signal_type":"flood_water_risk","entity_id":"bangkok","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"spa_license_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"medical_fallback_support","entity_id":"bangkok","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"noise_comfort","label":"Noise comfort","score":50,"weight":0.05,"contribution":2.5,"source":"signal","signal_type":"noise_risk","entity_id":"bangkok","used_default":false,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"civic_friction","label":"Civic friction","score":68,"weight":0.012,"contribution":0.82,"source":"signal","signal_type":"civic_friction","entity_id":"bangkok","used_default":true,"default_reason":"Civic-friction signal missing for this Bangkok layer; using conservative fallback.","note":"Civic friction is only weighted where Bangkok civic complaint statistics are available."},{"key":"road_safety","label":"Road safety","score":90,"weight":0.05,"contribution":4.5,"source":"signal","signal_type":"road_safety_risk","entity_id":"bangkok","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":85,"weight":0.05,"contribution":4.25,"source":"signal","signal_type":"transport_friction","entity_id":"bangkok","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"bangkok","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"bangkok","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"bangkok","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":88,"weight":0.015,"contribution":1.32,"source":"blueprint","signal_type":null,"entity_id":"bangkok","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":51,"note":"Component scores spread by 51 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["civic_friction"],"source_summary":"46 joined sources support this decision.","weakest_signal":{"type":"flood_water_risk","label":"Water and flood-adjacent risk is elevated","reason":"Thaiwater status proxy scores 33 with dissolved oxygen 0.38 mg/L. This is a river and canal caution layer, not a full flood-stage model."},"related_pages":[{"path":"/today/bangkok/","label":"Bangkok Today"},{"path":"/where-to-go/bangkok/","label":"Bangkok destination guide"},{"path":"/accommodation/bangkok/","label":"Where to stay in Bangkok"},{"path":"/venues/restaurants/bangkok/","label":"Bangkok restaurants"},{"path":"/food/bangkok-food-guide/","label":"Bangkok food guide"},{"path":"/temples/bangkok/","label":"Bangkok temple route"},{"path":"/research/temples/bangkok/","label":"Bangkok temple research"}],"path":"/entities/bangkok/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_chiang-mai","decision_type":"where_to_go_today","subject_id":"chiang-mai","subject_name":"Chiang Mai","subject_type":"destination","score":65,"component_score":73.8,"penalty_points":9,"confidence":"High","label":"mixed","recommendation":"Chiang Mai is a cautious today pick.","best_for":"Culture, cafes, temples, northern food, and slower city pacing.","avoid_if":"PM2.5 stays high or the trip depends on mountain views being crisp.","check_first":["Treat sustained PM2.5 as the main breaker.","Choose Old City or Nimman based on trip shape, not a random deal.","Keep Bangkok or the coast as a real pivot if smoke stays high."],"next_action":"Check PM2.5 first, then choose Old City or Nimman before paying for side trips.","pivot":"Pivot to Bangkok or the coast if smoke remains stubborn.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":26,"available_components":26,"live_components":25,"fallback_components":1,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"chiang-mai","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":54,"weight":0.22,"contribution":11.88,"source":"signal","signal_type":"rain_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"airport_weather_operability","label":"Airport weather operability","score":61,"weight":0.08,"contribution":4.88,"source":"signal","signal_type":"flight_delay_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"airport_transfer_support","label":"Airport transfer support","score":41,"weight":0.012,"contribution":0.49,"source":"signal","signal_type":"airport_transfer_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.012,"contribution":0.5,"source":"signal","signal_type":"airport_ground_service_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official airport taxi, Grab, rental, and pickup-rule context around the main airport anchor, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_board_surface_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official passenger self-serve board visibility from public AOT flight-status pages. The board rows themselves use a browser turnstile token, so this is not direct live airline status truth."},{"key":"airport_scale_context","label":"Airport scale context","score":50,"weight":0.012,"contribution":0.6,"source":"signal","signal_type":"airport_scale_context","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official AOT passenger and aircraft-movement scale context behind the main airport anchor, not live delay, gate, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_environmental_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is SET-hosted AOT annual-report disclosure context around the main airport anchor, not live measured sound-level truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":43,"weight":0.012,"contribution":0.52,"source":"signal","signal_type":"rail_feasibility","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is public rail-support structure around the destination, not live seat, delay, or operator-disruption truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.012,"contribution":1.03,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":72,"weight":0.012,"contribution":0.86,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"water_risk","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"spa_license_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"medical_fallback_support","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":90,"weight":0.012,"contribution":1.08,"source":"signal","signal_type":"park_access_context","entity_id":"chiang-mai","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.05,"contribution":3.7,"source":"signal","signal_type":"noise_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"road_safety_risk","entity_id":"chiang-mai","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":63,"weight":0.05,"contribution":3.15,"source":"signal","signal_type":"transport_friction","entity_id":"chiang-mai","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"chiang-mai","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"chiang-mai","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"chiang-mai","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":78,"weight":0.015,"contribution":1.17,"source":"blueprint","signal_type":null,"entity_id":"chiang-mai","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":0,"points":0,"applied":false,"note":"All decision components are covered by live or persisted graph values."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":49,"note":"Component scores spread by 49 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"30 joined sources support this decision.","weakest_signal":{"type":"airport_transfer_support","label":"Airport transfer support is weak","reason":"Public transport structure around this airport shows 1 mapped stop(s), 1 mode group(s), 1 rail-linked stop(s), 0 airport-link stop(s), and 0 bus-linked stop(s). This is airport-ground-access support, not live airline board or queue truth."},"related_pages":[{"path":"/where-to-go/chiang-mai/","label":"Chiang Mai destination guide"},{"path":"/accommodation/chiang-mai/","label":"Where to stay in Chiang Mai"},{"path":"/food/chiang-mai-khao-soi/","label":"Chiang Mai khao soi route"},{"path":"/today/north/","label":"Northern Thailand Today"},{"path":"/food/chiang-mai-food-guide/","label":"Chiang Mai food guide"},{"path":"/temples/chiang-mai/","label":"Chiang Mai temple route"},{"path":"/research/temples/chiang-mai/","label":"Chiang Mai temple research"}],"path":"/entities/chiang-mai/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_hua-hin","decision_type":"where_to_go_today","subject_id":"hua-hin","subject_name":"Hua Hin / Cha-am","subject_type":"destination","score":50,"component_score":68.6,"penalty_points":19,"confidence":"High","label":"fragile","recommendation":"Hua Hin / Cha-am is a cautious today pick.","best_for":"Families, gentle beach days, seafood, markets, golf, and lower-friction coast access from Bangkok.","avoid_if":"You want dramatic island scenery or nightlife-heavy beach energy.","check_first":["Choose the exact beach-town base before paying.","Treat rail and road convenience as part of the value, not just background logistics.","Use Hua Hin / Cha-am when you want a calmer coast than Pattaya without island transfer risk."],"next_action":"Pick the exact beach-town base first and let rail or road convenience help decide the stay.","pivot":"Use Pattaya / Chonburi for a shorter faster coast move, or Bangkok if the weather weakens and you need city backup.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":22,"available_components":16,"live_components":15,"fallback_components":1,"defaulted_components":6,"coverage_ratio":0.727},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":66,"weight":0.16,"contribution":10.56,"source":"signal","signal_type":"aqi_risk","entity_id":"hua-hin","used_default":true,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":70,"weight":0.12,"contribution":8.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"hua-hin","used_default":true,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":68,"weight":0.22,"contribution":14.96,"source":"signal","signal_type":"rain_risk","entity_id":"hua-hin","used_default":true,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"official_pier_support","label":"Official pier support","score":60,"weight":0.02,"contribution":1.2,"source":"signal","signal_type":"official_pier_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":46,"weight":0.012,"contribution":0.55,"source":"signal","signal_type":"rail_feasibility","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is public rail-support structure around the destination, not live seat, delay, or operator-disruption truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":68,"weight":0.012,"contribution":0.82,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":58,"weight":0.012,"contribution":0.7,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":95,"weight":0.012,"contribution":1.14,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"water_risk","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"signal","signal_type":"flood_water_risk","entity_id":"hua-hin","used_default":true,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":78,"weight":0.012,"contribution":0.94,"source":"signal","signal_type":"spa_license_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"medical_fallback_support","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":80,"weight":0.012,"contribution":0.96,"source":"signal","signal_type":"park_access_context","entity_id":"hua-hin","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"hua-hin","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":66,"weight":0.05,"contribution":3.3,"source":"signal","signal_type":"road_safety_risk","entity_id":"hua-hin","used_default":true,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":70,"weight":0.05,"contribution":3.5,"source":"signal","signal_type":"transport_friction","entity_id":"hua-hin","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"hua-hin","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"hua-hin","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"hua-hin","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":75,"weight":0.015,"contribution":1.13,"source":"blueprint","signal_type":null,"entity_id":"hua-hin","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":6,"points":10,"applied":true,"note":"6 component(s) used fallback defaults, so the engine applies a 10-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":42,"note":"Component scores spread by 42 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["aqi_fit","outdoor_comfort","rain_risk","water_risk","noise_comfort","road_safety"],"source_summary":"22 joined sources support this decision.","weakest_signal":{"type":"rail_feasibility","label":"Rail feasibility is thin","reason":"Public transport structure around this destination shows 3 mapped stop(s), 1 rail-linked stop(s), 0 airport-link stop(s), and 2 bus-linked stop(s). This is rail-support context, not live seat, delay, or operator-disruption truth."},"related_pages":[{"path":"/where-to-go/hua-hin/","label":"Hua Hin / Cha-am destination guide"},{"path":"/venues/restaurants/","label":"Thailand restaurant venue layer"},{"path":"/rail/","label":"Thailand rail layer"},{"path":"/accommodation/hua-hin/","label":"Hua Hin / Cha-am stay guide"},{"path":"/temples/hua-hin-cha-am/","label":"Hua Hin / Cha-am temple route"},{"path":"/research/temples/hua-hin-cha-am/","label":"Hua Hin / Cha-am temple research"}],"path":"/entities/hua-hin/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_isaan","decision_type":"where_to_go_today","subject_id":"isaan","subject_name":"Isaan","subject_type":"destination","score":62,"component_score":73.1,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Isaan is a cautious today pick.","best_for":"Repeat visitors, regional food, and deeper province-level travel.","avoid_if":"You want one obvious first-trip infrastructure answer.","check_first":["Treat province choice as the real decision, not just the region label.","Use Khon Kaen, Ubon, Nong Khai, or Korat as actual anchors.","Do not expect first-trip infrastructure everywhere."],"next_action":"Choose one actual province cluster instead of treating the whole region as a single stop.","pivot":"Use Bangkok as the setup base, then move east only when the trip length justifies it.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":17,"available_components":16,"live_components":15,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.941},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"isaan","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"isaan","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":54,"weight":0.22,"contribution":11.88,"source":"signal","signal_type":"rain_risk","entity_id":"isaan","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"water_risk","label":"Water and flood fit","score":76,"weight":0.08,"contribution":6.08,"source":"signal","signal_type":"flood_water_risk","entity_id":"isaan","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"medical_fallback_support","label":"Medical fallback support","score":78,"weight":0.012,"contribution":0.94,"source":"signal","signal_type":"medical_fallback_support","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"park_access_context","entity_id":"isaan","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"isaan","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":76,"weight":0.05,"contribution":3.8,"source":"signal","signal_type":"road_safety_risk","entity_id":"isaan","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":58,"weight":0.05,"contribution":2.9,"source":"signal","signal_type":"transport_friction","entity_id":"isaan","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":91,"weight":0.03,"contribution":2.73,"source":"signal","signal_type":"source_confidence","entity_id":"isaan","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"isaan","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"isaan","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":71,"weight":0.015,"contribution":1.06,"source":"blueprint","signal_type":null,"entity_id":"isaan","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":49,"note":"Component scores spread by 49 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"23 joined sources support this decision.","weakest_signal":{"type":"regional_disaster_context","label":"Regional disaster context is busy","reason":"GDACS currently shows 4 active hazard groups across 32 tracked events. This is a route-confidence layer, not a local place safety verdict."},"related_pages":[{"path":"/where-to-go/isaan/","label":"Isaan destination guide"},{"path":"/food/isaan-food-for-first-timers/","label":"Isaan food guide"},{"path":"/food/isaan-food-guide/","label":"Isaan food guide"}],"path":"/entities/isaan/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_kanchanaburi","decision_type":"where_to_go_today","subject_id":"kanchanaburi","subject_name":"Kanchanaburi","subject_type":"destination","score":59,"component_score":69.6,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Kanchanaburi is a cautious today pick.","best_for":"River, rail-history, and light nature detours from Bangkok.","avoid_if":"The trip window is too short to absorb transfers and outdoor time.","check_first":["Check waterfall and outdoor-weather logic before paying for remote stays.","Treat the road burden honestly.","Use Bangkok or Hua Hin as lower-friction pivots."],"next_action":"Pick one river/history thread and keep waterfalls optional if rain weakens the day.","pivot":"Stay in Bangkok if road or weather comfort slips.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":18,"available_components":17,"live_components":16,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.944},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":82,"weight":0.16,"contribution":13.12,"source":"signal","signal_type":"aqi_risk","entity_id":"kanchanaburi","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":78,"weight":0.12,"contribution":9.36,"source":"signal","signal_type":"outdoor_comfort","entity_id":"kanchanaburi","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":50,"weight":0.22,"contribution":11,"source":"signal","signal_type":"rain_risk","entity_id":"kanchanaburi","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":68,"weight":0.012,"contribution":0.82,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":58,"weight":0.012,"contribution":0.7,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"water_risk","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"kanchanaburi","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context, not live speed, queue, lane, or incident truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":76,"weight":0.012,"contribution":0.91,"source":"signal","signal_type":"medical_fallback_support","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"park_access_context","entity_id":"kanchanaburi","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"kanchanaburi","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":64,"weight":0.05,"contribution":3.2,"source":"signal","signal_type":"road_safety_risk","entity_id":"kanchanaburi","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":66,"weight":0.05,"contribution":3.3,"source":"signal","signal_type":"transport_friction","entity_id":"kanchanaburi","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"kanchanaburi","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"kanchanaburi","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"kanchanaburi","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":75,"weight":0.015,"contribution":1.13,"source":"blueprint","signal_type":null,"entity_id":"kanchanaburi","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":42,"note":"Component scores spread by 42 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"18 joined sources support this decision.","weakest_signal":{"type":"regional_disaster_context","label":"Regional disaster context is busy","reason":"GDACS currently shows 4 active hazard groups across 32 tracked events. This is a route-confidence layer, not a local place safety verdict."},"related_pages":[{"path":"/where-to-go/kanchanaburi/","label":"Kanchanaburi destination guide"},{"path":"/rail/bangkok-kanchanaburi-train/","label":"Bangkok to Kanchanaburi train"},{"path":"/accommodation/kanchanaburi/","label":"Kanchanaburi stay guide"},{"path":"/temples/kanchanaburi/","label":"Kanchanaburi temple route"},{"path":"/research/temples/kanchanaburi/","label":"Kanchanaburi temple research"}],"path":"/entities/kanchanaburi/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_koh-phangan","decision_type":"where_to_go_today","subject_id":"koh-phangan","subject_name":"Koh Phangan","subject_type":"destination","score":56,"component_score":67.1,"penalty_points":11,"confidence":"High","label":"fragile","recommendation":"Koh Phangan is a cautious today pick.","best_for":"Longer Gulf stays, wellness pockets, and travelers who can tolerate ferry dependence.","avoid_if":"You have low weather tolerance or Full Moon timing is the wrong fit.","check_first":["Treat Full Moon timing as a routing signal, not a footnote.","Do not force Phangan behind a weak ferry day.","Use Samui as the softer pivot if the chain looks brittle."],"next_action":"Keep Samui as the stable fallback and avoid tight same-day transfers.","pivot":"Sleep on Samui and use Phangan as the optional second move.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":18,"available_components":17,"live_components":16,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.944},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":82,"weight":0.16,"contribution":13.12,"source":"signal","signal_type":"aqi_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":78,"weight":0.12,"contribution":9.36,"source":"signal","signal_type":"outdoor_comfort","entity_id":"koh-phangan","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":72,"weight":0.22,"contribution":15.84,"source":"signal","signal_type":"rain_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":24,"weight":0.1,"contribution":2.4,"source":"signal","signal_type":"marine_warning_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is coastal sea-state caution for ferry and beach-dependent destinations."},{"key":"pier_transfer_support","label":"Pier transfer support","score":25,"weight":0.05,"contribution":1.25,"source":"signal","signal_type":"pier_transfer_support","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is public pier and transfer structure support around coastal anchors, not operator seat or queue truth."},{"key":"official_pier_support","label":"Official pier support","score":94,"weight":0.02,"contribution":1.88,"source":"signal","signal_type":"official_pier_support","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_weather_operability","label":"Airport weather operability","score":66,"weight":0.08,"contribution":5.28,"source":"signal","signal_type":"flight_delay_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":81,"weight":0.012,"contribution":0.97,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"water_risk","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"medical_fallback_support","label":"Medical fallback support","score":70,"weight":0.012,"contribution":0.84,"source":"signal","signal_type":"medical_fallback_support","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"park_access_context","entity_id":"koh-phangan","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"koh-phangan","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":81,"weight":0.05,"contribution":4.05,"source":"signal","signal_type":"road_safety_risk","entity_id":"koh-phangan","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":58,"weight":0.05,"contribution":2.9,"source":"signal","signal_type":"transport_friction","entity_id":"koh-phangan","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":90,"weight":0.03,"contribution":2.7,"source":"signal","signal_type":"source_confidence","entity_id":"koh-phangan","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"koh-phangan","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"koh-phangan","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":69,"weight":0.015,"contribution":1.03,"source":"blueprint","signal_type":null,"entity_id":"koh-phangan","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":62,"note":"Component scores spread by 62 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"14 joined sources support this decision.","weakest_signal":{"type":"marine_warning_risk","label":"Marine warning risk is high","reason":"Regional marine context shows wave height 2.0 m, thunderstorm wave height 2.0 m, and wind around 27.5 km/h, with thunderstorm wording present. This is sea-state caution, not live operator closure truth."},"related_pages":[{"path":"/where-to-go/koh-phangan/","label":"Koh Phangan destination guide"},{"path":"/ferries/koh-samui-koh-phangan-koh-tao/","label":"Samui / Phangan / Tao ferries"}],"path":"/entities/koh-phangan/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:21:14.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_koh-samui","decision_type":"where_to_go_today","subject_id":"koh-samui","subject_name":"Koh Samui","subject_type":"destination","score":57,"component_score":67.8,"penalty_points":11,"confidence":"High","label":"fragile","recommendation":"Koh Samui is a cautious today pick.","best_for":"Comfort-first island stays with airport access and a softer Gulf pivot.","avoid_if":"You need a no-transfer beach answer or want to chain too many boats tightly.","check_first":["Compare Gulf weather directly with the Andaman coast.","Use Samui itself as the stable base before adding Phangan or Tao.","Check airport-plus-ferry stacks before paying for tight itineraries."],"next_action":"Compare Gulf weather directly with Phuket and Krabi before locking the coast.","pivot":"Use Bangkok or Phuket if flights and ferries stack badly.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":21,"available_components":20,"live_components":19,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.952},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":82,"weight":0.16,"contribution":13.12,"source":"signal","signal_type":"aqi_risk","entity_id":"koh-samui","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":78,"weight":0.12,"contribution":9.36,"source":"signal","signal_type":"outdoor_comfort","entity_id":"koh-samui","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":72,"weight":0.22,"contribution":15.84,"source":"signal","signal_type":"rain_risk","entity_id":"koh-samui","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":24,"weight":0.1,"contribution":2.4,"source":"signal","signal_type":"marine_warning_risk","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is coastal sea-state caution for ferry and beach-dependent destinations."},{"key":"pier_transfer_support","label":"Pier transfer support","score":25,"weight":0.05,"contribution":1.25,"source":"signal","signal_type":"pier_transfer_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is public pier and transfer structure support around coastal anchors, not operator seat or queue truth."},{"key":"official_pier_support","label":"Official pier support","score":94,"weight":0.02,"contribution":1.88,"source":"signal","signal_type":"official_pier_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_weather_operability","label":"Airport weather operability","score":66,"weight":0.08,"contribution":5.28,"source":"signal","signal_type":"flight_delay_risk","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":68,"weight":0.012,"contribution":0.82,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":58,"weight":0.012,"contribution":0.7,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":81,"weight":0.012,"contribution":0.97,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"water_risk","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"koh-samui","used_default":false,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":86,"weight":0.012,"contribution":1.03,"source":"signal","signal_type":"spa_license_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"medical_fallback_support","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":86,"weight":0.012,"contribution":1.03,"source":"signal","signal_type":"park_access_context","entity_id":"koh-samui","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"koh-samui","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":81,"weight":0.05,"contribution":4.05,"source":"signal","signal_type":"road_safety_risk","entity_id":"koh-samui","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":61,"weight":0.05,"contribution":3.05,"source":"signal","signal_type":"transport_friction","entity_id":"koh-samui","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"koh-samui","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"koh-samui","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"koh-samui","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":77,"weight":0.015,"contribution":1.16,"source":"blueprint","signal_type":null,"entity_id":"koh-samui","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":62,"note":"Component scores spread by 62 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"20 joined sources support this decision.","weakest_signal":{"type":"marine_warning_risk","label":"Marine warning risk is high","reason":"Regional marine context shows wave height 2.0 m, thunderstorm wave height 2.0 m, and wind around 27.5 km/h, with thunderstorm wording present. This is sea-state caution, not live operator closure truth."},"related_pages":[{"path":"/where-to-go/koh-samui/","label":"Koh Samui destination guide"},{"path":"/accommodation/koh-samui/","label":"Where to stay in Koh Samui"},{"path":"/ferries/koh-samui-koh-phangan-koh-tao/","label":"Samui / Phangan / Tao ferries"}],"path":"/entities/koh-samui/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_krabi","decision_type":"where_to_go_today","subject_id":"krabi","subject_name":"Krabi","subject_type":"destination","score":55,"component_score":68.2,"penalty_points":13,"confidence":"High","label":"fragile","recommendation":"Krabi is a cautious today pick.","best_for":"Scenery-heavy beach trips when boats are a bonus instead of a requirement.","avoid_if":"You are forcing every day through a pier.","check_first":["Do not treat every day as a boat day.","Pick Ao Nang for logistics unless scenery alone justifies a more fragile base.","Keep Phuket as the infrastructure pivot if weather worsens."],"next_action":"Choose Ao Nang for logistics and keep one non-boat day in reserve.","pivot":"Use Phuket if the coast weakens but you still want the Andaman.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":24,"available_components":22,"live_components":21,"fallback_components":1,"defaulted_components":2,"coverage_ratio":0.917},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"krabi","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"krabi","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":54,"weight":0.22,"contribution":11.88,"source":"signal","signal_type":"rain_risk","entity_id":"krabi","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":16,"weight":0.1,"contribution":1.6,"source":"signal","signal_type":"marine_warning_risk","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is coastal sea-state caution for ferry and beach-dependent destinations."},{"key":"pier_transfer_support","label":"Pier transfer support","score":78,"weight":0.05,"contribution":3.9,"source":"signal","signal_type":"pier_transfer_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is public pier and transfer structure support around coastal anchors, not operator seat or queue truth."},{"key":"official_pier_support","label":"Official pier support","score":78,"weight":0.02,"contribution":1.56,"source":"signal","signal_type":"official_pier_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_weather_operability","label":"Airport weather operability","score":90,"weight":0.08,"contribution":7.2,"source":"signal","signal_type":"flight_delay_risk","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"airport_transfer_support","label":"Airport transfer support","score":47,"weight":0.012,"contribution":0.56,"source":"signal","signal_type":"airport_transfer_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":68,"weight":0.012,"contribution":0.82,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":58,"weight":0.012,"contribution":0.7,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":89,"weight":0.012,"contribution":1.07,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"water_risk","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"signal","signal_type":"flood_water_risk","entity_id":"krabi","used_default":true,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":76,"weight":0.012,"contribution":0.91,"source":"signal","signal_type":"spa_license_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":86,"weight":0.012,"contribution":1.03,"source":"signal","signal_type":"medical_fallback_support","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"park_access_context","entity_id":"krabi","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"krabi","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":48,"weight":0.05,"contribution":2.4,"source":"signal","signal_type":"road_safety_risk","entity_id":"krabi","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"transport_friction","entity_id":"krabi","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"krabi","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"krabi","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"krabi","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":76,"weight":0.015,"contribution":1.14,"source":"blueprint","signal_type":null,"entity_id":"krabi","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":2,"points":4,"applied":true,"note":"2 component(s) used fallback defaults, so the engine applies a 4-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":79,"note":"Component scores spread by 79 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_risk","noise_comfort"],"source_summary":"21 joined sources support this decision.","weakest_signal":{"type":"marine_warning_risk","label":"Marine warning risk is high","reason":"Regional marine context shows wave height 2.5 m, thunderstorm wave height 3.0 m, and wind around 30.0 km/h, with thunderstorm wording present. This is sea-state caution, not live operator closure truth."},"related_pages":[{"path":"/where-to-go/krabi/","label":"Krabi destination guide"},{"path":"/accommodation/krabi/","label":"Where to stay in Krabi"},{"path":"/ferries/krabi-koh-lanta/","label":"Krabi to Koh Lanta ferries"},{"path":"/food/southern-thai-food-for-beach-trips/","label":"Krabi food guide"},{"path":"/temples/krabi/","label":"Krabi temple route"},{"path":"/research/temples/krabi/","label":"Krabi temple research"}],"path":"/entities/krabi/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_pai","decision_type":"where_to_go_today","subject_id":"pai","subject_name":"Pai","subject_type":"destination","score":56,"component_score":68.7,"penalty_points":13,"confidence":"High","label":"fragile","recommendation":"Pai is a cautious today pick.","best_for":"Mountain slow travel when the north is clean and the group accepts road burden.","avoid_if":"PM2.5 is high, rain is heavy, or carsickness tolerance is low.","check_first":["Treat Pai as optional, not mandatory.","Use Chiang Mai AQI as the minimum smoke reality check.","Avoid forcing Pai into a rushed route."],"next_action":"Treat Pai as optional and do not buy it emotionally before checking the air.","pivot":"Keep Chiang Mai itself as the stable plan.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":13,"available_components":11,"live_components":10,"fallback_components":1,"defaulted_components":2,"coverage_ratio":0.846},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":92,"weight":0.16,"contribution":14.72,"source":"signal","signal_type":"aqi_risk","entity_id":"pai","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":95,"weight":0.12,"contribution":11.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"pai","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":54,"weight":0.22,"contribution":11.88,"source":"signal","signal_type":"rain_risk","entity_id":"pai","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"water_risk","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"signal","signal_type":"flood_water_risk","entity_id":"pai","used_default":true,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"medical_fallback_support","label":"Medical fallback support","score":64,"weight":0.012,"contribution":0.77,"source":"signal","signal_type":"medical_fallback_support","entity_id":"pai","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":92,"weight":0.012,"contribution":1.1,"source":"signal","signal_type":"park_access_context","entity_id":"pai","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"pai","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":37,"weight":0.05,"contribution":1.85,"source":"signal","signal_type":"road_safety_risk","entity_id":"pai","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":51,"weight":0.05,"contribution":2.55,"source":"signal","signal_type":"transport_friction","entity_id":"pai","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":90,"weight":0.03,"contribution":2.7,"source":"signal","signal_type":"source_confidence","entity_id":"pai","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"pai","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"pai","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":63,"weight":0.015,"contribution":0.94,"source":"blueprint","signal_type":null,"entity_id":"pai","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":2,"points":4,"applied":true,"note":"2 component(s) used fallback defaults, so the engine applies a 4-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":58,"note":"Component scores spread by 58 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_risk","noise_comfort"],"source_summary":"10 joined sources support this decision.","weakest_signal":{"type":"road_safety_risk","label":"Road safety burden is high","reason":"28 deaths and 990 injuries are attached to this province proxy year to date. Province burden percentile 92"},"related_pages":[{"path":"/where-to-go/pai/","label":"Pai destination guide"},{"path":"/routes/chiang-mai-pai-chiang-rai/","label":"Chiang Mai / Pai / Chiang Rai route"},{"path":"/accommodation/pai/","label":"Pai stay guide"},{"path":"/food/chiang-mai-food-guide/","label":"Pai food guide"},{"path":"/temples/pai/","label":"Pai temple route"},{"path":"/research/temples/pai/","label":"Pai temple research"}],"path":"/entities/pai/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:21:14.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_pattaya-chonburi","decision_type":"where_to_go_today","subject_id":"pattaya-chonburi","subject_name":"Pattaya / Chonburi","subject_type":"destination","score":52,"component_score":70.9,"penalty_points":19,"confidence":"High","label":"fragile","recommendation":"Pattaya / Chonburi is a cautious today pick.","best_for":"Quick coast pivots from Bangkok, nightlife, seafood, and short beach breaks with strong fallback infrastructure.","avoid_if":"You want remote island mood, low traffic, or a quiet hotel-first coast stay.","check_first":["Treat weekend traffic as a real input, not a footnote.","Pick the beach or hotel zone before the hotel brand.","Use Pattaya / Chonburi when you want coast access without island-transfer fragility."],"next_action":"Choose the hotel zone before the brand, and let weekend traffic shape the real coast call.","pivot":"Use Hua Hin / Cha-am for a calmer coast, or stay in Bangkok if the sea-air mood is not worth the road burden.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":22,"available_components":16,"live_components":15,"fallback_components":1,"defaulted_components":6,"coverage_ratio":0.727},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":66,"weight":0.16,"contribution":10.56,"source":"signal","signal_type":"aqi_risk","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":70,"weight":0.12,"contribution":8.4,"source":"signal","signal_type":"outdoor_comfort","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":68,"weight":0.22,"contribution":14.96,"source":"signal","signal_type":"rain_risk","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"official_pier_support","label":"Official pier support","score":82,"weight":0.02,"contribution":1.64,"source":"signal","signal_type":"official_pier_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_weather_operability","label":"Airport weather operability","score":93,"weight":0.08,"contribution":7.44,"source":"signal","signal_type":"flight_delay_risk","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.012,"contribution":0.38,"source":"signal","signal_type":"airport_transfer_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":78,"weight":0.012,"contribution":0.94,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":90,"weight":0.012,"contribution":1.08,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"water_risk","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"signal","signal_type":"flood_water_risk","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":80,"weight":0.012,"contribution":0.96,"source":"signal","signal_type":"spa_license_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":94,"weight":0.012,"contribution":1.13,"source":"signal","signal_type":"medical_fallback_support","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"noise_comfort","label":"Noise comfort","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"noise_risk","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":66,"weight":0.05,"contribution":3.3,"source":"signal","signal_type":"road_safety_risk","entity_id":"pattaya-chonburi","used_default":true,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"transport_friction","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":74,"weight":0.015,"contribution":1.11,"source":"blueprint","signal_type":null,"entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":6,"points":10,"applied":true,"note":"6 component(s) used fallback defaults, so the engine applies a 10-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":47,"note":"Component scores spread by 47 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["aqi_fit","outdoor_comfort","rain_risk","water_risk","noise_comfort","road_safety"],"source_summary":"21 joined sources support this decision.","weakest_signal":{"type":"airport_transfer_support","label":"Airport transfer support is weak","reason":"Public transport structure around this airport shows 1 mapped stop(s), 1 mode group(s), 0 rail-linked stop(s), 0 airport-link stop(s), and 1 bus-linked stop(s). This is airport-ground-access support, not live airline board or queue truth."},"related_pages":[{"path":"/where-to-go/pattaya-chonburi/","label":"Pattaya / Chonburi destination guide"},{"path":"/venues/nightlife/","label":"Thailand nightlife venue layer"},{"path":"/venues/restaurants/","label":"Thailand restaurant venue layer"},{"path":"/accommodation/pattaya/","label":"Pattaya / Chonburi stay guide"},{"path":"/food/pattaya-food-route/","label":"Pattaya / Chonburi food guide"},{"path":"/temples/pattaya/","label":"Pattaya / Chonburi temple route"},{"path":"/research/temples/pattaya/","label":"Pattaya / Chonburi temple research"}],"path":"/entities/pattaya-chonburi/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"today_phuket","decision_type":"where_to_go_today","subject_id":"phuket","subject_name":"Phuket","subject_type":"destination","score":56,"component_score":66.8,"penalty_points":11,"confidence":"High","label":"fragile","recommendation":"Phuket is a cautious today pick.","best_for":"Infrastructure-first beach trips, flights, and weather backup.","avoid_if":"You want a fragile island mood more than an easy base.","check_first":["Choose the beach area before the hotel.","Check marine and weather layers before committing to boat-heavy days.","Use Old Town as the indoor and food pivot when beach weather weakens."],"next_action":"Choose the beach area before the hotel, then decide which boat days can stay optional.","pivot":"Use Old Town as the indoor-food fallback or Samui if Gulf weather wins.","freshness_class":"expired","score_formula_version":"same-day-signal-v3","signal_coverage":{"total_components":28,"available_components":27,"live_components":26,"fallback_components":1,"defaulted_components":1,"coverage_ratio":0.964},"score_components":[{"key":"aqi_fit","label":"AQI fit","score":82,"weight":0.16,"contribution":13.12,"source":"signal","signal_type":"aqi_risk","entity_id":"phuket","used_default":false,"default_reason":"AQI risk missing; using conservative destination fallback.","note":""},{"key":"outdoor_comfort","label":"Outdoor comfort","score":78,"weight":0.12,"contribution":9.36,"source":"signal","signal_type":"outdoor_comfort","entity_id":"phuket","used_default":false,"default_reason":"Outdoor comfort missing; using conservative fallback.","note":""},{"key":"rain_risk","label":"Rain fit","score":54,"weight":0.22,"contribution":11.88,"source":"signal","signal_type":"rain_risk","entity_id":"phuket","used_default":false,"default_reason":"Rain fit missing; using conservative fallback.","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":16,"weight":0.1,"contribution":1.6,"source":"signal","signal_type":"marine_warning_risk","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is coastal sea-state caution for ferry and beach-dependent destinations."},{"key":"pier_transfer_support","label":"Pier transfer support","score":47,"weight":0.05,"contribution":2.35,"source":"signal","signal_type":"pier_transfer_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is public pier and transfer structure support around coastal anchors, not operator seat or queue truth."},{"key":"official_pier_support","label":"Official pier support","score":96,"weight":0.02,"contribution":1.92,"source":"signal","signal_type":"official_pier_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around coastal anchors, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_weather_operability","label":"Airport weather operability","score":93,"weight":0.08,"contribution":7.44,"source":"signal","signal_type":"flight_delay_risk","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is airport weather and forecast disruption context, not airline on-time performance."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.012,"contribution":0.38,"source":"signal","signal_type":"airport_transfer_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is ground-access support around the main airport anchor linked to the destination, not a live airline board."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.012,"contribution":0.5,"source":"signal","signal_type":"airport_ground_service_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official airport taxi, Grab, rental, and pickup-rule context around the main airport anchor, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_board_surface_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official passenger self-serve board visibility from public AOT flight-status pages. The board rows themselves use a browser turnstile token, so this is not direct live airline status truth."},{"key":"airport_scale_context","label":"Airport scale context","score":63,"weight":0.012,"contribution":0.76,"source":"signal","signal_type":"airport_scale_context","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official AOT passenger and aircraft-movement scale context behind the main airport anchor, not live delay, gate, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"airport_environmental_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is SET-hosted AOT annual-report disclosure context around the main airport anchor, not live measured sound-level truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":78,"weight":0.012,"contribution":0.94,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support for overland bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":77,"weight":0.012,"contribution":0.92,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support for intercity-bus planning, not live departure, seat, or booking truth."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support for intercity-bus planning, not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":89,"weight":0.012,"contribution":1.07,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context, not local realtime service quality, dispatch, or incident truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":84,"weight":0.012,"contribution":1.01,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"water_risk","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"signal","signal_type":"flood_water_risk","entity_id":"phuket","used_default":true,"default_reason":"Water-risk signal missing; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":82,"weight":0.012,"contribution":0.98,"source":"signal","signal_type":"spa_license_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.012,"contribution":1.15,"source":"signal","signal_type":"medical_fallback_support","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"park_access_context","label":"Park access context","score":88,"weight":0.012,"contribution":1.06,"source":"signal","signal_type":"park_access_context","entity_id":"phuket","used_default":false,"default_reason":"","note":"This is public DNP protected-area planning context, not live closure, ranger, capacity, or ticket truth."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.05,"contribution":3.7,"source":"signal","signal_type":"noise_risk","entity_id":"phuket","used_default":false,"default_reason":"Noise-risk signal missing; using conservative fallback.","note":""},{"key":"road_safety","label":"Road safety","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"road_safety_risk","entity_id":"phuket","used_default":false,"default_reason":"Road-risk signal missing; using conservative fallback.","note":""},{"key":"transport_friction","label":"Transport friction","score":61,"weight":0.05,"contribution":3.05,"source":"signal","signal_type":"transport_friction","entity_id":"phuket","used_default":false,"default_reason":"Transport-friction signal missing; using conservative fallback.","note":""},{"key":"source_confidence","label":"Source confidence","score":97,"weight":0.03,"contribution":2.91,"source":"signal","signal_type":"source_confidence","entity_id":"phuket","used_default":false,"default_reason":"Source-confidence signal missing; using conservative fallback.","note":""},{"key":"disaster_context","label":"Disaster context","score":46,"weight":0.1,"contribution":4.6,"source":"signal","signal_type":"regional_disaster_context","entity_id":"phuket","used_default":false,"default_reason":"Disaster context missing; using conservative fallback.","note":""},{"key":"earthquake_context","label":"Earthquake context","score":82,"weight":0.03,"contribution":2.46,"source":"signal","signal_type":"regional_earthquake_context","entity_id":"phuket","used_default":false,"default_reason":"Earthquake context missing; using conservative fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":82,"weight":0.015,"contribution":1.23,"source":"blueprint","signal_type":null,"entity_id":"phuket","used_default":false,"default_reason":"Blueprint seed score missing; using live average as the fallback baseline.","note":"Blueprint baseline is now a light fallback and copy anchor, not the primary scoring driver."}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"fresh","points":0,"applied":false,"note":"Signals are fresh enough that no freshness penalty applies."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":1,"points":2,"applied":true,"note":"1 component(s) used fallback defaults, so the engine applies a 2-point coverage penalty."},{"key":"contradiction_penalty","label":"Same-day signal spread penalty","points":9,"applied":true,"spread":77,"note":"Component scores spread by 77 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_risk"],"source_summary":"27 joined sources support this decision.","weakest_signal":{"type":"marine_warning_risk","label":"Marine warning risk is high","reason":"Regional marine context shows wave height 2.5 m, thunderstorm wave height 3.0 m, and wind around 30.0 km/h, with thunderstorm wording present. This is sea-state caution, not live operator closure truth."},"related_pages":[{"path":"/where-to-go/phuket/","label":"Phuket destination guide"},{"path":"/accommodation/phuket/","label":"Where to stay in Phuket"},{"path":"/venues/restaurants/phuket/","label":"Phuket restaurants"},{"path":"/ferries/phuket-krabi/","label":"Phuket to Krabi ferries"},{"path":"/food/phuket-food-route/","label":"Phuket food guide"},{"path":"/temples/phuket/","label":"Phuket temple route"},{"path":"/research/temples/phuket/","label":"Phuket temple research"}],"path":"/entities/phuket/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-22T23:51:47.642Z","freshness":"expired","data_current":false,"expired":true}],"data_status":{"generated_at":"2026-08-22T17:51:47.142Z","freshness":"expired","is_current":false,"row_count":12,"current_row_count":0,"expired_row_count":12,"row_freshness_counts":{"fresh":0,"aging":0,"stale":0,"expired":12,"unknown":0}}}