01 What happens in a call
| Step | What happens | Built with |
|---|---|---|
| 1. The call | The caller dials Talk from any phone. The voice network sends the call to our server and records each thing the caller says. | Africa's Talking voice and SMS |
| 2. Speech to text | The recording becomes text, in English or Yoruba, and Talk keeps a second reading when the caller mixes languages. | N-ATLaS Whisper |
| 3. Understanding | One call to the language model works out the language, the service, the action and any amount or item, as structured data. It does not write the answer. | N-ATLaS language model, served with vLLM |
| 4. Router and tools | SOFA picks the service from a registry of tools. The model can only choose tools that exist, each with its own limits. | SOFA, our own orchestrator |
| 5. Facts | Prices, stock, balances and advice come from the service's own records. Nothing the model says is trusted as a fact. | Database, partner services |
| 6. Wording | The reply is written around those facts, and a checker confirms every figure and name is present and none is invented. Otherwise a fixed wording is used. | Wording validator |
| 7. Voice | The reply is spoken one sentence at a time in a Nigerian voice, and played back on the call. | Spitch, YarnGPT2 |
02 Principles
Facts
The service is the source
Every number a caller hears comes from a record. The model understands and words; it never decides a price, a stock level or a balance.
Confirm
Read back, then yes
Before an order is placed or money moves, Talk reads back what it understood and waits for a clear yes.
Never stranded
It does not hang up
If a request cannot be answered, Talk passes it to the service with a summary and tells the caller who will follow up. If an answer is slow, the caller hears a holding message and is called back.
03 Languages and the way people speak
People mix Yoruba, English and Pidgin inside one sentence. Talk reads both language models' versions of what was said and keeps the more confident one. Money and numbers are spoken in English in every language, so there is no confusion over an amount.
04 How a service connects
By web API
A service answers a small set of signed requests: look something up, create an order, report a status.
By MCP
A service that already speaks the Model Context Protocol exposes its tools to SOFA directly.
By search
An information service is answered from a search source, and Talk says only what the search returned.
A new service is added by configuration: what it offers, what callers can ask, and where to reach it. There is no code change.
05 The stack
| Part | What we use |
|---|---|
| Voice and SMS | Africa's Talking |
| Speech recognition | N-ATLaS Whisper (English and Yoruba) |
| Language model | N-ATLaS, on our own GPU |
| Voice | Spitch, with YarnGPT2 as the fallback |
| Backend | Python, FastAPI, SQLAlchemy |
| Payments | Paystack, and a partner bank wallet |
| Hosting | A small server for the app, and a GPU that starts on request |
The code is open: github.com/YakubuYinusaT/SOFA-Public.