Transparency
This page explains exactly what the application receives, what it calculates, what it stores, and where the limits are. It is written for residents, journalists, planners, and reviewers who need to judge whether a number is fit for their purpose.
The central distinction
Current conditions and forecasts come from the Open-Meteo forecast API . The application requests temperature at 2 metres, relative humidity at 2 metres, apparent temperature, precipitation, weather code, wind speed, and daily extremes for seven days. Data is requested for the Asia/Manila timezone.
Open-Meteo provides model grid data interpolated to a coordinate. The grid is typically several kilometres wide. A reading at a locality centre is therefore not a barangay-level measurement, not a station observation, and not a guarantee of conditions at your exact position. Elevation, urban heat islands, shade, and local wind can produce large differences within a few kilometres.
The interface labels current conditions as model data, hourly and daily values as forecasts, and the heat index as an application estimate. Where the provider does not return enough inputs, the application shows “unavailable” rather than filling the gap with a synthetic value.
Heat index combines air temperature and relative humidity to describe how hot the air feels. SILONG PH converts the inputs from Celsius to Fahrenheit and applies the US National Weather Service / Rothfusz regression, including the documented low-humidity and high-humidity adjustments. The result is converted back to Celsius and rounded to one decimal place.
The calculation is valid only within the input ranges used by the regression. If relative humidity is outside 1–100%, or temperature is outside 20–50 °C, the application returns no heat-index value. It also returns no value when the polynomial result would exceed 60 °C, because those combinations lie outside the NWS chart and produce implausible numbers. This is deliberate: extrapolating outside the validated range would produce a confident-looking but unreliable result.
Heat index is not the same as air temperature, apparent temperature, or a wet-bulb globe temperature. Shade, wind, activity, clothing, hydration, age, pregnancy, disability, and chronic illness all affect risk. A single number cannot capture all of those factors.
Classification uses the official DOST-PAGASA heat-index categories. PAGASA publishes integer bands with gaps between them; the application uses each band's lower bound for continuous values. For example, 32.5 °C is treated as Caution and 33.0 °C as Extreme Caution.
| Category | Heat index | What it means |
|---|---|---|
| Below caution threshold | Below 27 °C heat index | The estimated heat index is below the lowest PAGASA hazard band. Heat can still affect sensitive people, especially during direct sun or strenuous activity. |
| Caution | 27–32 °C heat index | Fatigue is possible with prolonged exposure and physical activity. PAGASA advises caution. |
| Extreme Caution | 33–41 °C heat index | Heat cramps and heat exhaustion are possible. Continuing activity could lead to heat stroke. |
| Danger | 42–51 °C heat index | Heat cramps and heat exhaustion are likely. Heat stroke is possible with continued exposure or activity. |
| Extreme Danger | 52 °C and above heat index | Heat stroke is imminent with continued exposure. This is an emergency-level heat category. |
Source: DOST-PAGASA Heat Index , accessed 2026-10-25. Categories are used for classification; the calculated value remains an application estimate.
Weather snapshots are cached for 10 minutes. If the provider is unavailable, the application may show the last successful snapshot for up to 3 hours, with a visible stale warning, the original retrieval time, and an explanation. It never replaces a failed reading with a made-up one.
An in-process cache is always available. When Redis is configured, fresh and stale snapshots are shared across application instances, and rate-limit counters are shared as well. If Redis is unreachable, the application falls back to process memory rather than failing requests. A scheduled endpoint can warm the regional cache every 10 minutes; see the deployment guide.
The interface shows the model time and the retrieval time separately. A forecast can be current even when a provider request is old, and a retrieval can be recent even when the model itself has not updated. Treat both timestamps as information, not decoration.
Province and city/municipality names and codes come from the Philippine Standard Geographic Code (PSGC) system. Boundaries come from the faeldon/philippines-json-maps dataset (MIT), based on PSA geography. The application stores 10-digit PSGC codes and uses 2023 boundaries.
Central Luzon contains seven provinces and 130 cities and municipalities in the dataset. Angeles City and Olongapo City are independent cities included for regional coverage; their source boundary files do not include geometry, so they use geocoded representative points and are marked accordingly. A province weather point is the provincial capital or a representative point, not a province-wide average.
Map boundaries are administrative geography. They do not represent heat zones, risk zones, or measurements. The map's province fill is an overview of one model point per province and must not be read as a continuous surface.
Public-facility records are imported from OpenStreetMap contributors under the Open Database License (ODbL), or created by an authorised administrator. Imported records begin with the status Unverified. They are public facilities from an external source, not confirmed cooling centres. The application does not claim that an unverified place has air-conditioning, water, seating, or public access.
A reviewer can set a record to Pending verification, Verified, Temporarily unavailable, Closed, or Unverified. Verification requires checking the facility details, public access, and cooling suitability. The record shows the verification date, last review date, reviewer note where available, and source. Verification is not a real-time occupancy or availability signal, and conditions can change without notice.
Operating-hours labels are derived only from listed hours using the Asia/Manila timezone. They can be incomplete or wrong. A label such as “Open now” means only that the listed hours include the current time; it does not mean the facility is staffed, cool, or accepting visitors.
The application does not automatically ingest PAGASA, DOH, NDRRMC, or LGU advisories. An administrator may record an advisory only with a title, description, affected area, severity, named issuer, issue time, optional expiry, and a verifiable source URL. The public alerts page shows only active, unexpired records and links to the source.
An empty official-advisory list means no advisory has been recorded in this application. It does not mean no advisory is in effect. Application-generated heat notices are calculated from the estimated heat index and are labelled “not official” wherever they appear.
Automated tests cover heat-index category boundaries and input validation, weather-response normalization, stale-data handling, operating-hours parsing, geography lookups, authentication helpers, place validation, and moderation rules. The production build and TypeScript checks are run before release. Automated checks cannot prove that a facility is open or that a model point matches your street; human review and official sources remain necessary.
If a facility record is wrong, use the report form on its page. If you believe a data source or method is misrepresented, contact the operator through the channel listed on the About page. Please include the specific page and the official source that supports the correction.
Methodology last reviewed 25 October 2026. This page describes the behaviour of this codebase; a deployment may have different data, configuration, or operator contacts. Check the About page for deployment-specific information.