Inspiration
When an earthquake or flood hits, the cell network is often the first thing to fail, and the first hours are when people trapped under rubble have the best chance of being found. Rescuers arrive with no way of knowing who is buried where, while the people they're looking for are holding phones that can't reach anyone. We asked a simple question: what if those phones could talk to each other, with no towers, no Wi-Fi and no internet?
What it does
- Victim (phone A): one big button sends an SOS. The screen shows plain states: Sending → Received → Handed off.
- Nearby phone (B): joins the victim's group as a standby carrier. If A's battery drops below 10%, A hands the SOS to B so the flare stays alive. If A goes silent completely, B takes over on its own.
- Signs of life: the victim's phone listens offline for knocking and voices and attaches what it heard to the SOS. Crowd noise is filtered out.
- Rescuer (phone C): a dashboard ranks every SOS by a priority score and shows the current carrier, battery level and last sound ("knocking, just now") on each card.
- Find mode: guides the rescuer to the phone that is carrying the SOS.
How we built it
We built FlareHop as a native Android app in Kotlin, with the interface written in Jetpack Compose. We used Android's Bluetooth Low Energy (BLE) APIs to let phones advertise and scan for each other directly, with no internet or cell service. Each phone broadcasts its SOS in a small BLE packet, and nearby phones pick it up and pass it along, forming a phone-to-phone mesh that carries the flare toward a rescuer.
Challenges we ran into
- Tiny packets. A BLE advertisement has only a few dozen bytes, so every field in the SOS had to be packed bit by bit.
- Android's Bluetooth stack fails silently. Scans get throttled, adverts stop when the screen turns off, and permissions differ by version. We kept all radio code with one person and tested it on every phone in the hall.
- Two carriers at once. During a handoff, A and B could both broadcast the same SOS. We added session IDs and a conflict rule so the dashboard always follows exactly one carrier.
Accomplishments that we're proud of
- The full rescue loop works end to end, fully offline: SOS → receipt → knock detected → handoff → takeover → Find.
- Teamwork is one of the most important feat for us
What we learned
-How to make Cl and tests. -How BLE advertising really behaves on Android -That contracts and stand-ins let a small team build in parallel from hour 0 instead of waiting on each other.
What's next for FlareHop
-True multi-hop relays across many phones, so a flare can travel blocks, not just meters. -Use LoR relays to catch networks miles away by rescue team