{
  "title": "enjoythai.land observation feed registry",
  "description": "Observation feed registry for the Thailand signal graph, tracking active and additional connector coverage.",
  "updated": "2026-05-09",
  "feed_count": 35,
  "active_feed_count": 35,
  "queued_feed_count": 0,
  "feeds": [
    {
      "id": "air4thai-aqi",
      "name": "Air4Thai AQI and PM2.5",
      "status": "active",
      "sourceName": "Air4Thai / Pollution Control Department",
      "kind": "entity-observation",
      "cadence": "Hourly",
      "coverage": "Destination, hotel-area, airport, pier-proxy, and monitoring-cluster AQI hooks where public station coverage exists.",
      "parameters": [
        "aqi_average",
        "pm25_average"
      ],
      "note": "Primary live entity observation feed for public station averages and proxy matching by destination or city cluster.",
      "sourcePath": "/data/sources/air4thai-pollution-control-department/"
    },
    {
      "id": "gdacs-disaster-context",
      "name": "GDACS disaster context",
      "status": "active",
      "sourceName": "GDACS",
      "kind": "context-observation",
      "cadence": "Frequent / feed-driven",
      "coverage": "Global and regional hazard context that affects route and confidence checks across all destination entities.",
      "parameters": [
        "active_hazard_groups",
        "active_hazard_items"
      ],
      "note": "Context only. Useful for alerting and contradiction notes, not a local place-level safety verdict.",
      "sourcePath": "/data/sources/gdacs/"
    },
    {
      "id": "usgs-thailand-earthquakes",
      "name": "USGS Thailand-region earthquakes",
      "status": "active",
      "sourceName": "USGS Earthquake API",
      "kind": "context-observation",
      "cadence": "Frequent / event-driven",
      "coverage": "Thailand-region earthquake context within the bounded public query used by the signal graph.",
      "parameters": [
        "regional_earthquake_events",
        "regional_max_magnitude"
      ],
      "note": "Context feed for rare but important event checks. It does not replace local disaster or route advisories.",
      "sourcePath": "/data/sources/usgs-earthquake-api/"
    },
    {
      "id": "tmd-weather-surface",
      "name": "TMD weather and warning surface",
      "status": "active",
      "sourceName": "Thai Meteorological Department",
      "kind": "entity-observation",
      "cadence": "Hourly / warning-driven",
      "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"
      ],
      "note": "Live connector using public TMD RSS/XML forecast, warning, and station-weather feeds for destination and route weather context.",
      "sourcePath": "/data/sources/thai-meteorological-department/"
    },
    {
      "id": "tmd-shipping-forecast",
      "name": "TMD shipping weather forecast",
      "status": "active",
      "sourceName": "TMD Shipping Forecast",
      "kind": "entity-observation",
      "cadence": "Operational / on marine-forecast update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/tmd-shipping-forecast/"
    },
    {
      "id": "aviationweather-airport-status",
      "name": "Aviation Weather airport status context",
      "status": "active",
      "sourceName": "NOAA Aviation Weather API",
      "kind": "entity-observation",
      "cadence": "Minute to hourly depending airport weather updates",
      "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"
      ],
      "note": "Live connector using public METAR and TAF data as airport weather and operability context. This is not airline delay or cancellation truth.",
      "sourcePath": "/data/sources/noaa-aviation-weather-api/"
    },
    {
      "id": "aot-airport-ground-services",
      "name": "AOT airport ground-service support",
      "status": "active",
      "sourceName": "AOT airport ground transport pages",
      "sourceNames": [
        "AOT airport ground transport pages",
        "AOT Suvarnabhumi public taxi",
        "AOT Suvarnabhumi Grab pickup points",
        "AOT Suvarnabhumi car rental services",
        "AOT Don Mueang Grab pickup points",
        "AOT Don Mueang car rental services",
        "AOT Phuket car rental services",
        "AOT Chiang Mai car rental services"
      ],
      "kind": "entity-observation",
      "cadence": "On change / operational page",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/aot-airport-ground-transport-pages/"
    },
    {
      "id": "aot-airport-flight-board-surface",
      "name": "AOT airport flight-board surface",
      "status": "active",
      "sourceName": "AOT airport flight status",
      "kind": "entity-observation",
      "cadence": "On change / operational page",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/aot-airport-flight-status/"
    },
    {
      "id": "aot-airport-traffic-stats",
      "name": "AOT airport traffic statistics",
      "status": "active",
      "sourceName": "AOT air transport statistics",
      "kind": "entity-observation",
      "cadence": "Monthly / fiscal-year workbook update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/aot-air-transport-statistics/"
    },
    {
      "id": "aot-airport-environment-support",
      "name": "AOT airport environmental support",
      "status": "active",
      "sourceName": "AOT annual report / SET filing",
      "kind": "entity-observation",
      "cadence": "Annual report publication with periodic factsheet refresh",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/aot-annual-report-set-filing/"
    },
    {
      "id": "thaiwater-water-quality",
      "name": "Thaiwater water-quality observations",
      "status": "active",
      "sourceName": "Thaiwater WaterQuality API",
      "kind": "entity-observation",
      "cadence": "10 to 30 minutes depending on station",
      "coverage": "River, canal, and water-station observations for flood and water-quality decisions.",
      "parameters": [
        "water_quality_index",
        "water_quality_station_state"
      ],
      "note": "Live connector using the public Thaiwater water-quality load endpoint, mapped into destination and water-anchor observations where current station coverage exists.",
      "sourcePath": "/data/sources/thaiwater-waterquality-api/"
    },
    {
      "id": "namtang-transit-structure",
      "name": "Namtang transit structure",
      "status": "active",
      "sourceName": "Namtang GTFS",
      "kind": "entity-observation",
      "cadence": "Daily / static feed refresh",
      "coverage": "Destination, hotel-area, station, airport, terminal, and pier transport-structure observations from the public OTP/Namtang stop spine.",
      "parameters": [
        "transport_structure_score"
      ],
      "note": "Live connector using the public Namtang compressed stop export to measure stop density, mode diversity, and transit-structure support around key traveler entities.",
      "sourcePath": "/data/sources/namtang-gtfs/"
    },
    {
      "id": "bangkok-rapid-transit-official-pages",
      "name": "Bangkok rapid-transit official pages",
      "status": "active",
      "sourceName": "BTS SkyTrain system maps and service pages",
      "sourceNames": [
        "MRT / MRTA metro maps and service pages"
      ],
      "kind": "entity-observation",
      "cadence": "Daily / on official route-map or service-page change",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/bts-skytrain-system-maps-and-service-pages/"
    },
    {
      "id": "srt-official-station-presence",
      "name": "SRT official station presence",
      "status": "active",
      "sourceName": "SRT timetable data",
      "kind": "entity-observation",
      "cadence": "Daily / on public timetable-site change",
      "coverage": "Destination and selected hotel-area official rail presence from the public SRT station list.",
      "parameters": [
        "official_rail_presence_score"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/srt-timetable-data/"
    },
    {
      "id": "mot-bus-terminal-support",
      "name": "MOT official passenger bus terminals",
      "status": "active",
      "sourceName": "MOT passenger bus terminals dataset",
      "kind": "entity-observation",
      "cadence": "Weekly / monthly catalog update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/mot-passenger-bus-terminals-dataset/"
    },
    {
      "id": "bks-station-ticket-support",
      "name": "BKS station and ticket-point support",
      "status": "active",
      "sourceName": "Transport Co. / BKS station and ticket-point locations",
      "kind": "entity-observation",
      "cadence": "Monthly / quarterly static dataset validation",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/transport-co-bks-station-and-ticket-point-locations/"
    },
    {
      "id": "bks-timetable-search-surface",
      "name": "BKS timetable search surface",
      "status": "active",
      "sourceName": "Transport Co. / BKS timetable resources",
      "kind": "entity-observation",
      "cadence": "Daily / search-surface validation",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/transport-co-bks-timetable-resources/"
    },
    {
      "id": "dlt-1584-complaint-stats",
      "name": "DLT 1584 complaint-support stats",
      "status": "active",
      "sourceName": "DLT 1584 public-transport complaints",
      "kind": "entity-observation",
      "cadence": "Monthly / fiscal-year workbook refresh",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/dlt-1584-public-transport-complaints/"
    },
    {
      "id": "dlt-gps-taxi-support",
      "name": "DLT GPS and Taxi OK taxi-oversight support",
      "status": "active",
      "sourceName": "DLT GPS passenger and complaint app",
      "sourceNames": [
        "DLT Taxi OK / Taxi VIP project"
      ],
      "kind": "entity-observation",
      "cadence": "On regulatory or project-page change",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/dlt-gps-passenger-and-complaint-app/"
    },
    {
      "id": "bangkok-motorcycle-taxi-support",
      "name": "Bangkok motorcycle-taxi support",
      "status": "active",
      "sourceName": "Bangkok motorcycle taxi stands and drivers",
      "kind": "entity-observation",
      "cadence": "Historical / static dataset with periodic validation",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/bangkok-motorcycle-taxi-stands-and-drivers/"
    },
    {
      "id": "otp-taxi-demand-analytics",
      "name": "OTP taxi demand and pickup/dropoff analytics",
      "status": "active",
      "sourceName": "OTP taxi GPS trip analytics",
      "sourceNames": [
        "OTP top taxi pickup and dropoff areas"
      ],
      "kind": "entity-observation",
      "cadence": "Monthly",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/otp-taxi-gps-trip-analytics/"
    },
    {
      "id": "marine-department-pier-registry",
      "name": "Marine Department passenger-pier registry",
      "status": "active",
      "sourceName": "Marine Department piers",
      "kind": "entity-observation",
      "cadence": "Weekly / monthly berth-registry update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/marine-department-piers/"
    },
    {
      "id": "marine-department-berth-status",
      "name": "Marine Department berth-status surface",
      "status": "active",
      "sourceName": "Marine Department Berth Status",
      "kind": "entity-observation",
      "cadence": "Operational / event-driven",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/marine-department-berth-status/"
    },
    {
      "id": "thai-smile-group-branch-locator",
      "name": "Thai Smile Group branch and depot locator",
      "status": "active",
      "sourceName": "Thai Smile Group branch and depot locator",
      "kind": "entity-observation",
      "cadence": "Daily / site-locator update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/thai-smile-group-branch-and-depot-locator/"
    },
    {
      "id": "bangkok-flood-monitoring-system",
      "name": "Bangkok flood-monitoring current-event surface",
      "status": "active",
      "sourceName": "Bangkok Flood Monitoring System",
      "kind": "entity-observation",
      "cadence": "Operational / event-driven",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/bangkok-flood-monitoring-system/"
    },
    {
      "id": "doh-highway-traffic-support",
      "name": "DOH highway traffic support",
      "status": "active",
      "sourceName": "DOH Highway Traffic",
      "kind": "entity-observation",
      "cadence": "Operational / support-surface refresh",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/doh-highway-traffic/"
    },
    {
      "id": "exat-expressway-support",
      "name": "EXAT expressway support",
      "status": "active",
      "sourceName": "EXAT Traffic Surface",
      "sourceNames": [
        "EXAT Data Catalog"
      ],
      "kind": "entity-observation",
      "cadence": "Operational / support-surface refresh",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/exat-traffic-surface/"
    },
    {
      "id": "hss-spa-license-support",
      "name": "HSS spa-license support",
      "status": "active",
      "sourceName": "HSS Health Establishment Directory",
      "sourceNames": [
        "HSS Spa Premium"
      ],
      "kind": "entity-observation",
      "cadence": "Weekly / monthly public support-surface refresh",
      "coverage": "Destination and hotel-base wellness-license support observations using public HSS health-establishment directory and spa-premium surfaces.",
      "parameters": [
        "spa_license_support_score"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/hss-health-establishment-directory/"
    },
    {
      "id": "moph-health-facility-support",
      "name": "MOPH health-facility support",
      "status": "active",
      "sourceName": "MOPH Health Facility Datasets",
      "kind": "entity-observation",
      "cadence": "Weekly / monthly public support-surface refresh",
      "coverage": "Destination and stay-fallback medical support observations using public MOPH/HS4 facility surfaces.",
      "parameters": [
        "medical_fallback_support_score"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/moph-health-facility-datasets/"
    },
    {
      "id": "dnp-park-tourism-support",
      "name": "DNP park tourism support",
      "status": "active",
      "sourceName": "DNP Tourism Datasets",
      "kind": "entity-observation",
      "cadence": "Scheduled / catalog refresh",
      "coverage": "Nature-heavy destination park-access support observations using public DNP tourism dataset surfaces and national-park dataset visibility.",
      "parameters": [
        "park_access_context_score"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/dnp-tourism-datasets/"
    },
    {
      "id": "gta-gold-reference-price",
      "name": "GTA Thai gold reference price",
      "status": "active",
      "sourceName": "Gold Traders Association Thailand gold prices",
      "kind": "entity-observation",
      "cadence": "Intraday / market-hours publication",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/gold-traders-association-thailand-gold-prices/"
    },
    {
      "id": "bot-usd-thb-reference",
      "name": "BOT USD/THB daily average",
      "status": "active",
      "sourceName": "Bank of Thailand API",
      "kind": "entity-observation",
      "cadence": "Business day / daily average publication",
      "coverage": "Gold-buying destination and market-anchor FX context when a Bank of Thailand API token is configured.",
      "parameters": [
        "usd_thb_reference"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/bank-of-thailand-api/"
    },
    {
      "id": "bangkok-civic-complaint-stats",
      "name": "Bangkok civic complaint stats",
      "status": "active",
      "sourceName": "Bangkok Open Data",
      "kind": "entity-observation",
      "cadence": "Monthly / district statistical update",
      "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"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/bangkok-open-data/"
    },
    {
      "id": "noise4thai-ambient-noise",
      "name": "Noise4Thai ambient noise",
      "status": "active",
      "sourceName": "PCD Noise4Thai",
      "kind": "entity-observation",
      "cadence": "Hourly / daily",
      "coverage": "Destination, hotel-area, and monitoring-cluster noise observations.",
      "parameters": [
        "leq_1h",
        "leq_24h"
      ],
      "note": "Live connector using public Noise4Thai monitoring cards to compute current destination and hotel-area ambient-noise observations.",
      "sourcePath": "/data/sources/pcd-noise4thai/"
    },
    {
      "id": "thairsc-road-safety",
      "name": "ThaiRSC road-safety observations",
      "status": "active",
      "sourceName": "ThaiRSC Road Accident Center",
      "kind": "entity-observation",
      "cadence": "Near real time / daily snapshot",
      "coverage": "Route and province road-safety observations for route fragility and holiday driving decisions.",
      "parameters": [
        "road_deaths_today",
        "road_injuries_today",
        "major_accident_context"
      ],
      "note": "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.",
      "sourcePath": "/data/sources/thairsc-road-accident-center/"
    }
  ]
}
