How it works
The parser runs locally on your device — notification text never leaves your phone except when Haiku fallback is triggered, in which case only the raw text string is sent (never the full notification object or any metadata).Singapore
DBS Bank
DBS Bank
Package: Regex patterns (simplified):
com.dbs.sg.dbsmbanking
Default currency: SGDSupported notification formats:HSBC Singapore
HSBC Singapore
Packages: Regex patterns (simplified):
sg.com.hsbc.hsbcsingapore / com.hsbc.hsbcsg (legacy)
Default currency: SGDSupported notification formats:UOB
UOB
Packages: Regex patterns (simplified):
com.uob.mighty / com.uob.mighty.app
Default currency: SGDSupported notification formats:Citi Singapore
Citi Singapore
Packages: Regex patterns (simplified):
com.citibank.mobile.sg / com.citibank.mobile.sgipb (IPB)
Default currency: SGDSupported notification formats:Google Wallet
Google Wallet
Package:
com.google.android.apps.walletnfcrel
Default currency: SGDCaptures tap-to-pay NFC transactions. The merchant name comes from the notification title; the amount and card are in the body.Google Wallet notifications don’t include the merchant in the body — the parser reads both
title and text fields from the notification object.Moomoo
Moomoo
Package: Moomoo trades are saved with
com.futu.moomoo
Default currency: USD
Transaction types: trade_buy, trade_sellCaptures US equity and options trades:transactionType: trade_buy or trade_sell and excluded from spend analytics (they appear in the portfolio module instead).India
Citi India
Citi India
Package:
com.citi.citimobile
Default currency: INRSupported notification formats:Axis Bank
Axis Bank
Package:
com.axis.mobile
Default currency: INR
Supported amount formats: INR, Rs, Rs., ₹Supported notification formats:PhonePe (UPI)
PhonePe (UPI)
Package:
com.phonepe.app
Default currency: INRSupported notification formats:Zerodha Kite
Zerodha Kite
Package:
com.zerodha.kite
Default currency: INR
Transaction types: trade_buy, trade_sellCaptures NSE/BSE equity and F&O trades:ParsedTransaction fields
Every successful parse produces aParsedTransaction object:
trade_buy, trade_sell) are excluded from the Spend Hub and routed to the Portfolio module.
Claude Haiku fallback
When no regex matches, the raw notification text is sent to Claude Haiku with this prompt:Adding a new bank
Want your bank supported? Here’s how: Step 1 — Find the package name:BankingAppPattern to notification_parser.dart:
BANKING_PACKAGES in VantageNotificationListener.kt.
Step 4 — Open a PR with example notification strings (anonymised) in the description.
Full guide: CONTRIBUTING.md → Adding a New Banking App