the board

Boncos

The Boncos logo above the line "I stopped typing my expenses", with two phones below showing lock screen notifications and the dashboard

A personal expense tracker for Android that reads my bank's transaction emails, prices my crypto across four exchanges, and reconciles every month against the bank's own statement.

React NativeExpo SDK 54TypeScriptexpo-sqliteZustandNativeWindGluestack UIGmail APIGroqCoinStatsCloud RunPub/Sub

Boncos records income and expenses from three sources: my bank's transaction emails, my crypto exchange accounts, and manual entry for the rest. Everything is stored in SQLite on the phone. There is no account, no sync, and no server holding my data.

I have been using it as my only expense tracker for three months.

What it does

  • Reads bank emails. Gmail API into an LLM into a validated row, filtered to four sender addresses, one month at a time.
  • Real time notifications. A Cloud Run relay watches the inbox and pushes a parsed transaction to the phone within seconds of paying, without the app being open.
  • Statement reconciliation. Imports the monthly PDF with a deterministic parser and refuses the import unless the opening balance plus every line equals the closing balance.
  • Crypto net worth. Reads balances directly from OKX, Bitget, Binance and Bybit with read only keys, including the Earn products that aggregators miss, and prices them in IDR.
  • Two legged transfers. Paying a credit card bill moves money between two of my own accounts, so both legs are recorded and neither counts as spending.
  • Search and filter. By merchant, category, wallet and month, over the month currently in view.
  • Backup and export. Full JSON backup with a replace all restore, plus CSV for spreadsheets. Neither ever contains an API key.
The Boncos dashboard: a month stepper reading Aug 2026, a net worth of Rp 19.000.000, income and expenses for the month, and five recent transactionsThe transaction list grouped by day, with an amber wallet icon flagging a row whose account could not be resolved, and a blue ribbon marking two rows confirmed against the bank statementThe crypto screen: a total portfolio of Rp 11.590.000, three assets, and a per exchange breakdown across OKX, Bitget, Binance and BybitAn Android lock screen showing four Boncos notifications, each reporting one transaction, the newest three minutes old

Seeing it work

video demo (WIP)

Three real payments, made on three different channels, appearing on the lock screen seconds later.

Design

Black and orange, monospace on every number, a single 56px row used for transactions, wallets, assets and settings alike. Orange appears at most once per screen: the primary button, or the active tab, never both.

Why the repo is private

The code is a map of one person's bank notifications, and it only works for one bank. The reasoning behind it is public instead, in the write up below.

like what's on this board?

pull one —