← Portfolio

FOMO

A cron-driven pipeline that scrapes events from 9+ sources, scores them with a local LLM, and writes the best ones to Google Calendar.

Date: March 2026 Tech: Python, Ollama, Playwright, Google Calendar API, Spotify API Topics: AI/ML, web scraping, automation

Details

FOMO scrapes events from 9+ sources, scores each one with a local LLM, and writes the ones worth attending directly to Google Calendar. It runs on cron with no server.

How it works

  1. Scrape 9+ event sources in parallel (DoTheBay, Fandango, FunCheap, Lectures on Tap, etc.)
  2. Filter out past events
  3. Auto-pass movies on your watchlist and artists from your Spotify top 200
  4. Score everything else 0-10 with a local LLM based on your preferences
  5. Drop anything below the FOMO threshold (e.g., 9.2)
  6. Write survivors to Google Calendar with score, reason, emoji, and source links

Events are deduplicated by fingerprint hash so re-runs don’t create duplicates. Failed scrapers fall back to cached results so one broken source doesn’t kill the whole run.

Why a local 3B model

Because I’m cheap. Also because it works- the task is classification, not generation. Given an event and a user profile, output a number and a short reason. A 3B model on Apple Silicon handles that fine at ~19 tok/s with no API costs or rate limits.

The real work is in the prompt, not the model. It includes my full preference profile- specific cuisines, artists, genres, hard dislikes, and a blacklist. Score anchors tell the model that 9+ means “would drop everything” and fewer than 0.5% of events should qualify. Without that calibration the model scored everything 6-8 and the filter was useless. With it, the pipeline surfaced events I’d never have found on my own- like Repair Cafe SF and Lectures on Tap- while nailing obvious fits like Lord of the Rings screenings at Alamo Drafthouse. No fine-tuning required.

The source is on GitHub.

Google Calendar populated with FOMO-scored events Event detail showing FOMO score and reason Movie event with cinema passthrough scoring