FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

UnresolvedCold/PocketPulse: A small app to collect financial sms and classify them into categories · GitHub

Repository files navigation

Pocket Pulse

An Android-first finance inbox that turns transactional SMS into clean, reviewable money records.

Pocket Pulse is a private, local-first finance companion for Android. It scans bank, UPI, card, and wallet SMS messages, extracts useful transaction details, gives every transaction a stable ID, and sends the result through a fast review workflow before it reaches your export ledger.

It is built for people who want the convenience of automated capture without handing their financial history to a remote service.

I created this app as a Kotlin learning project. This app is highly vibe-coded app and I'm using it daily. Making this public for people like me to use it.

Screenshots

What It Does

Area Capability
Passive capture Reads recent transactional SMS messages and listens for new incoming SMS events.
Review inbox Keeps uncategorized transactions in a swipe-based review deck with backlog and completed states.
Manual capture Lets you add cash, missed, or corrected transactions by hand.
Account mapping Maintains configurable account labels for cards, UPI accounts, wallets, and banks.
Categorization Stores configurable categories and remembers reviewed merchant/category choices.
Dashboard Shows inflow, outflow, review count, transaction count, spend by account, and recent activity.
Location context Optionally attaches the latest known Android location to imported or manual transactions.
Ledger bridge Exports only user-reviewed confirmed transactions as CSV.

Product Flow

SMS inbox / incoming SMS
        |
        v
Finance message filter
        |
        v
Amount, direction, merchant, account, and stable ID extraction
        |
        v
Local SQLite transaction store
        |
        +--> Home dashboard
        +--> Review inbox
        +--> Manual capture
        +--> Reviewed CSV export

App Sections

Tab Purpose
Home Capture status, permission prompts, financial summary, date filters, account filters, and recent transactions.
Inbox Review deck for transactions that need category/account confirmation, plus backlog and completed lists.
Signals SMS sync controls, optional location capture, account options, category options, and pending prompts.
Bridge CSV export for confirmed transactions that were explicitly reviewed or manually entered.
Capture Manual transaction entry for anything that did not arrive through SMS.

Privacy Model

Pocket Pulse is intentionally local-first:

  • Transactions are stored in the app's local SQLite database.
  • Account and category options are stored locally.
  • SMS parsing happens on-device.
  • CSV export uses Android's document picker so you choose the destination.
  • Location capture is optional and uses the latest known device location only when enabled.

The app currently requests:

Permission Why it is used
READ_SMS Sync recent bank, UPI, card, and wallet messages from the inbox.
RECEIVE_SMS Capture new transactional messages as they arrive.
ACCESS_FINE_LOCATION Optionally attach place context to transactions.

Tech Stack

  • Kotlin 2.2.10
  • Android Gradle Plugin 9.2.1
  • Jetpack Compose with Material 3
  • Navigation Compose
  • Lifecycle ViewModel and StateFlow
  • Kotlin coroutines
  • Android SQLiteOpenHelper
  • JUnit 4 unit tests

Requirements

  • Android Studio with Android SDK 36.1 installed
  • JDK 17
  • Android 12 or newer device/emulator (minSdk = 31)
  • Gradle wrapper from this repository

Getting Started

Clone the repository and open it in Android Studio, or build from the command line:

./gradlew :app:assembleDebug

On Windows:

gradlew.bat :app:assembleDebug

Install the debug build on a connected device:

./gradlew :app:installDebug

Run the unit tests:

./gradlew test

Release Builds

Release signing is configured through keystore.properties. Start from the checked-in example:

storeFile=/absolute/path/to/release.keystore
storePassword=your-store-password
keyAlias=your-key-alias
keyPassword=your-key-password

Then build:

./gradlew :app:assembleRelease

If keystore.properties is absent, the release build type still exists, but the release signing config is not attached.

CSV Export

The Bridge screen exports reviewed transactions with these columns:

Column Meaning
transaction_id Stable UUID for SMS transactions or generated UUID for manual entries.
occurred_date Transaction date.
occurred_time Transaction time.
merchant Parsed or entered merchant/source.
amount_in_inr Absolute transaction amount.
direction Debit or Credit.
account_label User-configured account classification.
category Confirmed transaction category.
comment User note.
source Sms or Manual.
location_label Optional captured location label.
latitude Optional latitude.
longitude Optional longitude.
raw_message Original SMS body or manual context note.

Only transactions with Confirmed status and userReviewed = true are included in the export.

Project Structure

app/src/main/java/code/shubham/pocketledger/
  PocketLedgerApp.kt              Compose app shell and navigation
  PocketLedgerViewModel.kt        UI-facing state and actions
  SmsCaptureReceiver.kt           Incoming SMS receiver
  data/                           Repository, SQLite store, parsing, snapshots
  feature/dashboard/              Home dashboard
  feature/transactions/           Review inbox
  feature/planner/                Signals and configuration
  feature/export/                 Reviewed CSV bridge
  feature/editor/                 Manual capture
  ui/                             Shared UI components and theme

Testing Focus

The existing unit tests cover:

  • SMS amount, direction, merchant, account, and stable ID parsing
  • Ignoring non-financial SMS messages
  • Manual capture behavior
  • Snapshot calculations
  • Reviewed transaction filtering for export

Run them before shipping parser, repository, or export changes:

./gradlew test

Current Release

Version 1.0.0 is the first signed direct-distribution release. See CHANGELOG.md for release notes.

About

A small app to collect financial sms and classify them into categories

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages


Back | FazBrowse Home | New Git URL