Methodology
Every page in the atlas is derived from the same pipeline: fetch from well-known public sources, cross-validate where possible, render deterministically, and commit the result to a public repository. Nothing is hand-curated or paid.
01 Data sources
Five primary sources, each cited at the foot of every page: REST Countries (country metadata, currency, languages), GeoNames cities15000 (6,050 cities), Wikipedia visa-requirements articles (bilateral visa policy), Passport Index open dataset (cross-reference for visa status), and Open-Meteo Archive ERA5 (daily observations 2014–2023 aggregated to monthly climate normals for 200 tier-1 cities).
02 Tier selection
We cover 50 passport nations and 200 cities, ranked by population and travel volume. The selection is deterministic — rerunning the pipeline produces the same list.
03 Cross-validation
Visa records are merged from Wikipedia and Passport Index. When the two disagree, Wikipedia prevails (more current) and the record is flagged with conflict=true in the underlying data. Climate values come from a single source (Open-Meteo) and are not averaged across providers.
04 Rendering
Content is rendered from templates keyed by data. Identical inputs produce identical pages (hash-checked). No LLM-assisted prose is used in data fields — only in stable template prose (overview, tips) that reads the same across every render.
05 Refresh cadence
Source data is re-fetched quarterly via GitHub Actions. When a country's status changes (e.g., visa policy update), the corresponding pages regenerate and the sitemap's lastmod date updates.
06 Limitations
Climate normals are 10-year averages (2014–2023). Individual years vary. Visa policies can change at short notice — always reconfirm with the destination embassy. Some small cities lack weather stations with complete coverage; those pages are marked “climate data coming soon.”
- 250
- Countries indexed
- 50
- Tier-1 passport nations
- 6,050
- Cities in database
- 200
- Cities with climate
- 2,450
- Visa records
Open-source data and pipeline: github.com/patrache/travelscape →