Live demo: https://porchlight-bay.vercel.app · Code: https://github.com/chinesepowered/porchlight · Pitch deck: https://porchlight-bay.vercel.app/slides.html
What it does
Porchlight is an AI agent built with the Strands Agents SDK for neighborhood mutual-aid groups, senior centers and churches. When the National Weather Service issues a heat warning, it scores every enrolled neighbor's heat risk, sends the nearest volunteers to the highest-risk homes first, reads their reports, books cooling rides, schedules retry visits, and interrupts the human coordinator only when someone truly can't be reached.
The problem
Heat often kills quietly, at home, and alone. In British Columbia's 2021 heat dome, 619 people died: 98% indoors, 56% living alone, two-thirds aged 70+ (BC Coroners Service, 2022). In Maricopa County, AZ, more than 600 heat deaths were confirmed in 2024; in 88% of indoor deaths an A/C unit was present, but 70% of those weren't working (Maricopa County Dept. of Public Health). The people who can catch this are neighbors, usually one volunteer coordinator with a spreadsheet, a phone, and hours, not days.
How it works
- Watch:
check_heat_alertreads live api.weather.gov alerts (a clearly labeled simulated warning powers drills). - Triage:
score_residentsapplies fixed rules (age, living alone, no/broken AC, heat-sensitive medications, mobility, top floor);plan_checkinsassigns the nearest volunteer, highest risk first;send_checkin_requeststexts everyone. - Follow up: quick "OK" taps are recorded automatically; the model reads free-text volunteer notes and classifies them with
record_note_outcome, and code books the nearest cooling center or schedules a retry. - Escalate only when it matters: after two unanswered visits,
escalate_to_coordinatorshows one decision card. - Close the loop: the coordinator approves a welfare check or a second visit; the agent carries it out and tracks everyone to "reached".
How we use Strands Agents
- A Strands
Agent(TypeScript SDK) per event with 9tool()s defined by zod schemas (lib/agent.ts). - Guardrails in code, not prompts: a
BeforeToolCallEventhook cancels unsafe calls: no mass texting without a heat warning, at most 2 texts per resident per hour, a 14-tool-call step cap, escalation only after two unanswered visits, and welfare checks or entry only with coordinator approval. Every verdict appears in the activity feed. - Model: Strands
OpenAIModelagainst an OpenAI-compatible endpoint (Qwen3.8-27B on W&B Inference). Strands is model-agnostic, so moving to Amazon Bedrock is a model swap. Not deployed on AgentCore for this submission; runs on Vercel. - The LLM plans the order of work and reads messy human notes; deterministic code scores, routes and enforces the rules.
In the demo drill, 7 volunteers reach 34 of 34 neighbors in 100 simulated minutes, and the coordinator makes exactly one decision.
All residents and volunteers are fictional; SMS and police requests are simulated; weather is live unless marked simulated. Built during the hackathon with Claude Code as a coding assistant; narration by ElevenLabs. Open source (MIT).
Built With
- elevenlabs
- leaflet.js
- national-weather-service-api
- next.js
- openai-compatible-api
- openstreetmap
- qwen
- strands-agents
- typescript
- vercel
- weights-and-biases
- zod
Log in or sign up for Devpost to join the conversation.