Skip to content

Latest commit

Β 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 

Repository files navigation

Intent Pay

Native privacy-first Android expense tracker that intercepts bank SMS alerts offline to classify transactions and curb impulse spending.

License: MIT Kotlin Jetpack Compose Room DB Android SDK

Report Bug · Request Feature


Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�      Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�      Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�
Γ’β€β€š Incoming Bank    Γ’β€β€š Ò”€Ò”€Ò”€Ò–º Γ’β€β€š Android Broadcast      Γ’β€β€š Ò”€Ò”€Ò”€Ò–º Γ’β€β€š Local Deterministic   Γ’β€β€š
Γ’β€β€š SMS Notification Γ’β€β€š      Γ’β€β€š Receiver (Zero Cloud)  Γ’β€β€š      Γ’β€β€š Regex Parsing Engine  Γ’β€β€š
Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ      Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ      Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Β¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ
                                                                      Γ’β€β€š
Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�      Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�                  Ò–¼
Γ’β€β€š Jetpack Compose  Γ’β€β€š Γ’β€”β€žΓ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬ Γ’β€β€š Room SQLite Database   Γ’β€β€š Γ’β€”β€žΓ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬ Ò”ŒÒ”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”€Ò”�
Γ’β€β€š Glassmorphic UI  Γ’β€β€š      Γ’β€β€š & Budget Table Entity  Γ’β€β€š      Γ’β€β€š High-Value Reflection Γ’β€β€š
Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ      Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ      Γ’β€β€š Behavioral Friction UIΓ’β€β€š
                                                          Γ’β€β€Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€β‚¬Γ’β€Λœ

Existing personal budget apps rely on delayed cloud bank syncing and passive tracking, failing to intervene at the critical moment of purchase. Intent Pay operates 100% offline, intercepting bank SMS transaction alerts in real time through native Android broadcast receivers and introducing deliberate reflection friction overlays on high-value purchases.


Features

  • 100% Offline Privacy Ò€” Stores and processes all financial transaction data on device without cloud telemetry or external network calls.
  • Zero-Latency SMS Interception Ò€” Listens for incoming banking SMS notifications instantly using native Android BroadcastReceivers (SmsReceiver.kt).
  • Deterministic Expense Classifier Ò€” Extracts transaction amounts, merchant names, and categories with local regex rules (KeywordRuleMatcher.kt).
  • Behavioral Reflection Overlay Ò€” Displays an immediate friction modal (ReflectionActivity.kt) on high-value purchases to prevent impulse spending.
  • Glassmorphic Compose UI Ò€” Features custom glass cards (GlassCard.kt), mesh backgrounds (MeshBackground.kt), and dynamic spending rings.
  • Google Sheets & CSV Export Ò€” Supports periodic background synchronization and manual spreadsheet export via Android WorkManager.

How It Works

graph TD
    A[Incoming Bank SMS Alert] --> B[SmsReceiver: BroadcastReceiver]
    B --> C[SmsParser: Regex Engine]
    C --> D{High-Value Transaction?}
    D -->|Yes| E[ReflectionActivity: Intent Friction Dialog]
    D -->|No| F[Direct Transaction Insertion]
    E -->|User Confirms / Reflects| F
    F --> G[(Room SQLite Database)]
    G --> H[Jetpack Compose Dashboard & Spending Rings]
Loading

Android Permissions

Intent Pay requires the following explicit permissions for offline transaction detection:

Permission Purpose
android.permission.RECEIVE_SMS Intercept incoming bank transaction SMS messages in real time
android.permission.READ_SMS Historical transaction import during initial onboarding
android.permission.POST_NOTIFICATIONS Send budget alerts and high-value reflection prompts
android.permission.BIND_ACCESSIBILITY_SERVICE Optional UPI payment screen detection

Quick Start

Prerequisites

Requirement Version Notes
Android Studio Flamingo (2022.2.1)+ Official Android IDE
JDK 17+ Java Development Kit
Android SDK API 24+ (Android 7.0+) Minimum SDK target

Installation & Build

  1. Clone the repository:

    git clone https://github.com/Justinvcj/Intent_Pay.git
    cd Intent_Pay
  2. Open the project in Android Studio.

  3. Build debug APK using Gradle:

    ./gradlew assembleDebug
  4. Install on a connected physical Android device or emulator with SMS capabilities.


Tech Stack

Layer Technology
Language Kotlin
UI Framework Jetpack Compose, Material Design 3, Glassmorphic Design System
Local Storage Android Room Database, SQLite, Android DataStore
Background Processing Android WorkManager, Kotlin Coroutines, StateFlow
Build System Gradle Kotlin DSL (build.gradle.kts)

Contributing

Contributions are welcome. Please open an issue first to discuss what you would like to change.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feat/IntentFeature)
  3. Commit your Changes (git commit -m 'feat: add intent feature')
  4. Push to the Branch (git push origin feat/IntentFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for details.

About

πŸ’Έ Native, offline Android application leveraging Broadcast Receivers and a Room DB classification engine to intercept bank SMS alerts.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors