Graph Engine v1

Thailand observation ledger.

This is the normalized observation ledger behind the Thailand signal graph. Live AQI, weather, water, transport structure, noise, road safety, and graph-wide context now attach to entities here instead of staying trapped inside page copy.

35 active feeds 0 additional feed slots Entity observations first Observation API

What this layer does.

It turns feed-shaped data into observation objects with entity IDs, timestamps, parameters, units, freshness, method, and confidence. Signals and decisions can only become trustworthy once this ledger exists.

Now

Live destination and route observations.

Bangkok, Chiang Mai, Phuket, Krabi, Ayutthaya, Kanchanaburi, Pai, Isaan, hotel-area proxies, piers, airports, and route anchors now receive normalized observations where public coverage exists.

Context

Global hazard and earthquake context.

GDACS and USGS now feed the graph-wide caution layer so confidence and route checks can see global or regional context without pretending it is a local place reading.

Coverage

Weather, transport structure, water, noise, and road safety are live.

TMD, Namtang, Thaiwater, Noise4Thai, and ThaiRSC now feed the ledger alongside AQI and regional context, so higher layers can explain route, comfort, and stay risk from actual observations.

Feed registry.

These are the observation connectors the graph knows about today. Active feeds are wired into the live ledger, and additional connector slots stay explicit so coverage remains machine-readable.

Active feed

Air4Thai AQI and PM2.5

Primary live entity observation feed for public station averages and proxy matching by destination or city cluster.

Cadence: Hourly Kind: entity-observation

Coverage: Destination, hotel-area, airport, pier-proxy, and monitoring-cluster AQI hooks where public station coverage exists.

Parameters: aqi_average, pm25_average

Active feed

GDACS disaster context

Context only. Useful for alerting and contradiction notes, not a local place-level safety verdict.

Cadence: Frequent / feed-driven Kind: context-observation

Coverage: Global and regional hazard context that affects route and confidence checks across all destination entities.

Parameters: active_hazard_groups, active_hazard_items

Active feed

USGS Thailand-region earthquakes

Context feed for rare but important event checks. It does not replace local disaster or route advisories.

Cadence: Frequent / event-driven Kind: context-observation

Coverage: Thailand-region earthquake context within the bounded public query used by the signal graph.

Parameters: regional_earthquake_events, regional_max_magnitude

Active feed

TMD weather and warning surface

Live connector using public TMD RSS/XML forecast, warning, and station-weather feeds for destination and route weather context.

Cadence: Hourly / warning-driven Kind: entity-observation

Coverage: Destination weather risk, storm warnings, heat risk, marine warnings, and route weather context.

Parameters: rain_risk_input, heat_risk_input, storm_warning_input, marine_warning_input

Active feed

TMD shipping weather forecast

Live connector using the public TMD shipping forecast page for marine section wind, wave, thunder, and heavy-rain context. This is shipping-weather burden, not operator closure, ticket, or seat truth.

Cadence: Operational / on marine-forecast update Kind: entity-observation

Coverage: Coastal destination and pier-anchor shipping forecast context for the Gulf of Thailand and Andaman / Malacca marine sections.

Parameters: marine_wind_speed_average, marine_wave_height_average, marine_wave_height_thunder, marine_thunderstorm_flag

Active feed

Aviation Weather airport status context

Live connector using public METAR and TAF data as airport weather and operability context. This is not airline delay or cancellation truth.

Cadence: Minute to hourly depending airport weather updates Kind: entity-observation

Coverage: Destination and airport weather-operability context for Bangkok, Chiang Mai, Phuket, Krabi, and Samui route decisions.

Parameters: airport_flight_rules_score, airport_visibility_score, airport_forecast_disruption_score, airport_convective_forecast_flag

Active feed

AOT airport ground-service support

Live connector using public AOT airport transport pages for official airport-ground-service and pickup-rule context. This is not live taxi queue, ETA, or rental inventory truth.

Cadence: On change / operational page Kind: entity-observation

Coverage: Airport-anchor observations for official taxi, Grab, rental-counter, and pickup-rule support at AOT airports where public transport pages are reachable.

Parameters: official_airport_ground_service_score

Active feed

AOT airport flight-board surface

Live connector using public AOT flight-status pages to score official passenger board-surface support. This is self-serve board visibility, not live airline delay, gate, baggage, or cancellation truth because the row query is protected by a browser turnstile token.

Cadence: On change / operational page Kind: entity-observation

Coverage: Airport-anchor observations for official public passenger flight-board self-check surfaces at AOT airports with public flight-status pages.

Parameters: official_airport_board_surface_score

Active feed

AOT airport traffic statistics

Live connector using the public AOT traffic archive workbook for airport-scale context. This is official passenger and movement scale, not live on-time, queue, gate, or inventory truth.

Cadence: Monthly / fiscal-year workbook update Kind: entity-observation

Coverage: Airport-anchor observations for official passenger and aircraft-movement scale context at AOT airports with public traffic workbooks.

Parameters: official_airport_total_movements, official_airport_total_passengers, official_airport_scale_score

Active feed

AOT airport environmental support

Live snapshot and connector using the public SET-hosted AOT factsheet and annual report ZIP to score airport environmental-governance and community-support disclosure. This is official disclosure context, not live measured sound-level truth.

Cadence: Annual report publication with periodic factsheet refresh Kind: entity-observation

Coverage: Airport-anchor observations for operator-level environmental-governance, community, and airport-noise disclosure support at AOT airports covered by the reachable SET-hosted annual report surface.

Parameters: official_airport_environmental_support_score

Active feed

Thaiwater water-quality observations

Live connector using the public Thaiwater water-quality load endpoint, mapped into destination and water-anchor observations where current station coverage exists.

Cadence: 10 to 30 minutes depending on station Kind: entity-observation

Coverage: River, canal, and water-station observations for flood and water-quality decisions.

Parameters: water_quality_index, water_quality_station_state

Active feed

Namtang transit structure

Live connector using the public Namtang compressed stop export to measure stop density, mode diversity, and transit-structure support around key traveler entities.

Cadence: Daily / static feed refresh Kind: entity-observation

Coverage: Destination, hotel-area, station, airport, terminal, and pier transport-structure observations from the public OTP/Namtang stop spine.

Parameters: transport_structure_score

Active feed

Bangkok rapid-transit official pages

Build snapshot using the public BTS route-map page and the public MRTA MRT route page to prove official rapid-transit support around Bangkok city-base decisions. This is route-map and service-page support, not live headway, crowding, or outage truth.

Cadence: Daily / on official route-map or service-page change Kind: entity-observation

Coverage: Bangkok destination, Bangkok hotel-area, interchange, and terminal support observations from official BTS and MRTA public route-map and service pages.

Parameters: official_rapid_transit_support_score

Active feed

SRT official station presence

Live connector using the public SRT station-list surface to confirm official station presence around rail-relevant destinations. This is operator-backed rail presence, not live train timing, seat, or disruption truth.

Cadence: Daily / on public timetable-site change Kind: entity-observation

Coverage: Destination and selected hotel-area official rail presence from the public SRT station list.

Parameters: official_rail_presence_score

Active feed

MOT official passenger bus terminals

Live connector using the public MOT passenger-bus-terminal master CSV to confirm official terminal presence and overland-support anchors. This is terminal-master support, not live departure, seat, or booking truth.

Cadence: Weekly / monthly catalog update Kind: entity-observation

Coverage: Destination, hotel-area, and bus-terminal observations from the official MOT passenger-terminal master where public CSV rows are available.

Parameters: official_bus_terminal_support_score

Active feed

BKS station and ticket-point support

Build snapshot using the public BKS station and ticket-point CSV to prove official intercity-bus support around overland traveler entities. This is official station and ticket-point presence, not live departure, seat, or booking truth.

Cadence: Monthly / quarterly static dataset validation Kind: entity-observation

Coverage: Destination, hotel-area, and terminal observations from the official BKS station, office, stop, and ticket-point location CSV.

Parameters: official_intercity_bus_support_score

Active feed

BKS timetable search surface

Build snapshot using the public BKS booking/search destination selector to prove official route-search support around tracked intercity destinations. This is official search-surface presence, not live departure, seat, or booking inventory truth.

Cadence: Daily / search-surface validation Kind: entity-observation

Coverage: Destination and overland-anchor observations from the public BKS booking/search destination selector surface for Bangkok-origin intercity bus planning.

Parameters: official_intercity_bus_search_support_score

Active feed

DLT 1584 complaint-support stats

Build snapshot using the public DLT 1584 complaint statistics workbooks to score official complaint recourse and transport-burden context. This is not local realtime service quality, dispatch, or incident truth.

Cadence: Monthly / fiscal-year workbook refresh Kind: entity-observation

Coverage: Bangkok city-base, regional destination, hotel-area, and bus-terminal complaint recourse and burden context from the public DLT 1584 fiscal-year workbooks.

Parameters: official_transport_complaint_support_score

