Inspiration
During a disruption, knowing where a shelter or food pantry is located is only the beginning. People also need to know whether it is still open, whether supplies remain, and how recently someone confirmed that information.
We built EventApp Lifeline around a simple question: “What’s open near me, and how current is that answer?” It extends our existing social events app with an SOS mode for finding nearby aid.
What it does
Lifeline brings shelter, food, water, medical help, and charging listings into one place. Anyone can browse the public aid list without creating an account.
Each listing shows its reported status and the age of its last confirmation. Verified hosts are asked to check in every 15 minutes, with late and missed check-ins made visible. Community listings remain labelled unverified. When recent neighbor reports conflict with a verified host’s status, the listing can be marked Disputed.
When connectivity drops, the iOS app keeps the last saved list available. Confirmation ages continue increasing so saved information does not appear newly verified. Signed-in users can queue reports locally, and the app attempts to send them when connectivity returns.
We also built a Retell voice integration designed to answer questions using the same public listings. The prototype demonstrates scripted responses; a live Retell call still needs end-to-end validation.
How we built it
We extended EventApp’s SwiftUI iOS client and Node.js/TypeScript backend, using PostgreSQL for persistent storage.
The backend separates resource access, status updates, and trust rules. The iOS client adds a persistent listing cache and an account-specific outbox for offline reports. After the initial load, incremental synchronization retrieves changed information.
Retell tools use server-generated summaries of public aid listings. We used IBM Bob to help review synchronization, privacy, and the demo runbook, then checked its findings against the code before making changes.
Challenges we ran into
The hardest challenge was representing uncertainty clearly. A verified source can miss a check-in, a neighbor can disagree, and a saved listing can become stale. We needed the interface to communicate those differences without suggesting that any status guarantees safety.
Synchronization also exposed edge cases. Cancelled or ended places could be missed by incremental updates, and a search limit applied too early could exclude nearby results. We corrected those issues and added regression coverage.
Offline reporting introduced another concern: updates saved by one person must not be submitted by another account using the same phone. We addressed this with separate outboxes for each account.
Accomplishments that we're proud of
We built an aid discovery flow that works without a signup barrier, makes freshness and disagreement visible, and preserves access to previously loaded information during a connection loss.
We connected the interface to backend trust rules and implemented a persistent cache and reporting outbox in the iOS app. We also documented which review findings were confirmed, which were incorrect, and which limitations remain.
What we learned
Resilient communication requires showing people what the system knows, where that information came from, and when it may have changed.
We also learned that AI-assisted review is useful when its findings are verified. IBM Bob surfaced real synchronization issues, but it also made incorrect claims. Checking both helped us improve the implementation.
What's next for EventApp-Lifeline
Our next steps are to complete a live Retell call, pilot resource updates with participating aid providers, and evaluate how clearly people understand freshness and disagreement during simulated outages.
We also want to strengthen operational monitoring and test reconnection behavior under more varied network conditions.
All aid places and crisis scenarios in our demonstration are fictional. Lifeline is not an emergency service, and its information may be out of date.
Built With
- ai
- express.js
- ibm
- node.js
- postgresql
- redis
- retell
- swift
- swiftui
- typescript
Log in or sign up for Devpost to join the conversation.