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

ConstraintStack implication
Reads SMS from deviceAndroid permission model and Play policy are core
Privacy-first finance dataLocal database, biometric/PIN lock, no network by default
Budget Android devicesNative performance and Material 3 polish matter
Store distributionPlay permission declaration and policy evidence are part of v1
Kenya marketAndroid-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

  1. Release build installs on a low-end Android device or emulator.
  2. Permission onboarding explains why SMS access is needed.
  3. Local import/parse path works on real SMS samples.
  4. No network permission is required for transaction data.
  5. CSV export works.
  6. Play policy and SMS permission declaration path are checked before implementation lock-in.