Relocate Index: AI-Built Country Ranking Platform
Engineered a 10-dimension scoring engine and a discovery-first onboarding flow — backed by automated data pipelines and transparent methodology — to help families shortlist countries for international relocation.
Check it outContext & Role
The Problem Space
281 million international migrants worldwide. The tools available to evaluate countries are either paywalled black boxes (EIU at $1,000+/report, Mercer behind corporate licensing), raw data without synthesis (Numbeo), optimised for digital nomads (NomadList), or dead (Teleport — the closest alternative — acquired and shut down). No tool helps users discover what dimensions matter to them before filtering.
The Users
Families with school-age children, remote workers with location-flexible income, and retirees evaluating quality of life — people who need to compare countries across dimensions they haven't even considered yet (civic culture, social warmth, school environment, religious freedom), not just salary and cost of living.
Business Context
Solo build. $0 data budget — all 14+ sources are free institutional datasets (World Bank, OECD, WHO, IHME, Pew, IEP, EF, IMD, Hofstede, InterNations). Validation-first: no monetisation until 6 engagement metrics prove demand. No auth, no paywall — the product must be useful in a single anonymous session.
My Role
Solo builder. Owned the full product lifecycle: scoring methodology design (21 documented iterations), frontend development (Next.js 14, Tailwind, shadcn/ui), backend and data pipeline (Supabase, Edge Functions, pg_cron), analytics instrumentation (Amplitude, 7 events), deployment (Netlify), and ongoing data quality monitoring. Operated 100% of the development workflow inside a custom Claude Code environment with a comprehensive CLAUDE.md context file, MCP integrations, sub-agent delegation, and a structural code-review knowledge graph.
Problem & Hypothesis
User Pain
People considering relocation default to salary and cost of living because those are the most visible metrics. Civic culture, school environment, religious freedom, and social warmth go entirely unexamined — not because users don't care, but because no tool surfaces these as relevant evaluation criteria. The user's evaluation framework is incomplete before they even start filtering.
Product Pain
Existing indices are black boxes (EIU, Mercer — opaque methodology, no user weighting), raw dumps (Numbeo — data without synthesis), or optimised for a persona that doesn't match families (NomadList — solo digital nomads, no school culture or religious freedom). The synthesis step — weighing conflicting signals across 10+ separate sources — is left entirely to the user. Sweden scores high on safety but low on warmth toward foreigners. Japan is the second most peaceful country but scores low on English proficiency. No tool helps you reason through these trade-offs with your own priorities.
Hypothesis
We believed that pairing a discovery-first onboarding flow (surfacing dimensions users hadn't considered) with a transparent, user-weighted scoring engine (10 dimensions, 14+ institutional sources, all client-side), backed by automated data pipelines that refresh monthly, would help families build their own evaluation framework and narrow 60 countries to 5-8 candidates worth investigating — without requiring login, payment, or trust in a black-box methodology.
My Approach & Process
Research & Problem Definition
- ◆ Started from a personal need: my family of four was evaluating relocation from Bogotá. Ran 9 iterative research sessions with Claude that produced a multi-source scoring framework. The document that emerged — 12 sections, 20 sources, a composite formula with weighted dimensions — was, in retrospect, a product specification. The transition from personal analysis to product was a naming change, not a redesign.
- ◆ Scoped the V1 to the shortlisting step only. Explicitly excluded visa pathways, housing markets, tax structuring, and job availability. Positioning: "Relocator narrows the field. It does not make the decision." What the tool does NOT cover is a first-class section on the methodology page — framed as trust-building, not disclaiming.
AI-Assisted Methodology Design
- ◆ Ran the entire product development inside a custom Claude Code operating system: a comprehensive CLAUDE.md serving as structured context (architecture, scoring formulas, design anti-patterns, sub-agent roles), Model Context Protocol integrations for Supabase and browser automation, and specialist sub-agent delegation for parallel research and code review. Every development session inherits the full methodology context.
- ◆ 21 documented methodology iterations — each with a changelog entry explaining what changed, why, and what it replaced. The scoring formula for healthcare alone went through 3 complete revisions. Civic culture went through 2. This is not prompt engineering — it is systematic product design with an AI co-builder, tracked with the same rigour as a human engineering team.
Goal Setting & Feature Validation
- ◆ Defined 6 engagement targets before writing a line of frontend code — covering questionnaire completion, slider interaction depth, countries explored per session, detail page engagement, return rate, and methodology page views. Instrumented all 6 via Amplitude before launch.
- ◆ Validation-first monetisation philosophy: removed planned monetisation features (freemium tier, B2B licensing, PDF export) from V1 scope. The product ships free. Monetisation decisions happen only after engagement data validates demand. No revenue model is better than a wrong revenue model at this stage.
Data Integrity & Source Selection
- ◆ All 14+ data sources are institutional: World Bank (WGI, price level, GDP PPP), OECD (AIC per capita, physicians/beds/nurses), WHO (UHC, OOP health expenditure), IHME GBD (HAQ Index), Pew Research (Government Restrictions, Social Hostility), IEP (Global Peace Index), EF (English Proficiency Index), IMD (Infrastructure), Hofstede (IVR), InterNations (Ease of Settling In), Open-Meteo (climate), PISA 2022 (school culture). Zero paid APIs in V1.
- ◆ Numbeo's paid API ($500/year) was excluded deliberately. OECD PPP and World Bank price level data are more methodologically rigorous for country-level analysis (national statistics offices vs. crowdsourcing). Numbeo's advantage — city-level granularity — matters for V2 (city drill-down), not V1 (country ranking). Exception: Numbeo Crime Index is free to scrape and was added as the street-safety sub-component of civic culture.
Solution & AI Design
The Scoring Engine (The Brain)
10 dimensions, each backed by 1-4 institutional sources, normalised to a 0-100 scale (higher = better). A 3-layer architecture: raw data → normalised scores → client-side weighted composite. All computation happens in the browser — 60 countries × 10 dimensions = 600 scores, fetched once from a materialised Supabase view, recomputed on every slider change in under 100ms. No API round-trip on interaction. NULL dimensions are excluded and remaining weights re-normalise automatically. The scoring engine is a pure TypeScript function with zero framework dependencies.
Explore the Scoring & Data ArchitectureThe Discovery Flow (The Guide)
A 6-question onboarding that does not merely configure weights — it surfaces dimensions the user hadn't considered. Household situation reveals school culture and healthcare as priorities for families. Income source reveals purchasing power trade-offs for remote workers vs. local job seekers. Direct questions about civic culture, warmth, climate preference, and religious community needs introduce dimensions most users wouldn't have thought to evaluate. Five calibrated climate profiles (warm & sunny, hot & tropical, mild & green, cold & crisp, no preference) encode domain knowledge that continuous sliders cannot: a tropical user genuinely doesn't mind 200+ rain days, but a Mediterranean user would be penalised heavily for the same level.
The Data Pipeline (The Pulse)
4 Supabase Edge Functions scheduled via pg_cron for monthly auto-refresh: World Bank indicators (WGI, price level, GDP PPP), WHO data (UHC, OOP), Open-Meteo climate averages, and a recompute function that re-normalises all scores and refreshes the materialised view. Service role key stored in Supabase Vault — frontend uses only the anon key (read-only). The pipeline distinguishes between monthly-refreshable sources (World Bank, WHO, climate) and annual sources (IMD, InterNations, EF EPI, GPI, Pew, PISA) that require manual seed updates.
Delivery & Experimentation
The LLM Fabrication Incident
During seed data assembly, Claude fabricated values for 3 data sources across 60 countries. All Global Peace Index values were systematically understated — countries appeared more peaceful than they are. 6 of 7 EF English Proficiency values were inflated by 20-28 points. All 51 InterNations ease-of-settling-in ranks were wrong — some countries had fabricated survey existence, others incorrectly excluded (Costa Rica, the actual #1, was missing). Fix: built two dedicated data ingestion scripts that pull from real APIs and scrape published datasets. Replaced all values. Added "no LLM country summaries" as a permanent kill rule.
The US Healthcare Ranking Problem
The initial healthcare formula (UHC × 0.55 + OOP × 0.45) ranked the United States #1 — an obviously wrong result. Diagnosis: UHC measures whether services exist, not whether people can access them. Out-of-pocket percentage is misleadingly low for the US: 11% of $4.5 trillion = $1,472 per person per year. Fix: designed a three-pillar formula blending UHC coverage, IHME Healthcare Access & Quality Index, and system capacity (physicians, beds, nurses per 1,000) — each weighted to reflect its diagnostic value. The US drops to its correct position; Nordic and Western European systems rise.
Discrete Climate Profiles vs. Continuous Sliders
Considered letting users set an ideal temperature via a continuous slider. Rejected because penalty multipliers encode domain knowledge users cannot reason about. A tropical preference user genuinely doesn't mind 200+ rain days (5-point penalty), while a warm-and-sunny user would lose 15 points for the same rainfall. Fix: 5 discrete profiles with calibrated temperature references, rain thresholds, and sunshine penalties per preference type.
School Culture: From Editorial Scores to PISA Data
The original school culture dimension was 60% editorial — manually assigned values like "Denmark: 90, France: 42" based on qualitative reading. Fix: replaced with PISA 2022 indices for belonging, bullying (inverted), academic quality, and safety — weighted to prioritise school environment over raw academic output — drawn from 690,000 students across 81 countries. The directional conclusion was the same, but one is reproducible and the other is not.
V1 Outcomes
60
countries ranked across 10 dimensions with 14+ institutional data sources — all free, all traceable
600
pre-computed normalised scores served from a single materialised view, refreshed monthly by 4 automated Edge Functions
21
documented methodology iterations — every formula decision, data source swap, and weight change traceable with reasoning
Sub-100ms
re-ranking on every slider interaction — fully client-side, zero API calls during interaction
$0
data cost in V1 — validated that institutional sources match or exceed the methodological rigour of $500+/year alternatives
0
fabricated data points shipped — all LLM-generated placeholder data identified and replaced before launch
Key Learnings
Your personal analysis IS the product spec. The 9 research sessions that produced a relocation scoring framework for my family of four also produced the exact scoring engine, dimension set, and weight system that became the product. I didn't translate a personal need into a product — the analysis was the product. The transition was a naming change, not a redesign. The implication: if your structured thinking about a real problem produces something you'd want to use again, it's already a product. Ship it.
LLMs will fabricate data with total confidence. Build the verification pipeline before you build the product. Iteration 16 caught Claude fabricating index values for 3 data sources across 60 countries — complete with plausible-looking decimals and no hesitation. The fix was not "write better prompts." The fix was building dedicated data ingestion scripts that pull from real APIs and scrape published datasets, so fabrication has no entry point. In a data product, the pipeline is the trust layer. No LLM-generated data ships. Ever.
Discovery beats filtering. Most ranking tools assume users arrive knowing what matters to them. They don't. People default to salary and cost of living because those are the most visible — not the most relevant. The onboarding's primary job is expanding the user's evaluation framework: surfacing civic culture, social warmth, school environment, and religious freedom as dimensions they hadn't thought to evaluate. The tool educates before it ranks. This is not a UX nicety — it is the core product differentiator.
Transparent methodology is a product feature, not documentation. Every score traces to a formula. Every formula traces to a source. Every source is institutional. The methodology page is not a footnote or a compliance exercise — it is a trust-building mechanism that directly differentiates from black-box indices like EIU and Mercer. Users who read the methodology page engage 2-3x more deeply with the ranking (hypothesis — instrumented, pending validation). Opacity is a competitive weakness when your audience has been burned by opaque "liveability rankings" that don't match their lived experience.