Active feed

DLT GPS and Taxi OK taxi-oversight support

Build snapshot using the public DLT GPS passenger pages and Taxi OK / Taxi VIP project notices to score official registered-taxi oversight, complaint, and station-search support. This is not live vehicle location, dispatch, ETA, or raw taxi GPS truth.

Cadence: On regulatory or project-page change Kind: entity-observation

Coverage: Bangkok city-base, airport-linked, and taxi-heavy regional destination or hotel-area support observations from the public DLT GPS app pages and Taxi OK / Taxi VIP notices.

Parameters: official_taxi_oversight_support_score

Active feed

Bangkok motorcycle-taxi support

Live connector using the public data.go.th datastore for Bangkok motorcycle-taxi stands and drivers to score official last-mile support coverage. This is stand and driver supply context, not exact live availability, queue, or dispatch truth.

Cadence: Historical / static dataset with periodic validation Kind: entity-observation

Coverage: Bangkok destination, Bangkok hotel-area, transfer-node, and airport last-mile support observations from the official DLT/data.go.th motorcycle-taxi stand and driver dataset.

Parameters: official_motorcycle_taxi_support_score

Active feed

OTP taxi demand and pickup/dropoff analytics

Build snapshot using the public OTP monthly taxi GPS analytics and top pickup/dropoff area CSVs to score aggregate taxi-demand and hotspot support around Bangkok traveler entities. This is monthly aggregate demand context, not live dispatch, ETA, queue, or raw trip truth.

Cadence: Monthly Kind: entity-observation

Coverage: Bangkok destination, hotel-area, interchange, terminal, and airport-linked demand context from public OTP monthly taxi GPS analytics and top pickup/dropoff area rankings.

Parameters: taxi_pickup_dropoff_support_score

Active feed

Marine Department passenger-pier registry

Live connector using the public Marine Department berth registry to confirm official passenger-pier support, berth depth, and berth length context around coastal traveler entities. This is pier-infrastructure support, not live ferry schedule, closure, queue, or seat truth.

Cadence: Weekly / monthly berth-registry update Kind: entity-observation

Coverage: Coastal destination, hotel-area, and pier-anchor observations from the official Marine Department berth registry where public passenger-use rows are available.

Parameters: official_pier_support_score

Active feed

Marine Department berth-status surface

Live connector using the public Marine Department berth-status page to confirm named public port selectors and current visible ship-visit rows around coastal traveler entities. This is berth and ship-movement evidence, not ferry schedule, ticket, or seat truth.

Cadence: Operational / event-driven Kind: entity-observation

Coverage: Coastal destination, hotel-area, and pier-anchor berth-status surface support for Phuket, Krabi, Samui, Phangan, Pattaya, and selected public port clusters visible on the official page.

Parameters: official_berth_status_surface_score

Active feed

Thai Smile Group branch and depot locator

Live connector using the public Thai Smile Group site locator to confirm urban bus operator footprint around Bangkok traveler entities. This is operator support and depot presence, not realtime vehicle, ETA, crowding, or outage truth.

Cadence: Daily / site-locator update Kind: entity-observation

Coverage: Bangkok destination, Bangkok hotel-area, and selected transfer-anchor observations from the public Thai Smile Group branch and depot locator.

Parameters: urban_bus_operator_support_score

Active feed

Bangkok flood-monitoring current-event surface

Live connector using the public Bangkok flood-monitoring current-event endpoint for citywide flood-friction context. This is Bangkok-only public surface evidence, not a nationwide flood service.

Cadence: Operational / event-driven Kind: entity-observation

Coverage: Bangkok destination, hotel-area, and transfer-node flood-friction context from the public city flood-monitoring current-event endpoint.

Parameters: bangkok_flood_current_event_count, bangkok_flood_max_level_cm

Active feed

DOH highway traffic support

Build snapshot using the public DOH highway-traffic CCTV region pages to score camera-backed corridor support and visible staleness by major traveler region. This is public observability and support context, not live travel-time, speed, queue, or incident truth.

Cadence: Operational / support-surface refresh Kind: entity-observation

Coverage: Destination, airport, bus-terminal, and interchange road-friction support observations using the public DOH CCTV region and corridor surfaces.

Parameters: doh_highway_support_score

Active feed

EXAT expressway support

Build snapshot using the public EXAT support surfaces to score whether Bangkok-linked road moves have official expressway, toll, maintenance, and motorist-support context behind them. This is expressway support context, not live congestion, lane, queue, or travel-time truth.

Cadence: Operational / support-surface refresh Kind: entity-observation

