← Back to Projects
Side Project2024

Tourist Viability Index

Comprehensive ranking engine for 190+ countries, fusing safety, geopolitics, economics and cultural data into a single recomputable score

JavaScriptData AnalyticsAPIPersonal

I built the Tourist Viability Index entirely by hand (vanilla JavaScript, plain HTML and CSS, no frameworks, no backend) to rank 190+ countries by a composite travel viability score. It fuses roughly twenty signals (peace indices, passport mobility, homicide and femicide rates, GDP, cost of living, air quality, and fifteen categorical modifiers) into one recomputable score, with explicit bias corrections that most travel indices quietly ignore. Two scoring modes, live government advisory data, and zero infrastructure cost.

The Tourist Viability Index (TVI) is a personal side project I built entirely by hand: vanilla JavaScript, plain HTML and CSS, no frameworks, no build tools, no backend. It ranks 190+ countries by a composite travel viability score. It lives on GitHub Pages and costs nothing to run.

The premise is simple: every existing travel safety index is either fragmented across too many sources, or quietly biased in ways it doesn't acknowledge. Most major indices draw heavily from Western government advisories and English-language crime data, which systematically over-penalise high-visibility countries and under-penalise places that simply don't generate international news coverage.

TVI fuses roughly twenty signals into one recomputable score per country: peace indices, passport mobility, homicide and femicide rates, GDP, cost of living, air quality, and fifteen categorical modifiers, including factors conventional indices don't touch at all, like Muslim-friendliness, holy site presence, overtourism fatigue, and censorship level. The model doesn't pretend to be neutral. It names its biases explicitly and corrects for them: a flat Eurocentric reporting adjustment, a microstate population-scale correction, and a femicide data-absence penalty rather than treating missing data as zero.

Two scoring modes exist (standard and Solo Traveller), and toggling between them live-recomputes and re-sorts the entire list instantly. Live government advisory levels and hantavirus outbreak signals are fetched in real time, with every external call failing gracefully if the API is unreachable. First render target is under 200 milliseconds. Infrastructure cost: zero. Deployment process: one git push.

It's the project that most directly reflects how I think, about data, about bias, and about what you can build when you strip away everything that isn't necessary.

More

Key Highlights

Fuses ~20 signals: peace, passport mobility, homicide, GDP, cost of living, air quality
Bias corrections: Eurocentric adjustment, microstate & femicide data-absence penalties
Real-time API: Smartraveller government travel advisories & Hantavirus outbreak data
Live at ammariskandar.github.io/tourist-viability-index/
© 2026 Ammar Iskandar