{"generated_at":"2026-08-22T17:51:47.142Z","storage":{"mode":"versioned-snapshot","snapshot_generated_at":"2026-08-22T17:51:47.142Z"},"family":{"id":"where-to-stay","name":"Where to stay","decisionType":"where_to_stay","status":"active","endpoint":"/api/decisions/where-to-stay","note":"Ranks hotel-area entities using comfort, source confidence, parent-destination resilience, airport-ground-access support, official airport pickup-rule context, airport board-surface support, airport-scale context, airport environmental-support context, rail-support context, and official rail presence where they materially affect the stay.","output":"Best current hotel bases and who they fit."},"decision_count":17,"filters":{"destination":"","route":"","limit":50},"rows":[{"decision_id":"stay_ao-nang","decision_type":"where_to_stay","subject_id":"ao-nang","subject_name":"Ao Nang","subject_type":"hotel_area","parent_destination_id":"krabi","parent_destination_name":"Krabi","score":60,"component_score":73.3,"penalty_points":13,"confidence":"High","label":"mixed","recommendation":"Ao Nang needs a more intentional fit before you book it.","best_for":"First-time Krabi stays, tour logistics, and coast trips that need a practical backup plan.","avoid_if":"You only want scenery payoff and hate any resort-strip convenience.","check_first":["Choose Ao Nang when practical coast access matters more than perfect scenery mood.","Keep one non-boat day available.","Do not confuse a scenic promo photo with a resilient base."],"next_action":"Use Ao Nang when the coast needs to stay usable even if one boat day weakens.","pivot":"Use Railay only when the scenery premium is worth the fragility.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":18,"available_components":16,"live_components":13,"fallback_components":5,"defaulted_components":2,"coverage_ratio":0.889},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"ao-nang","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"ao-nang","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"ao-nang","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"ao-nang","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":61,"weight":0.14,"contribution":8.54,"source":"signal","signal_type":"transport_friction","entity_id":"ao-nang","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":78,"weight":0.04,"contribution":3.12,"source":"signal","signal_type":"spa_license_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"medical_fallback_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":54,"weight":0.04,"contribution":2.16,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":75,"weight":0.04,"contribution":3,"source":"signal","signal_type":"pier_transfer_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":76,"weight":0.05,"contribution":3.8,"source":"signal","signal_type":"official_pier_support","entity_id":"ao-nang","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":47,"weight":0.06,"contribution":2.82,"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 behind this stay decision."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"ao-nang","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":55,"weight":0.16,"contribution":8.8,"source":"decision","signal_type":null,"entity_id":"krabi","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":80,"weight":0.04,"contribution":3.2,"source":"blueprint","signal_type":null,"entity_id":"ao-nang","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":50,"note":"Component scores spread by 50 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort","water_fit"],"source_summary":"16 joined sources support this decision.","path":"/entities/ao-nang/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_ari","decision_type":"where_to_stay","subject_id":"ari","subject_name":"Ari","subject_type":"hotel_area","parent_destination_id":"bangkok","parent_destination_name":"Bangkok","score":70,"component_score":81.1,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Ari is a good current hotel base.","best_for":"Repeat visitors, calmer mornings, cafes, and BTS-linked Bangkok without peak nightlife pressure.","avoid_if":"You want the fastest first-timer checklist base or temple-heavy days every morning.","check_first":["Use Ari when the trip wants calmer mornings and fewer nightlife penalties.","Keep temple-heavy or river-heavy days separate instead of forcing cross-city hops.","Choose a truly BTS-linked hotel rather than a loose district label."],"next_action":"Choose a truly BTS-linked hotel and keep the trip in a smaller Bangkok orbit.","pivot":"Use Sukhumvit or Silom / Sathorn if the trip becomes more transit-heavy or nightlife-heavy.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":27,"available_components":26,"live_components":23,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.963},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"ari","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"ari","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":50,"weight":0.12,"contribution":6,"source":"signal","signal_type":"noise_risk","entity_id":"ari","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"civic_friction","label":"Civic friction","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"civic_friction","entity_id":"ari","used_default":true,"default_reason":"No local or parent civic-friction signal; using conservative fallback.","note":"Civic friction is only weighted where Bangkok district complaint statistics can inform hotel-area fit."},{"key":"rain_fit","label":"Rain fit","score":50,"weight":0.1,"contribution":5,"source":"signal","signal_type":"rain_risk","entity_id":"ari","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":85,"weight":0.14,"contribution":11.9,"source":"signal","signal_type":"transport_friction","entity_id":"ari","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":96,"weight":0.04,"contribution":3.84,"source":"signal","signal_type":"spa_license_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":96,"weight":0.06,"contribution":5.76,"source":"signal","signal_type":"rail_feasibility","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.04,"contribution":3.68,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_motorcycle_taxi_support","label":"Official motorcycle-taxi support","score":55,"weight":0.05,"contribution":2.75,"source":"signal","signal_type":"official_motorcycle_taxi_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official Bangkok motorcycle-taxi stand and driver coverage from the public DLT/data.go.th dataset around the stay zone or its parent destination, 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":87,"weight":0.05,"contribution":4.35,"source":"signal","signal_type":"taxi_pickup_dropoff_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public OTP monthly taxi GPS analytics and hotspot context around the stay zone or its parent destination, useful as aggregate pickup/dropoff support rather than live dispatch, ETA, queue, or raw trip truth."},{"key":"urban_rapid_transit_support","label":"Urban rapid-transit support","score":97,"weight":0.1,"contribution":9.7,"source":"signal","signal_type":"urban_rapid_transit_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is official BTS and MRTA route-map and service-page support around the local base, not live train headway, crowding, or outage truth."},{"key":"urban_bus_operator_support","label":"Urban bus-operator support","score":88,"weight":0.06,"contribution":5.28,"source":"signal","signal_type":"urban_bus_operator_support","entity_id":"ari","used_default":false,"default_reason":"","note":"This is public Thai Smile Group branch and depot footprint around Bangkok hotel-base entities, useful as a fallback and last-mile layer rather than live bus operations truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.06,"contribution":4.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.05,"contribution":4.8,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.04,"contribution":3.84,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":44,"weight":0.08,"contribution":3.52,"source":"signal","signal_type":"flood_water_risk","entity_id":"ari","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":63,"weight":0.16,"contribution":10.08,"source":"decision","signal_type":null,"entity_id":"bangkok","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":79,"weight":0.04,"contribution":3.16,"source":"blueprint","signal_type":null,"entity_id":"ari","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":53,"note":"Component scores spread by 53 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["civic_friction"],"source_summary":"40 joined sources support this decision.","path":"/entities/ari/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:40:00.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_bophut-fishermans-village","decision_type":"where_to_stay","subject_id":"bophut-fishermans-village","subject_name":"Bophut / Fisherman's Village","subject_type":"hotel_area","parent_destination_id":"koh-samui","parent_destination_name":"Koh Samui","score":63,"component_score":74.1,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Bophut / Fisherman's Village needs a more intentional fit before you book it.","best_for":"Balanced Samui comfort, families, and evening walks without maximum party energy.","avoid_if":"You need Samui only as a launchpad for a fragile island chain.","check_first":["Use Bophut when you want Samui to be the stable base.","Keep Chaweng only for bigger nightlife needs.","Do not chain extra boats without checking the weather stack."],"next_action":"Keep Samui itself as the stable base before adding extra ferries.","pivot":"Use Bangkok if the transfer stack becomes the whole problem.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":16,"available_components":15,"live_components":12,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.938},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"bophut-fishermans-village","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":72,"weight":0.1,"contribution":7.2,"source":"signal","signal_type":"rain_risk","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":62,"weight":0.14,"contribution":8.68,"source":"signal","signal_type":"transport_friction","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":84,"weight":0.04,"contribution":3.36,"source":"signal","signal_type":"spa_license_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":84,"weight":0.05,"contribution":4.2,"source":"signal","signal_type":"medical_fallback_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":68,"weight":0.05,"contribution":3.4,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":58,"weight":0.04,"contribution":2.32,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":77,"weight":0.04,"contribution":3.08,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":22,"weight":0.04,"contribution":0.88,"source":"signal","signal_type":"pier_transfer_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":90,"weight":0.05,"contribution":4.5,"source":"signal","signal_type":"official_pier_support","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"water_fit","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":57,"weight":0.16,"contribution":9.12,"source":"decision","signal_type":null,"entity_id":"koh-samui","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":80,"weight":0.04,"contribution":3.2,"source":"blueprint","signal_type":null,"entity_id":"bophut-fishermans-village","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":75,"note":"Component scores spread by 75 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"17 joined sources support this decision.","path":"/entities/bophut-fishermans-village/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:00:00.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_central-hua-hin-khao-takiab","decision_type":"where_to_stay","subject_id":"central-hua-hin-khao-takiab","subject_name":"Central Hua Hin / Khao Takiab","subject_type":"hotel_area","parent_destination_id":"hua-hin","parent_destination_name":"Hua Hin / Cha-am","score":55,"component_score":69.9,"penalty_points":15,"confidence":"High","label":"fragile","recommendation":"Central Hua Hin / Khao Takiab needs a more intentional fit before you book it.","best_for":"Families, calmer beach-town pacing, seafood, and hotel stays that value rail or road simplicity over nightlife.","avoid_if":"You need nightlife density or a highly compact walk-everywhere beach strip.","check_first":["Use this base when calm beach-town logic matters more than nightlife.","Check station or road transfer time before paying if arrival day is tight.","Treat Cha-am as a separate feel, not the same strip."],"next_action":"Choose the exact part of Hua Hin or Khao Takiab before paying, especially on holiday weekends.","pivot":"Use Pattaya / Chonburi if the trip needs a shorter coast hop and more late-night energy.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":18,"available_components":15,"live_components":12,"fallback_components":6,"defaulted_components":3,"coverage_ratio":0.833},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":68,"weight":0.18,"contribution":12.24,"source":"derived","signal_type":null,"entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"central-hua-hin-khao-takiab","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":68,"weight":0.1,"contribution":6.8,"source":"derived","signal_type":"rain_risk","entity_id":"central-hua-hin-khao-takiab","used_default":true,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":58,"weight":0.14,"contribution":8.12,"source":"signal","signal_type":"transport_friction","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":78,"weight":0.04,"contribution":3.12,"source":"signal","signal_type":"spa_license_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":82,"weight":0.05,"contribution":4.1,"source":"signal","signal_type":"medical_fallback_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":39,"weight":0.06,"contribution":2.34,"source":"signal","signal_type":"rail_feasibility","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":54,"weight":0.04,"contribution":2.16,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":95,"weight":0.03,"contribution":2.85,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_pier_support","label":"Official pier support","score":58,"weight":0.05,"contribution":2.9,"source":"signal","signal_type":"official_pier_support","entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"central-hua-hin-khao-takiab","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":50,"weight":0.16,"contribution":8,"source":"decision","signal_type":null,"entity_id":"hua-hin","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":79,"weight":0.04,"contribution":3.16,"source":"blueprint","signal_type":null,"entity_id":"central-hua-hin-khao-takiab","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":3,"points":6,"applied":true,"note":"3 component(s) used fallback defaults, so the engine applies a 6-point coverage penalty."},{"key":"contradiction_penalty","label":"Stay contradiction 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":["noise_comfort","rain_fit","water_fit"],"source_summary":"17 joined sources support this decision.","path":"/entities/central-hua-hin-khao-takiab/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_central-pattaya-jomtien","decision_type":"where_to_stay","subject_id":"central-pattaya-jomtien","subject_name":"Central Pattaya / Jomtien","subject_type":"hotel_area","parent_destination_id":"pattaya-chonburi","parent_destination_name":"Pattaya / Chonburi","score":57,"component_score":72,"penalty_points":15,"confidence":"High","label":"fragile","recommendation":"Central Pattaya / Jomtien needs a more intentional fit before you book it.","best_for":"Short coast breaks, hotel convenience, beach access, and nightlife flexibility with a practical Bangkok escape shape.","avoid_if":"You are sleep-sensitive, crowd-averse, or want all beach time without traffic tradeoffs.","check_first":["Choose the exact zone before the hotel.","Use Jomtien when sleep and softer pacing matter more than nightlife.","Do not assume all Pattaya-area hotels have the same return-route convenience."],"next_action":"Decide whether nightlife or sleep matters more before choosing Central Pattaya versus Jomtien.","pivot":"Use Hua Hin / Cha-am for a calmer hotel rhythm.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":18,"available_components":15,"live_components":12,"fallback_components":6,"defaulted_components":3,"coverage_ratio":0.833},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":68,"weight":0.18,"contribution":12.24,"source":"derived","signal_type":null,"entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"central-pattaya-jomtien","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":68,"weight":0.1,"contribution":6.8,"source":"derived","signal_type":"rain_risk","entity_id":"central-pattaya-jomtien","used_default":true,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":56,"weight":0.14,"contribution":7.84,"source":"signal","signal_type":"transport_friction","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":80,"weight":0.04,"contribution":3.2,"source":"signal","signal_type":"spa_license_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":94,"weight":0.05,"contribution":4.7,"source":"signal","signal_type":"medical_fallback_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":72,"weight":0.05,"contribution":3.6,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":86,"weight":0.04,"contribution":3.44,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_pier_support","label":"Official pier support","score":80,"weight":0.05,"contribution":4,"source":"signal","signal_type":"official_pier_support","entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.06,"contribution":1.92,"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 behind this stay decision."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"central-pattaya-jomtien","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":52,"weight":0.16,"contribution":8.32,"source":"decision","signal_type":null,"entity_id":"pattaya-chonburi","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":77,"weight":0.04,"contribution":3.08,"source":"blueprint","signal_type":null,"entity_id":"central-pattaya-jomtien","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":3,"points":6,"applied":true,"note":"3 component(s) used fallback defaults, so the engine applies a 6-point coverage penalty."},{"key":"contradiction_penalty","label":"Stay contradiction penalty","points":9,"applied":true,"spread":65,"note":"Component scores spread by 65 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort","rain_fit","water_fit"],"source_summary":"17 joined sources support this decision.","path":"/entities/central-pattaya-jomtien/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_chaweng","decision_type":"where_to_stay","subject_id":"chaweng","subject_name":"Chaweng","subject_type":"hotel_area","parent_destination_id":"koh-samui","parent_destination_name":"Koh Samui","score":63,"component_score":73.8,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Chaweng needs a more intentional fit before you book it.","best_for":"Short Samui stays, nightlife, hotel choice, and airport convenience.","avoid_if":"Quiet sleep matters more than service density.","check_first":["Choose Chaweng when service density and evening energy matter more than quiet sleep.","Do not overpay for Chaweng if the trip is really a calm beach reset.","Keep Bophut or Lamai visible as the softer pivot."],"next_action":"Choose Chaweng only when the trip really wants energy and easy services close by.","pivot":"Use Bophut or Lamai when Samui needs a softer base.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":16,"available_components":15,"live_components":12,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.938},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"chaweng","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"chaweng","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"chaweng","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":72,"weight":0.1,"contribution":7.2,"source":"signal","signal_type":"rain_risk","entity_id":"chaweng","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":63,"weight":0.14,"contribution":8.82,"source":"signal","signal_type":"transport_friction","entity_id":"chaweng","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":82,"weight":0.04,"contribution":3.28,"source":"signal","signal_type":"spa_license_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":84,"weight":0.05,"contribution":4.2,"source":"signal","signal_type":"medical_fallback_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":54,"weight":0.04,"contribution":2.16,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":77,"weight":0.04,"contribution":3.08,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":25,"weight":0.04,"contribution":1,"source":"signal","signal_type":"pier_transfer_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":90,"weight":0.05,"contribution":4.5,"source":"signal","signal_type":"official_pier_support","entity_id":"chaweng","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"water_fit","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"chaweng","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":57,"weight":0.16,"contribution":9.12,"source":"decision","signal_type":null,"entity_id":"koh-samui","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":78,"weight":0.04,"contribution":3.12,"source":"blueprint","signal_type":null,"entity_id":"chaweng","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":72,"note":"Component scores spread by 72 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"17 joined sources support this decision.","path":"/entities/chaweng/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_kata-karon","decision_type":"where_to_stay","subject_id":"kata-karon","subject_name":"Kata / Karon","subject_type":"hotel_area","parent_destination_id":"phuket","parent_destination_name":"Phuket","score":62,"component_score":72.8,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Kata / Karon needs a more intentional fit before you book it.","best_for":"Balanced Phuket beach stays, families, and manageable services.","avoid_if":"You want nightlife density or the freedom to ignore coast conditions.","check_first":["Use Kata / Karon when first-beach simplicity matters.","Do not assume all Phuket beaches behave the same.","Use Old Town as the rain and food fallback."],"next_action":"Use Old Town as the rain and food fallback before locking the beach.","pivot":"Switch to Phuket Old Town or a different coast if beach conditions weaken.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":22,"available_components":21,"live_components":18,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.955},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"kata-karon","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"kata-karon","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"kata-karon","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"kata-karon","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":60,"weight":0.14,"contribution":8.4,"source":"signal","signal_type":"transport_friction","entity_id":"kata-karon","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":80,"weight":0.04,"contribution":3.2,"source":"signal","signal_type":"spa_license_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":78,"weight":0.05,"contribution":3.9,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":77,"weight":0.04,"contribution":3.08,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":48,"weight":0.04,"contribution":1.92,"source":"signal","signal_type":"pier_transfer_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":92,"weight":0.05,"contribution":4.6,"source":"signal","signal_type":"official_pier_support","entity_id":"kata-karon","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.06,"contribution":1.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":63,"weight":0.04,"contribution":2.52,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"kata-karon","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":56,"weight":0.16,"contribution":8.96,"source":"decision","signal_type":null,"entity_id":"phuket","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":81,"weight":0.04,"contribution":3.24,"source":"blueprint","signal_type":null,"entity_id":"kata-karon","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":65,"note":"Component scores spread by 65 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_fit"],"source_summary":"23 joined sources support this decision.","path":"/entities/kata-karon/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:00:00.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_lamai","decision_type":"where_to_stay","subject_id":"lamai","subject_name":"Lamai","subject_type":"hotel_area","parent_destination_id":"koh-samui","parent_destination_name":"Koh Samui","score":63,"component_score":73.8,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Lamai needs a more intentional fit before you book it.","best_for":"Middle-ground Samui beach stays with softer pacing than Chaweng.","avoid_if":"You want the widest service density or the quietest north-coast retreat.","check_first":["Use Lamai when the trip wants a calmer beach base without losing all convenience.","Do not assume Lamai solves island-wide transfer friction by itself.","Keep Bophut visible when evening walks and food matter more than beach time."],"next_action":"Use Lamai when beach comfort and readable evenings matter more than maximum nightlife.","pivot":"Use Bophut for a more balanced food-and-family base.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":16,"available_components":15,"live_components":12,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.938},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"lamai","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"lamai","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"lamai","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":72,"weight":0.1,"contribution":7.2,"source":"signal","signal_type":"rain_risk","entity_id":"lamai","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":63,"weight":0.14,"contribution":8.82,"source":"signal","signal_type":"transport_friction","entity_id":"lamai","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":80,"weight":0.04,"contribution":3.2,"source":"signal","signal_type":"spa_license_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":84,"weight":0.05,"contribution":4.2,"source":"signal","signal_type":"medical_fallback_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":54,"weight":0.04,"contribution":2.16,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":77,"weight":0.04,"contribution":3.08,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":25,"weight":0.04,"contribution":1,"source":"signal","signal_type":"pier_transfer_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":90,"weight":0.05,"contribution":4.5,"source":"signal","signal_type":"official_pier_support","entity_id":"lamai","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"water_fit","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"lamai","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":57,"weight":0.16,"contribution":9.12,"source":"decision","signal_type":null,"entity_id":"koh-samui","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":79,"weight":0.04,"contribution":3.16,"source":"blueprint","signal_type":null,"entity_id":"lamai","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":72,"note":"Component scores spread by 72 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort"],"source_summary":"17 joined sources support this decision.","path":"/entities/lamai/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_nimman","decision_type":"where_to_stay","subject_id":"nimman","subject_name":"Nimman","subject_type":"hotel_area","parent_destination_id":"chiang-mai","parent_destination_name":"Chiang Mai","score":67,"component_score":75.7,"penalty_points":9,"confidence":"High","label":"mixed","recommendation":"Nimman needs a more intentional fit before you book it.","best_for":"Longer Chiang Mai stays, cafes, comfort, and coworking rhythm.","avoid_if":"You want temple density right outside the hotel or AQI is bad enough to sink the city.","check_first":["Choose Nimman when comfort and cafes matter more than temple density.","Keep Old City as the culture pivot.","Let AQI outrank the hotel pool."],"next_action":"Let PM2.5 outrank the hotel pool before you commit.","pivot":"Use Old City for a shorter temple-first stay.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":21,"available_components":21,"live_components":18,"fallback_components":3,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"nimman","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"nimman","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"nimman","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"nimman","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":63,"weight":0.14,"contribution":8.82,"source":"signal","signal_type":"transport_friction","entity_id":"nimman","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":82,"weight":0.04,"contribution":3.28,"source":"signal","signal_type":"spa_license_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":37,"weight":0.06,"contribution":2.22,"source":"signal","signal_type":"rail_feasibility","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":72,"weight":0.04,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":92,"weight":0.05,"contribution":4.6,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"nimman","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":41,"weight":0.06,"contribution":2.46,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":50,"weight":0.04,"contribution":2,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"nimman","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":65,"weight":0.16,"contribution":10.4,"source":"decision","signal_type":null,"entity_id":"chiang-mai","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":80,"weight":0.04,"contribution":3.2,"source":"blueprint","signal_type":null,"entity_id":"nimman","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":60,"note":"Component scores spread by 60 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"25 joined sources support this decision.","path":"/entities/nimman/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:00:00.000Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_old-city-chiang-mai","decision_type":"where_to_stay","subject_id":"old-city-chiang-mai","subject_name":"Old City Chiang Mai","subject_type":"hotel_area","parent_destination_id":"chiang-mai","parent_destination_name":"Chiang Mai","score":67,"component_score":75.8,"penalty_points":9,"confidence":"High","label":"mixed","recommendation":"Old City Chiang Mai needs a more intentional fit before you book it.","best_for":"First Chiang Mai stays, temples, markets, and compact food walks when AQI is acceptable.","avoid_if":"PM2.5 is high or you want coworking and comfort more than heritage mood.","check_first":["Use Old City when temple density and walkable food matter more than coworking comfort.","Let PM2.5 outrank the charm of a heritage hotel.","Switch to Nimman when comfort and indoor backup become the real need."],"next_action":"Let AQI outrank the hotel charm, then choose a walkable lane inside or just outside the old walls.","pivot":"Use Nimman if comfort and indoor backup become more important than temple density.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":21,"available_components":21,"live_components":18,"fallback_components":3,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":64,"weight":0.14,"contribution":8.96,"source":"signal","signal_type":"transport_friction","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":84,"weight":0.04,"contribution":3.36,"source":"signal","signal_type":"spa_license_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":43,"weight":0.06,"contribution":2.58,"source":"signal","signal_type":"rail_feasibility","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":80,"weight":0.05,"contribution":4,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":68,"weight":0.04,"contribution":2.72,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":91,"weight":0.05,"contribution":4.55,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":41,"weight":0.06,"contribution":2.46,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":50,"weight":0.04,"contribution":2,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":86,"weight":0.08,"contribution":6.88,"source":"signal","signal_type":"flood_water_risk","entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":65,"weight":0.16,"contribution":10.4,"source":"decision","signal_type":null,"entity_id":"chiang-mai","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":82,"weight":0.04,"contribution":3.28,"source":"blueprint","signal_type":null,"entity_id":"old-city-chiang-mai","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":56,"note":"Component scores spread by 56 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"25 joined sources support this decision.","path":"/entities/old-city-chiang-mai/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_patong","decision_type":"where_to_stay","subject_id":"patong","subject_name":"Patong","subject_type":"hotel_area","parent_destination_id":"phuket","parent_destination_name":"Phuket","score":62,"component_score":72.5,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Patong needs a more intentional fit before you book it.","best_for":"Nightlife, service density, short stays, and beach trips where convenience matters more than quiet.","avoid_if":"You are noise-sensitive or want a calmer family beach base.","check_first":["Choose Patong only when nightlife, services, or short-stay convenience are really the point.","Do not pay Patong prices for a quiet family beach trip.","Keep Old Town or Kata / Karon visible as the calmer pivot."],"next_action":"Use Patong only when the energy and late return convenience are worth the tradeoff.","pivot":"Use Kata / Karon or Phuket Old Town if sleep, food, or rain-backup logic becomes more important.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":22,"available_components":21,"live_components":18,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.955},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"patong","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"patong","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"patong","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"patong","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":62,"weight":0.14,"contribution":8.68,"source":"signal","signal_type":"transport_friction","entity_id":"patong","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":78,"weight":0.04,"contribution":3.12,"source":"signal","signal_type":"spa_license_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":72,"weight":0.05,"contribution":3.6,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":73,"weight":0.04,"contribution":2.92,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":48,"weight":0.04,"contribution":1.92,"source":"signal","signal_type":"pier_transfer_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":92,"weight":0.05,"contribution":4.6,"source":"signal","signal_type":"official_pier_support","entity_id":"patong","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.06,"contribution":1.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":63,"weight":0.04,"contribution":2.52,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"patong","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":56,"weight":0.16,"contribution":8.96,"source":"decision","signal_type":null,"entity_id":"phuket","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":78,"weight":0.04,"contribution":3.12,"source":"blueprint","signal_type":null,"entity_id":"patong","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":65,"note":"Component scores spread by 65 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_fit"],"source_summary":"23 joined sources support this decision.","path":"/entities/patong/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_phuket-old-town","decision_type":"where_to_stay","subject_id":"phuket-old-town","subject_name":"Phuket Old Town","subject_type":"hotel_area","parent_destination_id":"phuket","parent_destination_name":"Phuket","score":62,"component_score":72.8,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Phuket Old Town needs a more intentional fit before you book it.","best_for":"Food-first Phuket, rain backup, cafes, architecture, and town-based slower stays.","avoid_if":"You expect a beach outside the room every morning.","check_first":["Use Old Town when weather, food, or architecture outranks waking up by the beach.","Do not confuse a stylish town hotel with a beach holiday base.","Keep Patong or Kata / Karon visible when the trip is still beach-first."],"next_action":"Treat Old Town as a weather and food base, not a hidden beach hack.","pivot":"Use Kata / Karon or Patong if the trip stays beach-first.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":22,"available_components":21,"live_components":18,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.955},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"phuket-old-town","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"phuket-old-town","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"phuket-old-town","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":62,"weight":0.14,"contribution":8.68,"source":"signal","signal_type":"transport_friction","entity_id":"phuket-old-town","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":82,"weight":0.04,"contribution":3.28,"source":"signal","signal_type":"spa_license_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":72,"weight":0.05,"contribution":3.6,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":73,"weight":0.04,"contribution":2.92,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":48,"weight":0.04,"contribution":1.92,"source":"signal","signal_type":"pier_transfer_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"official_pier_support","entity_id":"phuket-old-town","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.06,"contribution":1.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":63,"weight":0.04,"contribution":2.52,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"phuket-old-town","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":56,"weight":0.16,"contribution":8.96,"source":"decision","signal_type":null,"entity_id":"phuket","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":79,"weight":0.04,"contribution":3.16,"source":"blueprint","signal_type":null,"entity_id":"phuket-old-town","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":65,"note":"Component scores spread by 65 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_fit"],"source_summary":"23 joined sources support this decision.","path":"/entities/phuket-old-town/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_railay","decision_type":"where_to_stay","subject_id":"railay","subject_name":"Railay","subject_type":"hotel_area","parent_destination_id":"krabi","parent_destination_name":"Krabi","score":60,"component_score":72.7,"penalty_points":13,"confidence":"High","label":"mixed","recommendation":"Railay needs a more intentional fit before you book it.","best_for":"High-payoff Krabi scenery when transfer fragility is acceptable.","avoid_if":"Arrival timing is tight or weather tolerance is low.","check_first":["Use Railay only when the scenery payoff is worth a more fragile arrival and exit stack.","Do not force Railay on a tight arrival day.","Keep Ao Nang visible as the practical fallback."],"next_action":"Treat Railay as the reward move, not the safest default.","pivot":"Use Ao Nang if the practical transfer story starts to dominate.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":18,"available_components":16,"live_components":13,"fallback_components":5,"defaulted_components":2,"coverage_ratio":0.889},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"railay","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"railay","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":66,"weight":0.12,"contribution":7.92,"source":"derived","signal_type":"noise_risk","entity_id":"railay","used_default":true,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"railay","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":60,"weight":0.14,"contribution":8.4,"source":"signal","signal_type":"transport_friction","entity_id":"railay","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":76,"weight":0.04,"contribution":3.04,"source":"signal","signal_type":"spa_license_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"medical_fallback_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":62,"weight":0.05,"contribution":3.1,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":54,"weight":0.04,"contribution":2.16,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":65,"weight":0.04,"contribution":2.6,"source":"signal","signal_type":"pier_transfer_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":76,"weight":0.05,"contribution":3.8,"source":"signal","signal_type":"official_pier_support","entity_id":"railay","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":47,"weight":0.06,"contribution":2.82,"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 behind this stay decision."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"railay","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":55,"weight":0.16,"contribution":8.8,"source":"decision","signal_type":null,"entity_id":"krabi","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":73,"weight":0.04,"contribution":2.92,"source":"blueprint","signal_type":null,"entity_id":"railay","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":50,"note":"Component scores spread by 50 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["noise_comfort","water_fit"],"source_summary":"16 joined sources support this decision.","path":"/entities/railay/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_rawai-nai-harn","decision_type":"where_to_stay","subject_id":"rawai-nai-harn","subject_name":"Rawai / Nai Harn","subject_type":"hotel_area","parent_destination_id":"phuket","parent_destination_name":"Phuket","score":61,"component_score":72.5,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Rawai / Nai Harn needs a more intentional fit before you book it.","best_for":"Longer Phuket stays, villas, south-coast pacing, and quieter beach routines.","avoid_if":"You need low-friction movement around the whole island.","check_first":["Use Rawai / Nai Harn when longer, slower south-coast days are the real goal.","Do not assume a cheaper villa beats a better-located first-timer base.","Keep Phuket Old Town or Kata / Karon as the lower-friction fallback."],"next_action":"Accept the transfer burden before paying for a bigger room or villa.","pivot":"Use Kata / Karon for a cleaner first-timer base or Old Town when weather weakens.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":22,"available_components":21,"live_components":18,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.955},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":80,"weight":0.18,"contribution":14.4,"source":"derived","signal_type":null,"entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":74,"weight":0.12,"contribution":8.88,"source":"signal","signal_type":"noise_risk","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"rain_fit","label":"Rain fit","score":54,"weight":0.1,"contribution":5.4,"source":"signal","signal_type":"rain_risk","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":62,"weight":0.14,"contribution":8.68,"source":"signal","signal_type":"transport_friction","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"spa_license_support","label":"Spa license support","score":78,"weight":0.04,"contribution":3.12,"source":"signal","signal_type":"spa_license_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":72,"weight":0.05,"contribution":3.6,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":73,"weight":0.04,"contribution":2.92,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":85,"weight":0.04,"contribution":3.4,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":83,"weight":0.05,"contribution":4.15,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"pier_transfer_support","label":"Pier transfer support","score":48,"weight":0.04,"contribution":1.92,"source":"signal","signal_type":"pier_transfer_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is public pier and transfer structure around the stay zone, linked pier anchor, or parent destination, not operator schedule or queue-length truth."},{"key":"official_pier_support","label":"Official pier support","score":92,"weight":0.05,"contribution":4.6,"source":"signal","signal_type":"official_pier_support","entity_id":"rawai-nai-harn","used_default":false,"default_reason":"","note":"This is official Marine Department passenger-berth support around the stay zone or its parent destination, not live ferry schedule, closure, queue, or seat truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":32,"weight":0.06,"contribution":1.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":42,"weight":0.05,"contribution":2.1,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":63,"weight":0.04,"contribution":2.52,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"flood_water_risk","entity_id":"rawai-nai-harn","used_default":true,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":56,"weight":0.16,"contribution":8.96,"source":"decision","signal_type":null,"entity_id":"phuket","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":76,"weight":0.04,"contribution":3.04,"source":"blueprint","signal_type":null,"entity_id":"rawai-nai-harn","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":65,"note":"Component scores spread by 65 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["water_fit"],"source_summary":"23 joined sources support this decision.","path":"/entities/rawai-nai-harn/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_riverside-old-town","decision_type":"where_to_stay","subject_id":"riverside-old-town","subject_name":"Riverside / Old Town","subject_type":"hotel_area","parent_destination_id":"bangkok","parent_destination_name":"Bangkok","score":69,"component_score":79.8,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Riverside / Old Town needs a more intentional fit before you book it.","best_for":"Temple, ferry, and old-city texture with slower evenings.","avoid_if":"You expect the easiest rail movement in the city.","check_first":["Use riverside when the trip is truly temple and river-first.","Accept slightly weaker rail logic.","Do not combine this base with nonstop cross-city nightlife plans."],"next_action":"Use this base only if temples and the river are truly the point.","pivot":"Switch to Sukhumvit or Silom if the plan turns transit-heavy.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":27,"available_components":26,"live_components":23,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.963},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"riverside-old-town","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":50,"weight":0.12,"contribution":6,"source":"signal","signal_type":"noise_risk","entity_id":"riverside-old-town","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"civic_friction","label":"Civic friction","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"civic_friction","entity_id":"riverside-old-town","used_default":true,"default_reason":"No local or parent civic-friction signal; using conservative fallback.","note":"Civic friction is only weighted where Bangkok district complaint statistics can inform hotel-area fit."},{"key":"rain_fit","label":"Rain fit","score":50,"weight":0.1,"contribution":5,"source":"signal","signal_type":"rain_risk","entity_id":"riverside-old-town","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":81,"weight":0.14,"contribution":11.34,"source":"signal","signal_type":"transport_friction","entity_id":"riverside-old-town","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":96,"weight":0.04,"contribution":3.84,"source":"signal","signal_type":"spa_license_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":96,"weight":0.06,"contribution":5.76,"source":"signal","signal_type":"rail_feasibility","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.04,"contribution":3.68,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_motorcycle_taxi_support","label":"Official motorcycle-taxi support","score":61,"weight":0.05,"contribution":3.05,"source":"signal","signal_type":"official_motorcycle_taxi_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official Bangkok motorcycle-taxi stand and driver coverage from the public DLT/data.go.th dataset around the stay zone or its parent destination, 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":89,"weight":0.05,"contribution":4.45,"source":"signal","signal_type":"taxi_pickup_dropoff_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public OTP monthly taxi GPS analytics and hotspot context around the stay zone or its parent destination, useful as aggregate pickup/dropoff support rather than live dispatch, ETA, queue, or raw trip truth."},{"key":"urban_rapid_transit_support","label":"Urban rapid-transit support","score":85,"weight":0.1,"contribution":8.5,"source":"signal","signal_type":"urban_rapid_transit_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is official BTS and MRTA route-map and service-page support around the local base, not live train headway, crowding, or outage truth."},{"key":"urban_bus_operator_support","label":"Urban bus-operator support","score":70,"weight":0.06,"contribution":4.2,"source":"signal","signal_type":"urban_bus_operator_support","entity_id":"riverside-old-town","used_default":false,"default_reason":"","note":"This is public Thai Smile Group branch and depot footprint around Bangkok hotel-base entities, useful as a fallback and last-mile layer rather than live bus operations truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.06,"contribution":4.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.05,"contribution":4.8,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.04,"contribution":3.84,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":44,"weight":0.08,"contribution":3.52,"source":"signal","signal_type":"flood_water_risk","entity_id":"riverside-old-town","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":63,"weight":0.16,"contribution":10.08,"source":"decision","signal_type":null,"entity_id":"bangkok","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":77,"weight":0.04,"contribution":3.08,"source":"blueprint","signal_type":null,"entity_id":"riverside-old-town","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":53,"note":"Component scores spread by 53 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["civic_friction"],"source_summary":"41 joined sources support this decision.","path":"/entities/riverside-old-town/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_silom-sathorn","decision_type":"where_to_stay","subject_id":"silom-sathorn","subject_name":"Silom / Sathorn","subject_type":"hotel_area","parent_destination_id":"bangkok","parent_destination_name":"Bangkok","score":69,"component_score":80.5,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Silom / Sathorn needs a more intentional fit before you book it.","best_for":"Balanced city stays, dinners, queer nightlife, and rail access without full Sukhumvit intensity.","avoid_if":"You want river mood or a low-rise slower city feel.","check_first":["Make sure the hotel is actually station-adjacent.","Use this zone when you want balanced evenings rather than constant nightlife.","Treat Silom and Sathorn as different micro-feels, not one flat blob."],"next_action":"Verify the exact BTS or MRT walking distance before paying.","pivot":"Use Riverside / Old Town for culture-first days.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":27,"available_components":26,"live_components":23,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.963},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"silom-sathorn","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":50,"weight":0.12,"contribution":6,"source":"signal","signal_type":"noise_risk","entity_id":"silom-sathorn","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"civic_friction","label":"Civic friction","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"civic_friction","entity_id":"silom-sathorn","used_default":true,"default_reason":"No local or parent civic-friction signal; using conservative fallback.","note":"Civic friction is only weighted where Bangkok district complaint statistics can inform hotel-area fit."},{"key":"rain_fit","label":"Rain fit","score":50,"weight":0.1,"contribution":5,"source":"signal","signal_type":"rain_risk","entity_id":"silom-sathorn","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":84,"weight":0.14,"contribution":11.76,"source":"signal","signal_type":"transport_friction","entity_id":"silom-sathorn","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":90,"weight":0.04,"contribution":3.6,"source":"signal","signal_type":"spa_license_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":96,"weight":0.06,"contribution":5.76,"source":"signal","signal_type":"rail_feasibility","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":92,"weight":0.04,"contribution":3.68,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_motorcycle_taxi_support","label":"Official motorcycle-taxi support","score":64,"weight":0.05,"contribution":3.2,"source":"signal","signal_type":"official_motorcycle_taxi_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official Bangkok motorcycle-taxi stand and driver coverage from the public DLT/data.go.th dataset around the stay zone or its parent destination, 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":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"taxi_pickup_dropoff_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public OTP monthly taxi GPS analytics and hotspot context around the stay zone or its parent destination, useful as aggregate pickup/dropoff support rather than live dispatch, ETA, queue, or raw trip truth."},{"key":"urban_rapid_transit_support","label":"Urban rapid-transit support","score":98,"weight":0.1,"contribution":9.8,"source":"signal","signal_type":"urban_rapid_transit_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is official BTS and MRTA route-map and service-page support around the local base, not live train headway, crowding, or outage truth."},{"key":"urban_bus_operator_support","label":"Urban bus-operator support","score":62,"weight":0.06,"contribution":3.72,"source":"signal","signal_type":"urban_bus_operator_support","entity_id":"silom-sathorn","used_default":false,"default_reason":"","note":"This is public Thai Smile Group branch and depot footprint around Bangkok hotel-base entities, useful as a fallback and last-mile layer rather than live bus operations truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.06,"contribution":4.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.05,"contribution":4.8,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.04,"contribution":3.84,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":44,"weight":0.08,"contribution":3.52,"source":"signal","signal_type":"flood_water_risk","entity_id":"silom-sathorn","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":63,"weight":0.16,"contribution":10.08,"source":"decision","signal_type":null,"entity_id":"bangkok","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":84,"weight":0.04,"contribution":3.36,"source":"blueprint","signal_type":null,"entity_id":"silom-sathorn","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":54,"note":"Component scores spread by 54 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["civic_friction"],"source_summary":"40 joined sources support this decision.","path":"/entities/silom-sathorn/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:51:47.642Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"stay_sukhumvit","decision_type":"where_to_stay","subject_id":"sukhumvit","subject_name":"Sukhumvit","subject_type":"hotel_area","parent_destination_id":"bangkok","parent_destination_name":"Bangkok","score":70,"component_score":80.5,"penalty_points":11,"confidence":"High","label":"mixed","recommendation":"Sukhumvit is a good current hotel base.","best_for":"First-timers, late dinners, malls, rail access, and flexible city days.","avoid_if":"You are sleep-sensitive or want temple-first city texture.","check_first":["Choose a station-linked hotel, not just a Sukhumvit address.","Accept the noise tradeoff if nightlife is the point.","Do not use Sukhumvit if the trip is really a temple-first Old Town visit."],"next_action":"Choose a station-adjacent hotel, not just a Sukhumvit address.","pivot":"Move to Silom / Sathorn for a calmer balanced base.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":27,"available_components":26,"live_components":23,"fallback_components":4,"defaulted_components":1,"coverage_ratio":0.963},"score_components":[{"key":"local_source_confidence","label":"Local source confidence","score":97,"weight":0.18,"contribution":17.46,"source":"signal","signal_type":"source_confidence","entity_id":"sukhumvit","used_default":false,"default_reason":"No local source-confidence signal; using conservative fallback.","note":""},{"key":"local_comfort","label":"Local comfort","score":93.5,"weight":0.18,"contribution":16.83,"source":"derived","signal_type":null,"entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"Blends local AQI and outdoor comfort, with parent-destination fallback when hotel-area signals are sparse."},{"key":"noise_comfort","label":"Noise comfort","score":50,"weight":0.12,"contribution":6,"source":"signal","signal_type":"noise_risk","entity_id":"sukhumvit","used_default":false,"default_reason":"No local or parent noise signal; using conservative fallback.","note":""},{"key":"civic_friction","label":"Civic friction","score":68,"weight":0.08,"contribution":5.44,"source":"derived","signal_type":"civic_friction","entity_id":"sukhumvit","used_default":true,"default_reason":"No local or parent civic-friction signal; using conservative fallback.","note":"Civic friction is only weighted where Bangkok district complaint statistics can inform hotel-area fit."},{"key":"rain_fit","label":"Rain fit","score":50,"weight":0.1,"contribution":5,"source":"signal","signal_type":"rain_risk","entity_id":"sukhumvit","used_default":false,"default_reason":"No local or parent rain signal; using conservative fallback.","note":""},{"key":"transport_fit","label":"Transport fit","score":85,"weight":0.14,"contribution":11.9,"source":"signal","signal_type":"transport_friction","entity_id":"sukhumvit","used_default":false,"default_reason":"No local or parent transport signal; using conservative fallback.","note":""},{"key":"highway_transfer_friction","label":"Highway transfer friction","score":88,"weight":0.05,"contribution":4.4,"source":"signal","signal_type":"highway_transfer_friction","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official DOH and EXAT road-support context behind the local base, not live speed, queue, lane, or incident truth."},{"key":"spa_license_support","label":"Spa license support","score":92,"weight":0.04,"contribution":3.68,"source":"signal","signal_type":"spa_license_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public HSS wellness-license lookup support around the local base or parent destination, not live booking, treatment quality, or venue popularity truth."},{"key":"medical_fallback_support","label":"Medical fallback support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"medical_fallback_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public MOPH facility-support context around the local base or parent destination, not live bed, wait-time, dispatch, or specialist-availability truth."},{"key":"rail_feasibility","label":"Rail feasibility","score":96,"weight":0.06,"contribution":5.76,"source":"signal","signal_type":"rail_feasibility","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public rail-support structure around the local base or parent destination, not live train seat or delay truth."},{"key":"official_bus_terminal_support","label":"Official bus-terminal support","score":86,"weight":0.05,"contribution":4.3,"source":"signal","signal_type":"official_bus_terminal_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official MOT terminal-master support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_support","label":"Official intercity-bus support","score":88,"weight":0.04,"contribution":3.52,"source":"signal","signal_type":"official_intercity_bus_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official BKS station and ticket-point support around the stay zone or its parent destination, useful for overland flexibility but not a live departure or booking feed."},{"key":"official_intercity_bus_search_support","label":"Official intercity-bus search support","score":96,"weight":0.03,"contribution":2.88,"source":"signal","signal_type":"official_intercity_bus_search_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official BKS booking/search-surface support around the stay zone or its parent destination, useful for overland flexibility but not live departures, seats, or booking inventory truth."},{"key":"official_transport_complaint_support","label":"Official transport complaint support","score":94,"weight":0.04,"contribution":3.76,"source":"signal","signal_type":"official_transport_complaint_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official DLT 1584 complaint recourse and transport-burden context around the stay zone or its parent destination, not local realtime service quality or dispatch truth."},{"key":"official_taxi_oversight_support","label":"Official taxi-oversight support","score":96,"weight":0.05,"contribution":4.8,"source":"signal","signal_type":"official_taxi_oversight_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public DLT GPS and Taxi OK / VIP oversight, complaint, and station-search context around the stay zone or its parent destination, not live vehicle location, dispatch, ETA, or raw taxi GPS truth."},{"key":"official_motorcycle_taxi_support","label":"Official motorcycle-taxi support","score":75,"weight":0.05,"contribution":3.75,"source":"signal","signal_type":"official_motorcycle_taxi_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official Bangkok motorcycle-taxi stand and driver coverage from the public DLT/data.go.th dataset around the stay zone or its parent destination, 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":74,"weight":0.05,"contribution":3.7,"source":"signal","signal_type":"taxi_pickup_dropoff_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public OTP monthly taxi GPS analytics and hotspot context around the stay zone or its parent destination, useful as aggregate pickup/dropoff support rather than live dispatch, ETA, queue, or raw trip truth."},{"key":"urban_rapid_transit_support","label":"Urban rapid-transit support","score":98,"weight":0.1,"contribution":9.8,"source":"signal","signal_type":"urban_rapid_transit_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is official BTS and MRTA route-map and service-page support around the local base, not live train headway, crowding, or outage truth."},{"key":"urban_bus_operator_support","label":"Urban bus-operator support","score":62,"weight":0.06,"contribution":3.72,"source":"signal","signal_type":"urban_bus_operator_support","entity_id":"sukhumvit","used_default":false,"default_reason":"","note":"This is public Thai Smile Group branch and depot footprint around Bangkok hotel-base entities, useful as a fallback and last-mile layer rather than live bus operations truth."},{"key":"airport_transfer_support","label":"Airport transfer support","score":82,"weight":0.06,"contribution":4.92,"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 behind this stay decision."},{"key":"airport_ground_service_support","label":"Airport ground-service support","score":96,"weight":0.05,"contribution":4.8,"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 behind the stay decision, not live queue, ETA, or inventory truth."},{"key":"airport_board_surface_support","label":"Airport board-surface support","score":96,"weight":0.03,"contribution":2.88,"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, not direct live airline row truth."},{"key":"airport_scale_context","label":"Airport scale context","score":96,"weight":0.04,"contribution":3.84,"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, queue, or inventory truth."},{"key":"airport_environmental_support","label":"Airport environmental support","score":96,"weight":0.03,"contribution":2.88,"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 behind the stay decision, not live measured sound-level truth."},{"key":"water_fit","label":"Water and flood fit","score":44,"weight":0.08,"contribution":3.52,"source":"signal","signal_type":"flood_water_risk","entity_id":"sukhumvit","used_default":false,"default_reason":"No local or parent water-risk signal; using conservative fallback.","note":""},{"key":"parent_destination_fit","label":"Parent destination fit","score":63,"weight":0.16,"contribution":10.08,"source":"decision","signal_type":null,"entity_id":"bangkok","used_default":false,"default_reason":"Parent destination decision missing; using blueprint fallback.","note":""},{"key":"blueprint_baseline","label":"Blueprint baseline","score":85,"weight":0.04,"contribution":3.4,"source":"blueprint","signal_type":null,"entity_id":"sukhumvit","used_default":false,"default_reason":"Blueprint seed missing; using parent score as fallback.","note":""}],"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":"Stay contradiction penalty","points":9,"applied":true,"spread":54,"note":"Component scores spread by 54 points, so the engine treats the answer as more contradictory."}],"fallback_used":true,"fallback_components":["civic_friction"],"source_summary":"40 joined sources support this decision.","path":"/entities/sukhumvit/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05: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":17,"current_row_count":0,"expired_row_count":17,"row_freshness_counts":{"fresh":0,"aging":0,"stale":0,"expired":17,"unknown":0}}}