Inspiration

A neighborhood group may know which residents live alone, have limited mobility, or rely on powered medical equipment. During dangerous heat, that list becomes a demanding job: reach people, understand their replies, notice silence, and find someone who can help.

Porchlight starts at that moment. The intended user is the volunteer coordinator who already has a community's trust and needs a manageable view of what requires attention.

What it does

Porchlight turns a heat alert into a prioritized check-in wave. Residents can reply 1 for OK, 2 for help, or describe what is happening. Strands interprets free-text replies and includes the resident's exact words with the classification.

Assistance requests wait in a durable coordinator queue. The coordinator chooses a specific case from the current menu, asks a volunteer, or takes responsibility for the follow-up. Volunteer acceptance and decline include the reviewed request's ID, keeping the reply attached to the right case. Silence triggers a timed follow-up path.

Prototype scope: the demonstration uses 40 synthetic residents. The Telegram sandbox routes real messages only to the owner's allowlisted identity; other residents are simulated. The reproducible local drill substitutes the database, model, and messaging adapters and labels those substitutions visibly. There is no resident pilot or verified publicly hosted console.

How we built it

The backend is Python with Strands Agents, Pydantic structured output, and a Bedrock AgentCore Runtime entrypoint. Lambda adapters connect weather polling, inbound messages, and scheduled checks. Supabase stores workflow state; a Next.js console displays the roster and audit timeline.

Code handles explicit responses, opt-out, timing, allowed recipients, and coordinator approval. Strands handles the less predictable part: interpreting an individual free-text reply. The output boundary checks the allowed classifications, confidence range, and whether the quoted words actually occur in the message. Invalid or unavailable model output goes to human review.

The coordinator gate is a persisted, deterministic workflow that keeps the selected case attached to the resulting volunteer request.

Substantial distinction from Rebuttal

Porchlight serves community coordinators checking on residents during extreme heat. Its data and actions concern weather events, resident replies, human follow-up decisions, and volunteer requests. Rebuttal addresses merchants' Stripe chargeback workflow and dispute evidence. These are distinct users, data, and operational tasks: community wellness check-ins and merchant dispute handling.

Challenges we ran into

The difficult work was making the apparent state match the actual outcome. A failed message must not become a successful check-in. A repeated alert must not overwrite a resident's reply. A declined volunteer request must return to a person who can act. Coordinator choices must refer to the menu the coordinator received.

We also separated several kinds of evidence: a working local handler, a simulated adapter, a provider response, and an action actually completed. They answer different questions.

Accomplishments we're proud of

Executable checks cover unsupported model output, invented quotes, unallowlisted recipients, unauthenticated console actions, failed sends, repeated outreach, coordinator approval, volunteer replies, and elapsed-time follow-up.

A real Strands/Bedrock Sonnet 4.5 call classified the fictional reply “AC broke, dizzy” as medical/cooling and preserved its exact quote. That is one observed integration check, not an accuracy benchmark or resident outcome.

A judge can inspect a complete synthetic workflow and its resulting records without supplying production credentials. Historical evaluations and their failures remain available, clearly identified as earlier evidence rather than a score for the updated implementation.

What we learned

A useful agent needs a precise handoff to the person responsible for the outcome. Classification is only one part of the job. The surrounding workflow must retain the right case, recognize failed delivery, and make unresolved work visible.

We also learned to narrow claims to demonstrated behavior. This is an extreme-heat prototype with a synthetic roster, not a validated emergency-response service or evidence of improved health outcomes.

What's next

Run a consented drill with a community coordinator and representative residents. Measure time to identify someone needing help, missed cases, unnecessary escalations, and successful contact against the coordinator's current process. Then validate accessible messaging channels, resource availability, and more varied replies before expanding the supported hazards.

Built With

Share this project:

Updates

Submission history