Expense-Trackers

2 min read

Research Android SMS transaction import for a personal APK

Summary

Created docs/research/android-sms-transaction-import.md with primary-source research and a repository-specific implementation proposal. Reviewed Android SMS access, Google Play’s reviewable money-management exception, verification-only SMS APIs, notification-listener limitations, share/paste alternatives, and WebView bridge security. Mapped the proposal to the Kotlin WebView wrapper and existing Go parse/import APIs, identifying cloud-parser privacy concerns, insufficient authorization in the existing download bridge for SMS access, and missing source-key/idempotency support in bulk imports.

Outlined bounded foreground scans, local bank-specific extraction and candidate persistence, editable review with explicit selection, accounting classification that avoids double-counting settlements/transfers, and server-enforced retry-safe imports. The user clarified that the initial target was a personally installed APK; the follow-up recommendation prioritized a real-device READ_SMS feasibility spike before a last-30-day manual-scan MVP. This session completed research and planning only: no SMS feature, permission spike, parser fixtures, builds, or tests were implemented or verified. The research document existed as an untracked file at review; no tracked diff or commit was present for it.

Decisions

  • Recommended a personal-APK-first MVP without making Google Play approval a blocker, while retaining Android permission and installer checks.
  • Recommended local rules-first parsing, keeping raw SMS off the server, and requiring explicit review/selection rather than automatic transaction creation.
  • Deferred background discovery until classification, secure native/web communication, and duplicate-safe imports were established.

Learnings

  • Personal installation avoids Play publication review but does not bypass dangerous, hard-restricted SMS permissions or installer allowlisting.
  • The existing bulk-import endpoint lacked source/idempotency keys and rejected settlements; a bank debit or credit could not safely map directly to expense or income.
  • The existing addJavascriptInterface download bridge was not an adequate authorization boundary for sensitive SMS operations; native-owned controls or origin-scoped messaging required separate design.