Voice ai-agent infrastructure that turns a Kinyarwanda and other African Languages phone call into a completed public-service transaction.
# Virixy AI
Voice-agent infrastructure that turns a Kinyarwanda phone call into a completed
public-service transaction.
**The claim this project proves:** the hard, undifferentiated part of African-language
voice AI (speech recognition, speech synthesis) is already solved and open-sourced
(Digital Umuganda for Kinyarwanda). What's missing is the layer that turns that into
an agent that *does something* — holds conversation state across turns, decides what
to ask next, and calls a real backend action. That orchestration layer is what this
repo builds, and it's designed so a new language means adding a new STT/TTS backend,
not rewriting the engine.
## Demo scenario: report a lost national ID
Caller dials in, speaks Kinyarwanda. The agent collects four fields one at a time
(full name, district, ID number if known, callback phone), confirms them back, then
writes a record into the mock civil-registry DB and reads back a reference number.
A confirmation SMS follows. A live dashboard shows the record appear in real time —
that's the visible proof the call "did something," not just "said something."
## Architecture
```
caller --dial--> Africa's Talking Voice --webhook POST--> this server (/voice/callback)
|
Say + Record (XML response)
|
caller speaks, AT posts
recordingUrl back to /voice/callback
|
download audio -> STT (Modal: Whisper)
|
orchestrator: slot-filling,
intent, session state
|
writes to registry DB (SQLite)
visible on /dashboard
|
TTS (Modal: Chatterbox) -> Play + Record
next turn (XML response)
|
on completion: SMS confirmation
via Africa's Talking SMS API
```
Voice and SMS both go through Africa's Talking now (moved voice back from
Twilio - Twilio only sells international, not local, Rwandan numbers, meaning
every test call would cost an international rate off MTN/Airtel; Africa's
Talking has real in-country Rwanda voice presence). Africa's Talking's
` ` is record-then-respond, not full-duplex streaming — the
conversation is turn-based by design (call …