Behind the Scenes

How ATL Radar Works

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.

The Idea

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.

📊

Scored, Not Sorted

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.

🤖

AI-Powered Pipeline

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.

📁

4-File Architecture

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.

🗺️

140 Evergreen Activities

Beyond timed events — farmers markets, parks, museums, date nights, family spots. All geocoded on the map with hours, cost, and a kid-friendliness score.


What Scores High

The scoring engine is calibrated to a specific set of preferences — not a generic popularity metric. Here's what moves the needle.

🎵 Genre Affinity

High Priority
Downtempo Organic House Liquid DnB Melodic Techno IDM Ambient Orchestral Electronic
Bonobo, Tycho, Lane 8, Nora En Pure, RUFUS DU SOL, Four Tet, Floating Points, Fred again.., Jamie xx, Polo & Pan, Justice, Kaytranada
Anjunadeep sound, Cercle shows, Red Bull Symphonic events
Medium Priority
Indie Rock Alternative Funk Soul Modern Jazz World Fusion
Khruangbin, Glass Animals, Tame Impala, Jungle, Vulfpeck, Atmosphere, Tinariwen, Bombino
Good for date night or group outings — solid but not a must-see
Low Priority
Generic Pop Radio Country Mumble Rap Screamo
Pass unless there's a strong social hook — birthday, friend visiting, legendary act

🏛️ Venue Preferences

Smaller, unique venues over massive arenas. Focus on artistic merit and sound design.

Top Tier
The Eastern, Terminal West, Variety Playhouse, Plaza Theatre
Clubs & Underground
District Atlanta, Believe Music Hall, The Masquerade, Aisle 5
Bucket List
Red Rocks (CO), Cercle shows abroad, Red Bull Symphonic

🎭 Format Preferences

Orchestral Electronic Crossovers Projection Mapping / Light Shows Immersive Experiences 90s/00s Throwbacks Intimate Artistic Venues Cult/Art Cinema Interactive Family Exhibits After-Dark Museum Events Adults-Only Recovery Spaces Speakeasy / Cabaret Nature Walks / Botanical

📐 The 5 Scoring Axes

Each event's spider chart in the detail drawer breaks down these dimensions.

Genre Match
How close to the high-priority genres above. Electronic downtempo and orchestral crossovers score highest.
Venue Quality
Sound system, intimacy, production value. The Eastern adds 10+ points automatically.
Format Rarity
Live band vs. DJ set, 360 immersive vs. standard stage, once-in-a-city vs. touring circuit.
Lineup Strength
Headliner caliber and support quality. Multi-act bills with complementary artists score higher.
Value for Money
Ticket price vs. total experience. Free events score high. $200 arena seats score low unless the act is legendary.

⚡ Energy Patterns

Events fit into a personal energy cadence — balancing high-intensity catharsis with recovery and family time.

🧘

Bi-Weekly Reset

Sol Dance / Ecstatic Dance for spiritual recharge.

🎆

Monthly Catharsis

One major electronic show per month. High-energy peak.

👨‍👧

Family Connection

Zoo, Botanical Garden, Fernbank — repeatable with a toddler, twice a month.

📚

Low-Effort Routine

Toddler library reading, neighborhood walks. Weekly.


How It Was Built

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.

1

Event Discovery

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.

2

Concert Expansion

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.

3

Data Enrichment

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%.

4

Scoring

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.

5

Social Layer

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.

6

Deploy

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.

🛠️ Stack

Frontend
Vanilla HTML/CSS/JS
Maps
Leaflet + CartoDB tiles
Charts
Chart.js radar
Fonts
Bebas Neue + DM Sans
Deploy
Vercel CLI
Scraping
Firecrawl + urllib
AI
Claude Code (Opus + Haiku)
Python
3.14, stdlib only

📈 By the Numbers

47
Curated Events
140
Evergreen Activities
88%
Ticket Coverage
98%
Image Coverage
7
Production Deploys
0
npm Packages