
Sauti Ledger lets chama members log savings transactions by sending a WhatsApp voice note instead of typing. A member says something like "I have deposited 5000 for savings," and the system transcribes it, extracts the amount and transaction type, and logs it as a pending entry. The treasurer reviews and approves or rejects it from a dedicated dashboard before it hits the official group ledger, keeping a human check in the loop while removing all the manual typing. This is built on top of an existing production system for a real chama client here in Kenya, so it's solving a genuine, recurring friction point rather than a hypothetical one. A voice note comes in through WhatsApp via Twilio, AssemblyAI transcribes the audio to text, and a self-written parser extracts the amount and transaction type from that text. It's saved as a pending row in the database, and the treasurer approves it from a dedicated view before it moves to the confirmed ledger. Along the way I worked around a few real constraints: AssemblyAI's Python SDK failed to compile on Termux's Python 3.14, so I called the REST API directly. LeMUR hit a 404, so I dropped it in favor of my own lightweight parser. And initially, word-based amounts like "five thousand" weren't recognized, only digits and Swahili "elfu X" phrasing were, so I added English word-number parsing as a fallback and confirmed it working live via WhatsApp before submitting. Entirely built and tested from an Android phone using Termux, deployed on PythonAnywhere.
30 Sep 2026