
Salliසල්ලි
A private, local-first money companion.
A budgeting app built around how money actually moves in Sri Lanka. It reads your bank SMS on the phone itself, and nothing about your finances ever leaves the device.
- Safe to Spend
- Bank SMS read on-device
- Seettu, goals & budgets
- English · සිංහල · தமிழ்
Safe to Spend
Know what today can afford

Every rupee in one ledger
Read from bank SMS

See where it went
By category and account

Safe to spend today
Rs. 59,990
1 day to payday
- 99.52%
- Accuracy on 6,092 synthetic test messages
- 2.79 MB
- Classifier weights
- 0
- Messages sent to a server
- 3
- Languages: English, සිංහල, தமிழ்
Why I built it
Expense trackers rarely fit the way money is recorded here. You either type in every purchase by hand, or you use an app that ships your bank messages to a cloud service to make sense of them. A bank alert carries far more than an amount: a balance, part of a card number, a merchant, a time. I did not want an app whose first request of you is to hand all of that to someone else.
So Salli (සල්ලි, “money”) starts from the opposite position. The intelligence comes to the phone.
A balance is not a plan
The number I actually wanted every morning was not my balance. It was: how much can I spend today without making the rest of the month harder?
Salli calls that Safe to Spend. It takes the income for the current cycle, sets aside savings and commitments you have approved (rent, a Seettu contribution, bills), subtracts what is already spent, and spreads what is left across the days until payday. You can open the number and see every input. It is guidance, not a verdict.
How an SMS becomes a transaction
This is the part that took the most care, because a wrong entry poisons the whole ledger.
- Rules first. A rule engine checks the sender and throws out anything that is not a completed transaction: OTPs, promotions, declined payments, pending authorisations, balance-only notices.
- Known formats. Messages that survive are matched against the formats Sri Lankan banks really use.
- A small local classifier handles wording it has not seen, suggesting direction, type, institution and category.
- Exact extraction. A separate extractor copies the amount, currency, account suffix, merchant and time straight from the text. If the message has no amount, nothing invents one.
- You confirm. Every proposal goes to a review screen with the original message beside it. Only confirmed entries join the ledger.
All five steps run on the device. The classifier is 2.79 MB of weights and needs no download or account.
Two platforms, one principle
Android can read supported bank SMS once you grant permission. Apple does not allow that, so on iOS capture is manual and receipt-first. The ledger and the privacy rule are identical on both.
Where it stands
In beta. I want to be precise about the accuracy figure: 99.52% is on a suite of 6,092 synthetic messages shaped like Sri Lankan bank alerts. It is evidence the engineering works, not proof about real inboxes. Validation on opt-in, redacted real messages is a release gate, not an afterthought. The classifier is also published separately as an open package with a browser playground.
In pictures
A closer look
On a phone


