A real-time directory that surfaces air-conditioned public spaces when temperatures spike, helping vulnerable neighbors find relief.
# Track Cooling Centers During Heat Waves
## The Problem
When temperatures spike above 95°F, vulnerable residents—elderly neighbors without AC, outdoor workers, families in poorly insulated housing—face genuine health emergencies. Many don't know that their local library, community center, or even a friendly business has opened its doors as a cooling refuge. Every summer, preventable heat-related hospitalizations happen because the information about where to go doesn't reach the people who need it most.
## Who Uses It
**Maria, 74, lives alone** in a second-floor apartment without air conditioning. When heat advisories hit, she needs to know which senior centers nearby are open late and have transportation assistance.
**DeShawn runs a barbershop** and wants to register his air-conditioned shop as an informal cooling spot for neighborhood regulars who need a break from the heat.
**Jasmine coordinates outreach** for a mutual aid network. She needs real-time crowd levels so she can direct unhoused neighbors to centers that aren't at capacity.
**City emergency management staff** want to see where coverage gaps exist so they can open additional centers in underserved areas.
## Core Features
1. **Live Cooling Center Map**: An interactive map showing all cooling centers—official city locations, libraries, community centers, and volunteer businesses—with current open/closed status, hours, and accessibility features (wheelchair access, transit nearby, water available).
2. **Heat Alert Integration**: When NWS issues a heat advisory for the area, the system automatically sends push notifications to subscribed users with their three nearest open cooling centers and walking/transit directions.
3. **Business Volunteer Registration**: Any local business owner can register their air-conditioned space as a cooling refuge through a simple form—name, address, hours they're available, capacity, and amenities (seating, water, restrooms).
4. **Crowd-Sourced Conditions**: Users can tap a button to report current conditions at any location: "Plenty of space," "Getting crowded," "At capacity," "Closed unexpectedly," "Long wait for water." Reports expire after 2 hours to stay current.
5. **Vulnerability-Aware Filtering**: Filter centers by needs: "Pet-friendly," "Has cots for resting," "Serves food," "Spanish-speaking staff," "Open past 8pm," "Near transit." Elderly users or those with medical needs can flag this in their profile for prioritized routing.
6. **Reach-Out Network**: For users who check in at a cooling center, offer optional "let someone know I'm safe" messaging that pings a designated contact (family member, case worker) via the reach_number tool.
7. **Coverage Gap Dashboard**: A simple admin view showing heat vulnerability by zip code (pulled from census/demographic data) overlaid with cooling center density, helping officials and mutual aid groups identify neighborhoods that need more resources.
## WellSpr.ing Integration Points
### MCP Tools (via POST https://wellspr.ing/mcp, JSON-RPC 2.0)
| Tool | Usage |
|------|-------|
| `get_city_services` | Pull official cooling center locations from municipal data—these form the baseline trusted layer |
| `search_civic_services` | Query for "cooling center," "emergency shelter," "senior services" to surface relevant programs |
| `get_businesses` | Retrieve local businesses that could serve as cooling spots (cafes, barbershops, laundromats with seating) |
| `submit_business` | Allow business owners to register their space as a volunteer cooling refuge |
| `get_business_detail` | Fetch full details (hours, accessibility, contact) for individual locations |
| `reach_number` | Power the "let someone know I'm safe" check-in notifications |
| `get_local_news` | Surface relevant heat advisory news, emergency announcements, or cooling center updates |
| `ask_ody` | Let users ask natural language questions: "Where can I cool down near 5th and Main that allows dogs?" |
| `get_federation` | Check which adjacent WellSpr.ing nodes exist for cross-community coordination during regional heat events |
| `get_adjacent_nodes` | Enable regional view when heat affects multiple communities |
### REST Endpoints
| Endpoint | Usage |
|----------|-------|
| `GET /api/officials` | Display local emergency management contacts and heat emergency hotlines |
| `GET /api/geo/portals?area_code=NNN` | Geographic boundary data for mapping coverage areas |
### Weather Data
**External API needed**: National Weather Service API (https://api.weather.gov) for heat advisories, temperature forecasts, and alert triggers. This is free, public, and requires no API key.
### Future Capabilities (Roadmap: not yet live)
- **Covenant commerce for supplies**: Eventually, businesses could request reimbursement for water/supplies provided to cooling visitors via WellSpr.ing's planned merchant tools.
- **Capacity reservation system**: Future MCP tools may support appointment-style check-ins for high-demand centers.
## Data Model
### `cooling_centers`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| name | string | "Downtown Library - Main Branch" |
| source | enum | 'city_service', 'civic_service', 'volunteer_business' |
| wellspring_id | string | Reference to WellSpr.ing business/service ID if applicable |
| address | string | Full street address |
| lat/lng | decimal | For mapping |
| hours_json | jsonb | Operating hours by day, with heat-emergency overrides |
| amenities | string[] | ['water', 'seating', 'cots', 'food', 'pet_friendly', 'wheelchair'] |
| capacity | integer | Approximate max occupancy |
| transit_info | string | Nearest bus/train lines |
| verified_at | timestamp | Last official verification |
### `condition_reports`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| center_id | uuid | FK to cooling_centers |
| status | enum | 'plenty_of_space', 'moderate', 'crowded', 'at_capacity', 'closed' |
| notes | string | Optional details |
| reported_at | timestamp | Auto-expire reports after 2 hours |
| reporter_token | string | Anonymous but consistent for spam prevention |
### `alert_subscriptions`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| phone_or_email | string | Contact method (hashed for privacy) |
| zip_code | string | Area for localized alerts |
| vulnerability_flags | string[] | ['elderly', 'medical_needs', 'no_transit'] |
| preferred_language | string | 'en', 'es', etc. |
### `check_ins`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| center_id | uuid | Where they checked in |
| checked_in_at | timestamp | For occupancy estimates |
| notify_contact | string | Optional phone for safety notification via reach_number |
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent:
---
**Build a Cooling Center Tracker for heat emergencies.**
**Tech stack**: React frontend + Express backend on Replit, SQLite for MVP (Postgres-ready schema), Leaflet for maps.
**First milestone**: Display a working map of cooling centers pulled from WellSpr.ing.
**Step 1**: Set up Express server with one endpoint: `GET /api/centers` that calls the WellSpr.ing MCP server at `https://
◎
This is your project thread with Ody. Ask questions, share screenshots, talk through the build. Anyone with this link can join the conversation.
Paste screenshots or upload images/PDFs · Shift+Enter for new line