Blog
What we measure
Numbers from running inference in this market: what a language costs to tokenize, what a payment actually confirms, and where our own pricing sits.
We measured Whisper on 19 African languages
Eleven of them have no language code at all, so you cannot tell the model what it is listening to. It picks for you, and it picked wrong on all nineteen. Here is the full table, the method, and the one model that does better.
The African-language models you are allowed to ship
For two years the best open models for African languages carried a licence that forbids selling anything built on them. That changed quietly in late 2025, and most people have not noticed. Here is what you may actually use, for text and for speech.
How to choose a model for an African language
The same Amharic sentence costs 1.94x English on one model and 7.69x on another. Picking on benchmark scores alone can quadruple your bill for identical work. Here is the measured data for eight languages, and the trap that makes the best tokenizer the wrong choice.
Seven ways to cut an inference bill without changing model
Most teams reach for a smaller model first, which usually costs them quality they did not need to trade. These seven changes are free, take an afternoon, and several of them cut spend by more than switching model would.
Building an LLM feature that survives a bad connection
Streaming, retries and timeouts all behave differently when the network drops halfway through a two-second response. Most LLM tutorials assume a connection that does not. Here is what actually breaks and what to do about each one.
Structured output that actually parses
We tested every model we serve with a real strict json_schema request instead of trusting the catalogue tags. Twelve of them can call a function and still cannot hand you parseable JSON. Here is how to tell, and what to do about the ones that fail.
Migrating an OpenAI app to open-weight models
Two values change and your SDK, retries and parsing all carry over. What does not carry over is model names, three parameters that behave differently, and one assumption about max_tokens that will bite you on reasoning models.
New posts by email
Measurements and engineering notes, when there are new ones. There is also an RSS feed if you would rather not give us an address.