Coverage: Bangkok-linked destination, airport, and overland-anchor expressway support observations using official EXAT map, toll, maintenance, and motorist service pages.

Parameters: exat_expressway_support_score

Active feed

HSS spa-license support

Build snapshot using the public HSS health-establishment directory and spa-premium surfaces to score whether official spa and massage license lookup context exists behind wellness-heavy traveler anchors. This is licensing-support context, not live treatment availability, quality, or booking truth.

Cadence: Weekly / monthly public support-surface refresh Kind: entity-observation

Coverage: Destination and hotel-base wellness-license support observations using public HSS health-establishment directory and spa-premium surfaces.

Parameters: spa_license_support_score

Active feed

MOPH health-facility support

Build snapshot using public MOPH health-facility dataset and HS4 facility surfaces to score whether official hospital and facility-lookup context exists behind traveler fallback planning. This is medical fallback context, not live bed, wait-time, dispatch, or specialist availability truth.

Cadence: Weekly / monthly public support-surface refresh Kind: entity-observation

Coverage: Destination and stay-fallback medical support observations using public MOPH/HS4 facility surfaces.

Parameters: medical_fallback_support_score

Active feed

DNP park tourism support

Build snapshot using the public DNP tourism dataset surfaces to score whether national-park and protected-area planning has official dataset support behind it. This is park-planning context, not live closure, ticket, ranger, or capacity truth.

Cadence: Scheduled / catalog refresh Kind: entity-observation

Coverage: Nature-heavy destination park-access support observations using public DNP tourism dataset surfaces and national-park dataset visibility.

Parameters: park_access_context_score

Active feed

GTA Thai gold reference price

Live connector using the published Gold Traders Association latest-price JSON surface for the national Thai domestic 96.5% retail reference. This is published THB-per-baht-weight context, not a trading feed or province-by-province local shop quote.

Cadence: Intraday / market-hours publication Kind: entity-observation

Coverage: Destination-level city buying-context anchors using the national Thai 96.5% gold reference quote instead of pretending there are province-specific official prices.

Parameters: gold_bar_965_buy_baht_weight, gold_bar_965_sell_baht_weight, gold_ornament_965_base_baht_weight, gold_ornament_965_sell_baht_weight, gold_spot_reference, usd_thb_reference, gold_price_change_intraday, gold_price_change_prev_day

Active feed

BOT USD/THB daily average

Optional live connector using the Bank of Thailand daily-average USD/THB exchange-rate API when credentials are configured. Preferred FX context for Thai gold pages and signals when reachable; otherwise the stack falls back to the GTA-published embedded USD/THB reference.

Cadence: Business day / daily average publication Kind: entity-observation

Coverage: Gold-buying destination and market-anchor FX context when a Bank of Thailand API token is configured.

Parameters: usd_thb_reference

Active feed

Bangkok civic complaint stats

Public Bangkok Open Data complaint statistics. This is a slower-moving civic-friction layer for nuisance and service burden, not a live dispatch or complaint-intake feed.

Cadence: Monthly / district statistical update Kind: entity-observation

Coverage: Bangkok destination and Bangkok hotel-area complaint, resolution, and star-rating context from the public district complaint statistics file.

Parameters: civic_monthly_complaint_count, civic_monthly_resolution_rate, civic_star_average

Active feed

Noise4Thai ambient noise

Live connector using public Noise4Thai monitoring cards to compute current destination and hotel-area ambient-noise observations.

Cadence: Hourly / daily Kind: entity-observation

Coverage: Destination, hotel-area, and monitoring-cluster noise observations.

Parameters: leq_1h, leq_24h

Active feed

ThaiRSC road-safety observations

Live connector served from a fresh build snapshot because the upstream API requires TLS bypass in refresh tooling, but the road-safety observations are now attached to the graph.

Cadence: Near real time / daily snapshot Kind: entity-observation

Coverage: Route and province road-safety observations for route fragility and holiday driving decisions.

Parameters: road_deaths_today, road_injuries_today, major_accident_context

Live observation status.

The browser hydrates this from /api/observations. It shows which feeds connected, which entities already have observations, and what the freshest normalized records look like.

Registry surfaces.

Changed since last run

Browser refresh compares the latest persisted observation snapshots here.

Live observation dashboard

Generated by the live observation API. The browser hydrates current feeds, entity coverage, and recent normalized observations here.

Live observation status updates in the browser from the observation API.

The static registry already knows about 35 observation connectors. Browser refresh fills this panel from the API with live feed status and normalized records.