Logo Lanfrica

n-elie7/mbwira

Domain:

healthcarenatural language processing

Record type:

softwareproject
Creator:
n-e
Host:
"Talk to me" an anonymous digital support system for people in Rwanda dealing with stigmatized issues: mental health, gender-based violence (GBV), substance abuse, and unwanted pregnancies. # Mbwira **Ubuzima bwawe, ibanga ryawe.** *(Your health, your secret.)* ### Demo video Watch the demo on YouTube --- Mbwira is a privacy-first digital support platform for young people in Rwanda seeking help with sensitive topics — sexual and reproductive health, mental health, gender-based violence, and unwanted pregnancies. It combines a USSD channel that works on any phone, WhatsApp, a web chat, and an anonymous video call bridge, with an automatic escalation pipeline to counsellors — so nobody has to choose between staying anonymous and getting real help. **Live deployment:** mbwira.iraelie.tech Built by **Team Achievers**, BSc Software Engineering, African Leadership University. --- ## Project status | Channel / Feature | Status | |---|---| | USSD channel (Africa's Talking) | ✅ Implemented | | Web chat (Kinyarwanda / English) | ✅ Implemented | | WhatsApp channel (Meta Cloud API) | ✅ Implemented | | Anonymous video calls (WebRTC) | ✅ Implemented | | Counsellor dashboard | ✅ Implemented | | Safety pre-filter and LLM escalation detection | ✅ Implemented | | Session, message, and escalation persistence | ✅ Implemented | | Automated test suite (147 tests) | ✅ Implemented | | CI/CD pipeline (test → build → push → deploy) | ✅ Implemented | | Per-counsellor accounts (replacing the shared password) | 🔜 Planned | | Migration from SQLite to PostgreSQL | 🔜 Planned | This is an active student project under continuous development, not a finished product. See Notes and limitations before relying on it for anything beyond demonstration and testing. --- ## The anonymity guarantee Anonymity is the core design constraint, not a feature bolted on afterwards. It shapes the data model: - **No raw phone numbers are ever stored.** USSD and WhatsApp numbers are reduced to a one-way SHA-256 `phone_hash` at the moment they arrive (`ussd.py`, `whatsapp.py`). WhatsApp replies use the number from the live request, which is never persisted. - **Sessions are random tokens.** A …