Android SMS Finance App
Product Shape
Private Kenya-focused SMS expense tracker that parses M-Pesa and bank SMS, stores transactions locally, categorizes spend, and exports CSV.
Ladder Result
Pick Android native: Kotlin + Jetpack Compose + Room + WorkManager.
Why Native Wins
| Constraint | Stack implication |
|---|---|
| Reads SMS from device | Android permission model and Play policy are core |
| Privacy-first finance data | Local database, biometric/PIN lock, no network by default |
| Budget Android devices | Native performance and Material 3 polish matter |
| Store distribution | Play permission declaration and policy evidence are part of v1 |
| Kenya market | Android-first is more realistic than iOS-first |
Avoided Stacks
- PWA: cannot satisfy SMS access and permission model.
- Expo/React Native: possible later, but native Android is cleaner for permission-heavy Android-first v1.
- Flutter: UI consistency does not outweigh Android platform depth here.
- Backend-first: cloud sync contradicts privacy-first v1.
First Quality Gates
- Release build installs on a low-end Android device or emulator.
- Permission onboarding explains why SMS access is needed.
- Local import/parse path works on real SMS samples.
- No network permission is required for transaction data.
- CSV export works.
- Play policy and SMS permission declaration path are checked before implementation lock-in.