Inspiration

From the outset, we wanted to create something that solved a real need. We considered several avenues and chose to build a project that would directly serve our local community.

We also realized that projects with genuine impact are grounded in data. To make municipal planning both smarter and more equitable, we gathered data from both the physical environment (satellite imagery, stream gauges, night lights) and the people living in Chapel Hill.

What it does

Maps capital projects: Chapel Hill’s official capital projects and user-added proposals sit on an interactive satellite map with filtering and district jumping. Maps hyper-local need: A 100 m spatial grid covering all 5,653 cells in Chapel Hill is scored for summer surface heat, tree canopy deficit, flood risk, and street darkness. Best Impact: Ranks projects across six predicted outcomes (flood mitigation, heat reduction, mobility, canopy growth, lighting, and housing), weighted by local need and affected population density. Constituent Voice: Ranks projects based on what residents requested in the 2026 Town of Chapel Hill Community Survey plus live incoming messages per district.

How we built it

Claude Code and Gemini handled the bulk of code generation, drafting backend endpoints, frontend components, and complex spatial ingestion scripts based on our architecture and data specs.

  • Code Generation & AI Co-Piloting: Used Claude Code and Gemini to rapidly generate and iterate on backend routes, UI components, spatial data parsing scripts, and system integrations.
  • Frontend: Built with React, Vite, and the Google Maps JavaScript API, styled with a custom Frutiger Aero glass aesthetic (aero.css).
  • Backend: Powered by FastAPI (Python 3.11+) delivering low-latency endpoints for spatial queries, metrics, rankings, and AI services.
  • Database: TimescaleDB / PostgreSQL (Tiger Data) utilizing hypertables, continuous aggregates, and compression for observations and feedback loops.
  • Data Pipeline:
    • Sentinel-2 satellite imagery (July 1, 2026) for 100 m cell vegetation index.
    • Landsat 8 surface thermal data (July 5, 2026) for ground heat indexing.
    • NASA Black Marble (VIIRS) night lights (June–July 2026) for orbital night lighting.
    • USGS Stream Gauge 02097386 real-time 30-day water level telemetry.
    • Spatial joins against official Chapel Hill GIS limits, stream centerlines, and population density datasets.
  • AI & Agent Infrastructure:
    • Gemini API: Performs message topic extraction, district mapping, sentiment analysis, recommendation explanations, and conversational QA.
    • Photon Spectrum: Enables standard SMS/iMessage integration so residents can text the system directly from their phones.

Challenges we ran into

Chapel Hill's data on current projects is messy at best. As some databases are almost 8 years out of date. And certain maps in the Town's ArcGIS are not publicly viewable, leading to the plotting of general locations based on project names and google maps data. The project viability generation is a deterministic model based on data, but not an actual model trained on the data. As that was hard to accomplish in this time-span.

Accomplishments that we're proud of

This is the first time, we've worked on a project that was powered by the Google Maps API and we like what we were able to create with it. This is also the first time we've used Photon Spectrum as well.

What we learned

That it is important to determine a projects scope in the beginning to prevent time wasted on unviable endeavors. How to merge multi-modal satellite observations (thermal, optical, night-lights) into structured spatial data grids suitable for real-time model inference. How to effectively leverage Gemini for low-latency text classification (extracting topic, sentiment, and spatial location from informal citizen messages).

What's next for canopie

An actual model trained on historical before and after data from chapel hill. Scaling it up to other towns/cities. Increasing the amount of Data sources.

Built With

Share this project:

Updates

Submission history