Projects

Iran Monitor

A real-time intelligence dashboard for the Middle East.

Stack

  • React 19
  • TypeScript 5.9
  • Vite 6
  • Tailwind CSS 4
  • Zustand 5
  • MapLibre GL 5
  • deck.gl 9
  • Express 5
  • Upstash Redis
  • NVIDIA NIM
  • Gemma 4 31B
  • Vercel

Explained

I’m Persian-American. The gulf wars have been a contentious topic. I wanted to know what was actually happening and get comfortable with agentic development at the same time. So I built a real-time dashboard.

It pulls 10 public feeds (live flights, ships, conflict events, news, water stress, markets) and draws them onto a 2.5D map, fully on free data. Every request goes through an Express function that reads Redis first and then calls the upstream source on a miss.

The only real cost is Vercel because the LLM pipeline takes too long (aka need 800s limit on functions). The pipeline processes GDELT-based events to extract more accurate metadata.

Transparently, this was the hardest part. I settled on Gemma 4 31B after sending one real batch to ~20 models from NVIDIA’s catalog… and it was the only one that worked.

  • ~15s a batch on idle
  • <90s under load

The real goal of this project wasn’t the dashboard, but the development process. What I took away:

  1. Cache everything first and treat upstream as unreliable
  2. Measure model choices, not just vibe it out
  3. Treat free tiers as temp, keep re-testing models