justin‑kang.vercel.app
[003]·jun_2026v1.0

UrbanPilot

  • Multi-agent AI
  • Python
  • Data pipelines
  • Public datasets

Decision-support prototype. Results depend on public-data coverage, scoring assumptions, geographic availability, and source freshness.

Role
Primary author: React/Leaflet frontend, Node/Express backend, Claude multi-agent coordinator, Midjourney vision integration

Multi-agent AI system that runs parallel scenario analyses — climate, housing, accessibility, urban design — for any real address.

urbanpilot — scenario_dashboardlive
UrbanPilotDowntown Berkeley, CA
Current20402075
GoalAdd housing near transit
✓ Verified · Open-Meteo✓ Verified · Census ACS✓ Verified · FEMA
Climate62/100
Transit66/100
Median rent$1,719
Flood riskMin.
Scenario performance
Projected scenario scores by category for Current, 2040, and 2075
CategoryCurrent20402075
Climate6272▲1084
Accessibility9496▲297
Housing7884▲691
Overall7884▲691
Scenario area
Risks
  • Heat island amplificationHigh
  • Stormwater management gapModerate
  • Construction emissionsModerate
  • Pedestrian-vehicle conflict zonesModerate
Recommendations
+ Add tree canopy+ Mixed-income housing near transit+ Green infrastructure+ Safer crossings
AgentsClimate / Housing / Accessibility / Urban Design
SourcesACS / FEMA / Open-Meteo / 511 Transit / NLCD / Maps
MethodParallel scenario analysis
OutputRisk + recommendation dashboard

What I Contributed

  • Built the React (Create React App + Tailwind + Leaflet) frontend and the Node/Express backend.
  • Built the Claude multi-agent coordinator orchestrating the climate, accessibility, housing, urban-design, and vision agents in parallel.
  • Integrated Midjourney (via MCP) for 2040/2075 scenario visualization, grounded in a real Street View or satellite photo of the site.
  • Authored the prompt-compression benchmarking: a hand-written compact-encoding layer plus a the-token-company integration, measured against real Anthropic API calls.
  • Imported and substantially rebuilt an earlier hackathon prototype (GreenPlanner, HackMIT) into UrbanPilot.
  • Teammate kdai05 built the verified-data grounding integrations for each specialist agent (Census ACS, FEMA, Open-Meteo, 511 GTFS, NLCD) and grounded the Ask-AI assistant and vision scenarios.

How It Works

4 stages
S.01input

Address Input

User enters a real location or planning goal.

S.02etl

Data Pipeline

System pulls and normalizes public datasets across climate, transit, housing, and hazard layers.

S.03agents

Multi-Agent Analysis

Specialized agents evaluate tradeoffs independently, then combine findings into scenario scores.

S.04output

Planning Output

Dashboard surfaces risks, recommendations, and long-term scenario comparisons.

Why It Matters

Planning decisions trade off development, climate exposure, mobility, and affordability — usually across tools that don't talk to each other.

UrbanPilot puts those tradeoffs in one view. Planners, students, and community teams enter a real address and get parallel agent analyses grounded in verified public data — enough to compare scenarios and defend a recommendation in minutes, not weeks.

Evaluation & Evidence

  • Prompt-compression benchmark against real Anthropic API calls (no estimates): the hand-written compact encoding cut input tokens by 27.8% (Housing agent, 1,155→834), 35.4% (Climate, 1,507→973), and 33.7% (Accessibility, 1,247→827), with every compressed response still parsing as valid JSON and citing the exact verified source figures.
  • A separate the-token-company compression layer reduced a structured JSON-schema prompt by 3.9% and a long prose-context prompt by 20.6%, layered on top of the encoding above.
  • Verified graceful degradation: without a Census or 511 API key, the corresponding agent still runs without that verified grounding rather than failing; without an Anthropic key, that section shows as unavailable rather than a fabricated result. There is no bundled mock data anywhere in the app.

Constraints & Limitations

  • No automated test suite (the repo's own README notes `npm test` reports "No tests found").
  • 511 GTFS transit grounding is Bay Area-specific; coverage elsewhere depends on the other four sources alone.
  • Midjourney can't fetch localhost/LAN reference photos in local dev — the "use the real photo as reference" feature only works once deployed with a public URL.
  • Google Maps imagery is only ever displayed, never used as Midjourney training/input data, except the explicit reference-image feature above.

What I'd Improve Next

  • Add an automated test suite.
  • Extend verified transit grounding beyond the Bay Area.
  • Verify the Midjourney reference-photo flow end-to-end once deployed.

Demo, Code & Artifacts

urbanpilot / case_studymulti-agent scenario analysis · 2026