← Ideas
Project Thread
Track Cooling Centers During Heat Waves
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