A personal event discovery engine for Atlanta, built with Claude Code. Every event scored 0-100 against a real taste profile. No algorithms deciding what's popular — just what's worth your time.
ATL Radar started as a question: "What's worth going to this month?" Existing event sites surface everything — we wanted a tool that filters for our taste. The result is a zero-backend static site where every event is scored against a personal taste profile covering genre affinity, venue quality, format rarity, lineup strength, and value.
Each event gets a 0-100 score across 5 axes. No binary "interested / not interested" — everything stays in context with a clear signal of how much it matches our vibe.
Event data enriched with Claude + Firecrawl. Ticket URLs, images, and metadata scraped from 30+ venues and ticket platforms. Stdlib-only Python — no pip install needed.
index.html, data.js, style.css, app.js. No framework, no build step, no backend. Deploys to Vercel in seconds. The entire site is under 200KB gzipped.
Beyond timed events — farmers markets, parks, museums, date nights, family spots. All geocoded on the map with hours, cost, and a kid-friendliness score.
The scoring engine is calibrated to a specific set of preferences — not a generic popularity metric. Here's what moves the needle.
Smaller, unique venues over massive arenas. Focus on artistic merit and sound design.
Each event's spider chart in the detail drawer breaks down these dimensions.
Events fit into a personal energy cadence — balancing high-intensity catharsis with recovery and family time.
Sol Dance / Ecstatic Dance for spiritual recharge.
One major electronic show per month. High-energy peak.
Zoo, Botanical Garden, Fernbank — repeatable with a toddler, twice a month.
Toddler library reading, neighborhood walks. Weekly.
The entire site was built in a single Claude Code session (with continuations). No manual data entry — every event was discovered, scored, enriched, and deployed through an AI-assisted pipeline.
Scanned 4 sources in parallel — Obsidian vault (80 events), Google Calendar (37), Gmail (21), and an archived ATL project (70). Haiku agents for speed, Sonnet for deduplication. Result: 52 new evergreen entries + base curated events.
Mined 1,471 events from 14 CSV/JSON files in a prior project. Filtered for future dates, electronic genres, and quality venues. Scraped Songkick, 19hz.info, and District Atlanta calendar for Jul-Aug gap fill. 28 → 47 curated events.
Three-mode Python script (enrich_events.py) — audit gaps, fetch missing data, apply patches. og:image extraction via stdlib urllib + HTMLParser. Firecrawl parallel agents searched Eventbrite, Ticketmaster, AXS, and venue sites. Ticket coverage went from 14% to 88%.
Each event scored by Claude against the taste profile on 5 axes: genre match, venue quality, format rarity, lineup strength, value for money. Weighted sum produces 0-100 score. Spider charts rendered with Chart.js in each event drawer.
Social scan algorithm maps events to friend groups — inner circles per slot type (Concert Squad, Kids Crew, Couples Dinner), overdue contact tracking, and pre-drafted group texts. Lead time thresholds prevent last-minute suggestions.
Static files deployed to Vercel via CLI. No build step, no framework, no backend. 4 files, ~200KB gzipped, loads in under 1 second. 7 production deploys across the session.