Inspiration
During my summer abroad in Berlin, Europe went through record-breaking heat: five heat waves between May and mid-August, temperatures well above 40°C (104°F), and the hottest June–July on record in Western Europe. My apartment became sweltering, with uncomfortable nights and frequent dehydration.
Only about 20% of European households have air conditioning, and early estimates put this summer's toll at about 10,000 excess deaths, with thousands in the UK, France, Germany and Belgium. As one researcher told NASA, "for older adults with physical health problems, temperatures as low as 26.7°C (80°F) can pose significant danger."
The pattern is the same everywhere. In the 2021 British Columbia heat dome, 98% of the 619 heat deaths happened indoors, 56% of the people lived alone, and two-thirds were 70 or older.
Here in Atlanta, half of low-income households spend more than 10% of their income on energy, so many ration their AC. In August, the City Council asked for a heat plan that includes robocall warnings and outreach to seniors and people without AC. HeatCheck is that outreach.
What it does
HeatCheck watches the heat index for each resident and calls them when it gets dangerous.
- Knows when it's dangerous: it uses an indoor sensor if the home has one, and live local weather if it doesn't, with the National Weather Service heat index formula. At 90°F ("extreme caution") it starts a check-in.
- Calls in a real voice: the resident gets a phone call in a warm, natural voice, in English or Spanish: "Press 1 if you're okay, 2 if you need help," or they can just say it.
- If they're okay: it gives cooling tips and the nearest cooling center that's open right now, then calls back in 30 minutes if it's still hot.
- If they need help or don't answer: a neighbor gets an urgent alert on their phone with the address, the heat index and directions.
- Dashboard: every home live, the outdoor forecast peak, a timeline of every call, and a "Hear the call" button.
How I built it
- Backend: Python using only the standard library, with a small status tracker for each home (normal → calling → okay or neighbor alerted).
- Phone calls: Twilio Voice, with keypad and speech input, voicemail detection, and call-status updates to catch no-answer and busy.
- Voice: ElevenLabs text-to-speech (
eleven_flash_v2_5). Each sentence is generated once and cached, and the call falls back to Twilio's voice if ElevenLabs fails. - Weather: Open-Meteo for current conditions and the next 18 hours.
- Alerts: ntfy push notifications to the neighbor's phone.
- Tunnel: Cloudflare Tunnel so Twilio can reach the server on my laptop.
- Frontend: vanilla HTML/CSS/JS dashboard and a "virtual sensor" page.
- Testing: 35 automated tests, including the full call flow against fake Twilio, weather and ElevenLabs servers.
I built this solo, using Claude as an AI coding assistant. While I initialized the heat thresholds from research, utilized the Twilio and Elevenlabs code for responses and calling, I used Claude to connect them together and build something end to end. I also set up Twilio, ElevenLabs, ntfy, and the tunnel, and tested and debugged everything on real phones.
Challenges I ran into
- No hardware: I was unable to go to the hardware desk this weekend due to health complications, so I wasn't able to use the ESP32 that I had planned to. A friend suggested pulling the temperature from a weather API instead, so HeatCheck now works with nothing but a phone number.
- Text messages: US carriers block texts from unregistered numbers, and registration takes days, so I switched the neighbor alert to push notifications.
- "Bad Gateway": my Cloudflare tunnel kept failing because it was sending https to a server that only speaks http, but I read the cloudflared logs to debug it and figure out how to fix it.
- Indoor vs. outdoor heat: a house without AC can be hotter than it is outside, so when HeatCheck only has outdoor weather, the call says so instead of pretending to know the indoor temperature.
- Solo coding: not only was it my first time producing a project at a hackathon but I also did it solo due to being sick, so I
Accomplishments that I'm proud of
Last year I attended HackGT12 but I didn't end up submitting a project due to limited knowledge and a mediocre idea, but I did attend a fair bit of workshops to open my mind to new ideas and learn different ways to code through iOS, Android, AWS, etc. This year equipped with the continued learning from last year and an actual idea I wanted to work on, I set out to go from idea to project in just a week, and I actually accomplished it with the help of prompting.
What I learned
Because this is the first Hackathon that I produced something, I learned about how much help an AI chatbot could provide. What would typically take days to finish became only a few hours with the help of Claude. I used the AI to help me through troubleshooting and figuring out how to use Twilio and Elevenlabs, eventually being able to produce something incredibly quickly from just one idea.
What's next for HeatCheck
- A cheap Wi-Fi temperature sensor for each home. The server already accepts sensor readings, but incorporating a sensor system that tracks temperatures and humidity across the house will get more accurate readings than the outdoor temperature.
- More languages support is already offered by elevenlabs, but the language responses are currently hardcoded for english and spanish, so an option to choose a language that is checked by native speakers could make heatcheck more accessible and expand its reach.
- AI that can understand irregular responses because currently all of the detection for "I'm okay" and "Help" are hardcoded so an AI that can score or evaluate whether a neighbor needs to be called would be important.
- Preemptive morning calls when the forecast says it will be dangerous later that day.
- Per-person alert thresholds, since for older adults with health problems even 80°F can be dangerous. Right now the threshold is one setting for everyone.
Sources: NASA (Europe's Scorching Summer, Aug 2026), BC Coroners Service heat dome review (via CBC), IIR, ACEEE, Atlanta Journal-Constitution, City of Atlanta.
Built With
- anthropic
- cloudflare
- css3
- elevenlabs
- html5
- javascript
- ntfy
- open-metro
- python
- twilio
Log in or sign up for Devpost to join the conversation.