Climate normals
Primary
SourceOpen-Meteo Historical Weather API (ERA5 reanalysis)
Retrieved6 August 2026
HowDaily 2019-2023 normals per city coordinate, averaged to monthly highs, lows and precipitation by scripts/build_city_climate.cjs.
Time zones
Primary
SourceIANA Time Zone Database
Retrieved6 August 2026
HowZone resolved from each city's coordinates with tz-lookup, then evaluated at runtime by the Intl API so DST is always current.
City photographs
Primary
SourceWikimedia Commons file pages
Retrieved6 August 2026
HowPhotographer, licence and file page recorded per image in images/cities/attribution.json and shown as a visible credit on the page. Only PD, CC0, CC BY and CC BY-SA accepted.
713 images
Cost of living components
Primary
SourceNumbeo cost-of-living index
Retrieved5 August 2026
HowComponent prices scraped per city in local currency exactly as Numbeo reports them, converted to USD at apply time. Numbeo is itself crowd-sourced, so it is primary only for the Numbeo index, not for ground truth.
What this does not coverNumbeo sample sizes are small in less-visited cities and its 'last updated' date varies widely per city.
Service providers by language
Primary
SourceThe provider's own website, or an embassy list of physicians published by language
Corroborated againstbangkok.diplo.de/th-de/service/aerzteliste-1506722, Each provider's own site, recorded per row as sourceUrl in data/service-languages.json
Retrieved12 August 2026
HowEvery row records the exact URL the language claim was read on and an evidence tier: official (a government or embassy list defined by working language), self-declared (the provider's own site), directory (a third-party aggregator only), or visited (we confirmed in person; unused so far). Read the rest
scripts/build_services.cjs refuses to build if any row lacks a sourceUrl, a known evidence tier, a known language or a real city slug. The tiers are printed on every card. scripts/verify_service_links.cjs re-fetches every url and sourceUrl and reports status, redirect target and page title, so a link that rots or starts pointing somewhere else is caught rather than assumed; the 2026-08-12 runs removed one row whose cited article did not contain the claim, dropped two invented domains, corrected a link that redirected to the wrong branch, and later dropped five more rows whose sources turned out to be a dead domain, a 404, an unreachable directory, or a site that never actually states a spoken language. The checker retries three times before calling a link dead, because a single transient failure once reported six healthy URLs as dead. One live site (vetinlisbon.pt) refuses Node's fetch entirely and was confirmed by hand.
253 providers across 21 of 710 cities, 12 service types and 32 languages. 6 official, 131 self-declared, 116 directory. Chiang Mai 34, Tbilisi 30, Lisbon 19, Bangkok 18, Hanoi 16, Da Nang 16, Medellin 14, Ho Chi Minh City 14, Barcelona 11, Mexico City 11, Bali 10, Budapest 10, Belgrade 8, Dubai 8, Buenos Aires 7, Prague 6, Berlin 5, Warsaw 5, Cape Town 4, Kuala Lumpur 4, Tallinn 4. Coverage is 3 percent of the site's cities.
What this does not coverTHE EVIDENCE MIX SHIFTED ON 2026-08-12. Read the rest
An owner decision to grow volume via aggregator directories took the directory tier from 39 rows to 105, roughly half the set, so the average row is now weaker than when the dataset was 62 rows. Many directory rows rest on a ROSTER-LEVEL claim ("the clinics we list speak English") rather than a statement about the named business; each such row says so in its note. PRIMARY FOR THE CLAIM, NOT FOR FLUENCY. We source that a provider is stated to work in a language; we have not verified that it does, and no row carries the 'visited' tier. A hospital offering interpretation is counted under the languages it interprets, which is not the same as a doctor speaking them: Chiang Mai Ram and Thonglor Pet are interpreter desks, not multilingual clinicians. The 17 directory-tier rows rest on guides and aggregators that may sell placement, making them the weakest entries. Only Bangkok has official-tier rows. The US Consulate Chiang Mai health-facilities and legal-provider PDFs and the US Embassy Georgia mental-health resource PDF are all image-only or protected and could not be read; retrieving those would upgrade several rows and is the obvious next improvement. A Russian-language directory of Russian-speaking doctors in Georgia (needdoc.ru) is an unexploited language-defined source of the same kind. Coverage is a pilot, not a map of any city's real provision, so absence from this list means nothing.