Inspiration
Cities are the most complex machines ever built, yet our interaction with them is often fragmented and "cold"—a delayed train alert, a rising AQI number, or a news snippet about a noise complaint. I was inspired by the idea of Empathetic Urbanism: what if the city wasn't just a collection of data points, but a living, breathing organism that could tell you how it feels? CityMind was born to give the city a voice, turning cold municipal metrics into a queryable, first-person narrative.
What it does
CityMind is a real-time Planetary Urban Intelligence Engine that personifies cities as living, breathing organisms. It transforms raw, fragmented municipal data—service requests, transit disruptions, air quality, and hyper-local events—into a living, queryable nervous system. Users can chat directly with a city (such as NYC, London, or Tokyo) to ask how it is feeling. The city responds in the first person with an empathetic narrative, while an interactive 3D globe pulses to visualize the "collective stress" of neighborhoods in real time.
How we built it
We built CityMind on a modern, high-performance stack:
- Framework: Next.js 15 with TypeScript for a robust, full-stack foundation.
- Intelligence: Anthropic Claude 3.5, utilizing a custom Context Injection pipeline that feeds real-time CityPulse data into the LLM.
- Mapping: Mapbox GL JS 3 with a 3D globe projection and custom Sensory Mesh layers.
- Data Pipeline: A custom server-side orchestrator that fetches and standardizes data from SODA (OpenData), GTFS-RT (Transit), Open-Meteo, and IQAir every 30 seconds.
- UI/UX: Tailwind CSS, Framer Motion, and Three.js for a futuristic Neural Terminal aesthetic.
Challenges we ran into
The primary hurdle was Data Homogenization. Every city speaks a different "dialect" of data; a noise complaint in NYC looks very different from one in London. We had to build a layer of Global Municipal Adapters to unify these disparate feeds into a single 0–100 Stress Score schema. We also faced significant challenges in Geospatial Latency—optimizing the rendering of pulsing stress-rings across a planetary globe while simultaneously streaming LLM responses.
Accomplishments that we're proud of
We are most proud of the Empathy Engine. Successfully bridging the gap between "cold" metrics and human storytelling is a major milestone. Having the city describe a transit outage as a "splitting headache" makes urban data accessible and visceral in a way we haven't seen before. We are also proud of the Global Scalability—our architecture successfully transitioned from a single-city prototype to a planetary platform that can adopt any city with an OpenData portal.
What we learned
We learned that Urban Data is remarkably emotive when viewed through the right lens. When you layer noise complaints over transit disruptions, a clear picture of "collective stress" emerges that a single metric could never capture. Technically, we gained deep experience in Real-time Stream Processing and learned the nuances of building a Sentient UI that stays in sync with a complex, multi-source backend.
What's next for CityMind
The next phase for CityMind involves deeper predictive analytics. We plan to integrate historical training data to allow the city to not only report on its current state but to forecast "Stress Storms" before they happen. We also aim to expand our Global Municipal Adapters to support 50+ major cities by the end of the year, creating a truly global queryable urban network.
Built with
- Next.js 15
- TypeScript
- Anthropic Claude 3.5
- Mapbox GL JS 3
- Three.js
- Tailwind CSS
- SODA / OpenData APIs
- GTFS-RT Feeds
Try it out
- GitHub Repository: https://github.com/noobacker/CityMind
- Live Simulation: https://citymind.vercel.app
Built With
- 15
- 3
- 3.5
- anthropic
- apis
- claude
- css
- feeds
- gl
- gtfs-rt
- javascript
- mapbox
- next.js
- opendata
- soda
- tailwind
- three.js
- typescript
Log in or sign up for Devpost to join the conversation.