DEV Community

Alessandro Binda
Alessandro Binda

Posted on • Originally published at relomap.app

Self-Hosting Mistral 7B With Ollama on a Budget Server

Next.js + Supabase + Ollama. Zero API costs. 3,000+ articles generated for free.


Six months ago, I wanted to move abroad but couldn't find a single platform that gave me real, verified cost-of-living data without a paywall. Numbeo has data but no guides. NomadList has rankings but costs $99/year. Expatistan has comparisons but limited cities.

So I built ReloMap. It's free, has 208 cities, 3,000+ articles, and costs me approximately €0/month to run.

The Tech Stack

  • Frontend: Next.js 15 (static export on Cloudflare Pages — free)
  • Database: Supabase PostgreSQL (free tier, 500MB)
  • AI: Mistral 7B via Ollama (self-hosted on a €8/month Hetzner server)
  • Translations: Google Translate API (free for our volume)
  • Search engines: IndexNow for instant indexing (free)
  • CDN: Cloudflare Pages (free, unlimited bandwidth)

Total monthly cost: €8 (just the server for Ollama)

The Data Pipeline

The hardest part wasn't building the app — it was getting reliable data. Here's what I learned:

Numbeo has the best data but rate-limits aggressively (429 after ~20 requests). Solution: I wrote a gentle scraper that processes 1 city every 30 minutes via cron. After 4 days, I had all 208 cities.

Expatistan has no rate limit but fewer cities (70). Good for cross-validation.

Livingcost.org required Playwright (headless browser) because the data loads via JavaScript. Added 90 more cities this way.

For every city, I merge data from all three sources. Numbeo data takes priority (quality score 95/100), with Expatistan and Livingcost.org filling gaps.

Generating 3,000+ Articles for Free

Each city gets 15 article types (cost-of-living, neighborhoods, digital nomad guide, tax guide, etc.). That's 3,120 articles.

I generate them using:

  1. Groq API (free tier, Llama 3.3 70B) — primary
  2. Mistral API (free tier, Mistral Large) — fallback
  3. Ollama (self-hosted Mistral 7B) — emergency fallback

Each article injects real data from our Supabase database. The prompt includes verified prices, safety scores, and climate data — so the articles contain real numbers, not AI hallucinations.

Translation to Italian, Spanish, and Portuguese uses Google Translate (free for our volume). Not perfect, but good enough for SEO in non-English markets.

The Results

  • 208 city profiles with verified data
  • 3,000+ articles in 4 languages
  • 432 static pages
  • ~1 million words of content
  • Total cost: €8/month
  • Time to build: ~3 months

The site is live at relomap.app. Everything is free — no paywall on data.

What I'd Do Differently

  1. Start with fewer cities — 50 cities well-researched > 208 cities with gaps
  2. Build the audience first — I built the product before having users
  3. Focus on one language first — Translating 3,000 articles is a maintenance nightmare

If you're building something similar, the ReloMap dataset is freely available as a machine-readable file.


Follow me for more on building products with zero budget. The full platform is at relomap.app.

Top comments (0)