Multi-channel civic participation platform for Zambia — deliberate and be counted on the matters your representatives vote on, from any phone. Web, USSD, SMS & WhatsApp. One NRC, one voice.
# Ishiwi — Every Zambian Counting
> **Between elections, the opinion of the Zambian people has no institutional form.**
> Ishiwi is an attempt to change that.
A multi-channel civic voice platform: citizens read both sides of every matter before
their representatives vote on it, are counted (Aye / Nee / Undecided), rank their
constituency's CDF projects, and see — matter by matter — how their MP voted next to
what the constituency said. One NRC, one voice, on any phone in Zambia.
📄 **Read the paper behind Ishiwi** — *"Every Voice Counted: The Democratic Value of
Continuous, Multi-Channel Citizen Participation in Zambia"* (SSRN, 2026):
papers.ssrn.com
🌍 Built for the reality that most Zambians reach digital services through USSD on a
feature phone — not an app — so every channel below counts equally.
---
## Why this exists
Zambians vote once every five years, choosing one representative for thousands of
future decisions. Between elections, Parliament decides by voice vote and what
constituents actually think stays unmeasured. The Constituency Development Fund Act
of 2024 already *mandates* community
participation; the Access to Information Act of 2023
already gives citizens a right to public information. Ishiwi is the instrument that
turns those legal duties into something every citizen can actually use — from a
smartphone in Lusaka or a K150 handset in Shang'ombo.
## Channels in this MVP
| Channel | Where | Status |
|---|---|---|
| Web app | `GET /` | working |
| Editorial desk (admin) | `GET /admin` | working, token-protected |
| USSD (*384#-style) | `POST /channels/ussd` | working — Africa's Talking gateway format |
| SMS keywords | `POST /channels/sms` | working — `REG`, `MATTERS`, `VOTE`, `CDF`, `SUPPORT`, `MP`, `RESULTS` |
| WhatsApp bot | `POST /channels/whatsapp` | working — webhook wrapper over the same engine |
| Open data | `GET /open-data.json` | working — counts only, never identities |
See `docs/archi …