Inspiration
The remote work revolution has created 35 million+ location-independent professionals — yet the process of choosing where to actually live is still completely broken. We've all been there: 6 browser tabs open, cross-referencing Numbeo cost estimates with Reddit threads, weather apps, visa forums, and Google Maps — spending an entire weekend just to figure out whether Lisbon or Medellín is the better move for the next three months.
We wanted to build the tool we wished existed: one that knows your baseline, pulls live data, applies AI reasoning, and gives you a clear, structured answer in under 30 seconds.
What We Built
Nomad Intelligence is a full-stack AI-powered city analysis platform. You enter your current city, monthly budget, internet requirements, and lifestyle preferences once, then search any destination city in the world and get back a complete intelligence report including:
- A personalised delta score comparing the target city to your current setup across 6 dimensions: internet speed, workspace quality, cost of living, safety, outdoor access, and lifestyle
- An interactive map with 10–12 real GPS-coordinate locations — coworking spaces, hiking trails, beaches, restaurants, viewpoints — generated by AI and plotted live with Leaflet
- A full cost breakdown (housing, food, transport, coworking, leisure) with a budget comparison
- A live 7-day weather forecast with temperature and rainfall charts
- A clear verdict: Recommended, Conditional, or Disqualified — based on your selected travel mode (Nomad, Relocator, or Executive)
How We Built It
Frontend: React 18 + Vite, with Recharts for data visualisation and Leaflet for the interactive map. The entire UI lives in a single App.jsx with a custom light-mode Red Bull–inspired design system built from scratch in pure CSS-in-JS.
Backend: FastAPI (Python 3.11) with Pydantic validation. A clean REST API that orchestrates geocoding, weather fetching, prompt construction, and AI inference in a sequential pipeline.
AI: Google Gemini 2.0 Flash. The core of the system — given a structured prompt containing the user's profile, live weather context, and travel mode, it returns a single comprehensive JSON object with ~30 fields covering costs, scores, activity locations with real GPS coordinates, visa info, neighborhood recommendations, and a 3-sentence city assessment.
Data: Open-Meteo (free, no key required) for both geocoding and 7-day weather forecasts. The live weather summary is injected directly into the Gemini prompt so its outdoor recommendations reflect actual current conditions.
Deployed on: Render (backend) + Vercel (frontend)
Challenges We Faced
Rate limiting in production. Everything worked perfectly locally, but once deployed to Render's free tier, Open-Meteo started returning 429 Too Many Requests. Render's shared IP pool is used by thousands of apps, so the free-tier IP rate limit gets hit almost instantly. We solved this by implementing exponential backoff retry logic (1s → 2s → 4s → 8s) and a graceful weather fallback — if all retries fail, the pipeline continues without live weather rather than crashing, so the user still gets the full city analysis.
Structured JSON from AI. Getting Gemini to consistently return valid, parseable JSON with real GPS coordinates (not hallucinated ones) required careful prompt engineering — explicit schema, coordinate constraints, temperature tuning, and a JSON repair utility for handling truncated responses near the token limit.
Personalisation vs generalisation. Generic city data is easy to find. Building a system that re-frames every data point relative to your specific current setup — and produces a meaningful delta score — required thinking carefully about normalisation across dimensions with completely different units (Mbps vs $/month vs 1–10 scores).
What We Learned
- Prompt engineering is real engineering. The quality of Gemini's output is almost entirely determined by the structure and constraints in the prompt.
- Deployment environments behave very differently from local. Rate limits, CORS, IP-based throttling — these don't show up in
localhosttesting. - AI can generate spatially-aware content. Having Gemini produce real GPS coordinates and then plotting them on a live map is genuinely powerful — it transforms a text analysis into an interactive geographic experience. ```
Built With
- antigravity
- css
- fastapi
- gemini-api
- google-gemini-2.0-flash
- leaflet.js
- node.js
- open-meteo-api
- pydantic
- python
- react
- recharts
- render
- rest-api
- uvicorn
- vercel
- vite
Log in or sign up for Devpost to join the conversation.