← All projects

Nongor

JH26-7CQV

Logarithm · Khulna · Kuet · 3 members · Crisis Tech

Nongor keeps flood victims and volunteers connected with no internet: signed phone-to-phone SOS, offline shelter maps, first aid and triage, AI on-device.

The problem

In July 2026 alone, floods and landslides killed 51 people in Bangladesh, injured 39, and affected more than a million across seven districts (Ministry of Disaster Management, via BSS). Bangladesh's disaster response is not short of volunteers or helicopters. The gap is the last two hundred metres, where a rescuer physically reaches someone and still cannot help. Three things fail at once: the tower is down, so nobody knows who is where; the road on the map is under a metre of water; and, most overlooked, the two people do not share a language. Read the casualty list against a language map. The districts that lost the most people, Cox's Bazar with 28 dead, then Bandarban, Rangamati and Khagrachhari, are exactly where Rohingya, Chakma, Marma and Kokborok are spoken. Cox's Bazar holds the world's largest Rohingya settlement. A volunteer arrives from Dhaka and cannot ask "are you hurt?". Google Translate carries none of these languages, and would need a tower if it did. This matters most in the first hours, when triage decisions are made and the network is least likely to exist. It recurs every monsoon, for millions of people whose phones cost 8,000 taka.

The solution

Nongor (নোঙর, "anchor") is an offline Android app for flood-affected people and the volunteers who reach them. Every feature runs in aeroplane mode on an 8,000-taka handset. No internet, no account, no server. Reaching people. Holding the SOS button sounds a siren and pushes an Ed25519-signed message to every Nongor phone in Bluetooth and Wi-Fi Direct range, relayed onward hop by hop. Forged envelopes are quarantined, never merged, so a fake report cannot distort rescue priority. Nobody in range? It queues in an outbox and flushes the moment a peer appears. No data network at all? The same SOS collapses into one 160-character SMS that reads on a button phone. When someone opens your SOS, a signed read receipt travels back; the screen says your message got through, never that help is coming. Talking to people. 127 rescue phrases with 276 sourced translation lines across Chakma, Rohingya, Kokborok, Santali, Marma and Garo, drawn from the MELD and GATITOS corpora (CC BY 4.0) and never AI-generated. The hand-over card's top half is drawn upside down: lay the phone flat between you and the other person reads their half across it. Every phrase carries a pictogram and a tap-reply, so the exchange completes even where the phrasebook is silent. Ten guided questions build a structured hand-over note. Finding safety. 9,525 shelters across all 64 districts, with Dijkstra flood-avoiding pedestrian routing over real OpenStreetMap road graphs. A neighbour posts "this road is blocked" over the mesh, and the map assistant takes it into account when answering. For responders. Triage ranks a queue of SOS calls and shows the risk signals behind each ranking, because a responder must be able to disagree with the app. A briefing turns a hundred reports into one summary. Intelligence. Gemma 4 E2B runs entirely on-device through LiteRT-LM, the only LLM used. It powers first aid (retrieval-grounded, individually cited steps, photo-aware), the map assistant, triage, briefings and free-form chat. Numbers never pass through it: counts and distances are computed in Kotlin, because in testing the model turned 500 into 50000. Degradation. No peer, outbox. No data network, SMS. No shared language, pictogram. No GPS, tap the map. No model, deterministic rule engine. Kotlin and Jetpack Compose, 145 unit tests, MIT licensed.

Tech stack

Kotlin 2.0, Jetpack Compose, Material 3 · AGP 9.1, minSdk 31. On-device AI: Gemma 4 E2B (Google DeepMind, Gemma Terms of Use) via LiteRT-LM + TensorFlow Lite (Apache-2.0). The only LLM used. Mesh: Google Play Services Nearby Connections (BLE + Wi-Fi Direct) and Location. Crypto: BouncyCastle (MIT) for Ed25519 signing. Libraries: Gson, OkHttp, CameraX, Coil, Accompanist Permissions (all Apache-2.0); Feather/Lucide icons via compose-icons (MIT). Data: • MELD — Chakma/Garo/Marma corpus, Mahi, Khan, Anik & Mojumdar (Daffodil International University), CC BY 4.0 — data.mendeley.com/datasets/dy5dyfygbp/4 • GATITOS/SMOL — Google Research, CC BY 4.0 — huggingface.co/datasets/google/smol • OpenStreetMap contributors, ODbL — road graphs for flood-avoiding routing • WHO / IFRC / Red Cross first-aid guidance, cited in-app per step • Bangladesh shelter list (9,525 sites, 64 districts), bundled offline No backend, no runtime API calls, no analytics. The only network request is the optional model download.

AI tools used (section 5 disclosure)

In the app: Gemma 4 E2B, running entirely on-device via LiteRT-LM — first aid, map assistant, triage, briefings, chat. The only LLM used; nothing leaves the phone. All numbers are computed in Kotlin, never generated by the model. In development: Claude (Anthropic) as a coding assistant for implementation, refactoring and tests. Architecture and product decisions were the team's, and changes were reviewed before commit. Not used: no AI-generated translations — the minority-language lines come from published human corpora (MELD, GATITOS). Gemma is never used to translate these languages; it has too little training data and would produce confident, wrong medical phrasing.