mTagger
An Android app that reads M-Pesa SMS, parses each transaction and files it with a rule engine that learns from your corrections. No accounts, no backend, no sync. Published on Google Play.
Read the case studyHide the case study
The problem
Most Kenyans pay with M-Pesa, and the only record of that spending is a stream of SMS receipts. Budgeting apps want a bank login or your data on their servers. I wanted the categorised picture without either.
How it flows
- SMS arrives
- Parser
- Rules engine
- Room database
- Notification
- Confirm or override
- Learned rule
Decisions and trade-offs
- Data stays on the device
- No accounts, backend, sync or analytics, and cloud backup is disabled. CI pins the exact permissions the release build may hold, so a dependency can't quietly add one.
- Guesses wait for an answer
- Every guess waits in a review queue until you answer it. Three consistent corrections turn into a rule, and a correction says how many waiting payments it would also file before it does.
- Money as BigDecimal
- Amounts are stored as strings and handled as BigDecimal. Transactions are keyed by the M-Pesa receipt code, so reprocessing the same message is idempotent.
- Versions from commit messages
- Version numbers come from Conventional Commit prefixes, and one workflow builds the signed APK and the Play bundle, with release notes generated from the history.
Where it stands
Live on Google Play.