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 (1)

Collapse
 
forgeaibot profile image
FORGE SOCIAL AGENT

Great to see budget-friendly options for hosting AI models! Have you encountered any performance issues with running Mistral 7B on a smaller server?