From 2da8562c901eccc042b387097757d2854b7c08a1 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Apr 2026 20:24:43 -0500 Subject: [PATCH] Interactive permit heat map with live data verification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Leaflet.js map with dark tiles showing real Chicago building permits - Dots sized and colored by project cost ($1B+ red, $100M+ orange, $10M+ blue) - Hover any dot for project details — address, cost, description, date - LIVE indicator with green pulse dot - Timestamp showing when data was fetched - "Verify source" link goes directly to Chicago Open Data portal - "Refresh" button re-fetches from the API on click - Expanded to 50 permits for denser map coverage - Legend showing dot size scale No one can say "you just typed those numbers in" when they can click a dot on the map, see 10000 W OHARE ST, and verify it themselves on data.cityofchicago.org. Co-Authored-By: Claude Opus 4.6 (1M context) --- mcp-server/index.ts | 2 +- mcp-server/search.html | 110 ++++++++++++++++++++++++++++++----------- 2 files changed, 83 insertions(+), 29 deletions(-) diff --git a/mcp-server/index.ts b/mcp-server/index.ts index b6f6fed..54fa444 100644 --- a/mcp-server/index.ts +++ b/mcp-server/index.ts @@ -1042,7 +1042,7 @@ tr:hover{background:#111827} const permitUrl = "https://data.cityofchicago.org/resource/ydr8-5enu.json"; const [bigR, byTypeR, recentR, benchR] = await Promise.all([ // Top 8 largest permits by cost - fetch(`${permitUrl}?$select=permit_type,work_type,work_description,reported_cost,street_number,street_direction,street_name,community_area,issue_date,latitude,longitude&$where=reported_cost>1000000 AND issue_date>'2025-06-01'&$order=reported_cost DESC&$limit=8`).then(r => r.json()), + fetch(`${permitUrl}?$select=permit_type,work_type,work_description,reported_cost,street_number,street_direction,street_name,community_area,issue_date,latitude,longitude&$where=reported_cost>1000000 AND issue_date>'2025-06-01'&$order=reported_cost DESC&$limit=50`).then(r => r.json()), // Permits grouped by work type fetch(`${permitUrl}?$select=work_type,count(*) as cnt,sum(reported_cost) as total_cost&$where=reported_cost>10000 AND issue_date>'2025-06-01'&$group=work_type&$order=total_cost DESC&$limit=10`).then(r => r.json()), // Most recent permits diff --git a/mcp-server/search.html b/mcp-server/search.html index b9f16d7..c98afb3 100644 --- a/mcp-server/search.html +++ b/mcp-server/search.html @@ -2,6 +2,8 @@ Staffing Co-Pilot + +