The model is called Talea. It reads a bank text or notification and tells you what kind of movement it was, how much, the balance, the card, and which shop or person was on the other side. It is 62 MB, runs in a few hundredths of a second on a phone, works in English and Egyptian Arabic, and nothing leaves the device.
One rule from the start: the model never writes a number. A model that writes text can write a wrong amount that looks right, and in a money app that's the worst mistake it can make. Talea picks the kind of message and points at words already in it. Normal code turns those words into the transaction.
Card paymentYour credit card ending 4471 was charged EGP 386.00 at TALABAT on 12/10 at 20:05. Available balance EGP 12,540.00.
Card paymentتم خصم 386.00 جنيه من بطاقتكم المنتهية بـ 4471 لدى TALABAT يوم 12/10. الرصيد المتاح 12,540.00 جنيه
Transferعزيزي العميل، تم تحويل EGP 1,500.00 من حسابك رقم ***2210 إلى Mona S. عبر InstaPay. Balance: 8,320.15
How I built it
It started life as a search model. I took multilingual-e5-small, an open embeddings model, kept the part that reads text, put my own small heads on top, and retrained the whole thing on transactions. Then I removed the vocabulary bank messages never use, which is most of how it shrank to 62 MB. I tested five other starting points, some six times larger. None did better on my messages, and all were slower.
Where it is going
The goal is to read any financial text on any phone and turn it into a transaction. I started with Egyptian SMS, then added UAE and UK data, then notifications. Each new kind of message helps it generalise further.
Today it runs inside Tally next to the server, which still reads every message, and checks itself against it before it decides anything.
What I'm working on now
Talea is part of Sterling, a side project where I'm exploring how embedding models can be used to make specialised models that run on the phone.
Now I'm building a meetings transcription tool, and then a meetings agent on top of it: one that can speak in the meeting and help, show a slide, pull up data. The leading tools, like Granola, Fathom and Read AI, are bad at Arabic, so I'm starting with Egyptian Arabic.
Under it is a voice model in three parts: one that listens, one that speaks, and one that acts, which can be a normal decision model like Talea. I'm testing EmbeddingGemma 2 as the base and have started training it. We'll see how it goes.
Why a small model
Most of what apps ask big language models to do is make a decision: which kind of thing is this, which tool should run. A small model on the phone can make those decisions in a few hundredths of a second, for free, with nothing leaving the device. I think most consumer apps need a fast small one, and I built one to find out.