Muhammad Syauqi Al Bashir
All projects

Case study

Financial Management

Household budgeting that reads bank emails, checks receipts and keeps a zero-based plan. In daily use.

  • Python
  • FastAPI
  • PocketBase
  • Gemini
  • Google Apps Script
  • WebAuthn
  • Web Push
  • PWA

The problem

Tracking a household budget by hand never lasts. Every card payment already sends an email, so the app should start there and only ask a person to confirm.

What I built

  • Bank emails (BCA, Mandiri) → a Google Apps Script → an HMAC-signed ingest endpoint; no Google credentials on the server.
  • Rule-based parsers with an LLM fallback (with an amount cross-check); account and card numbers are redacted before anything reaches the AI.
  • Confirm each transaction with a receipt photo (AI reads it and checks it matches), split across categories; receipts saved to Google Drive.
  • Envelope (zero-based) budgeting, e-wallet top-ups as balances, reports with forecasts, an AI advisor, and Web Push tuned for iPhone.
  • A Face ID lock enforced by the server (passkeys), heartbeat so typing never locks, nightly verified backups.

Highlights

Home: safe-to-spend, wallets and what's waiting to be confirmed. (Demo data.)
Home: safe-to-spend, wallets and what's waiting to be confirmed. (Demo data.)
Inbox: every bank email becomes a card with the parsed details and whose account it is.
Inbox: every bank email becomes a card with the parsed details and whose account it is.
Wallets: the zero-based plan, money left per envelope and pace for the month.
Wallets: the zero-based plan, money left per envelope and pace for the month.
Reports: hand-drawn SVG charts, trends and a month-end forecast.
Reports: hand-drawn SVG charts, trends and a month-end forecast.

Try it

Parse a bank email

A fake bank notification: see the fields the parser pulls out and what gets redacted before any AI call. Then try zero-based envelopes.

Try it

Give every rupiah a job

Zero-based budgeting: assign income to envelopes until nothing is left unassigned, as the app's monthly plan does.

How it works

  1. 1Bank email
  2. 2Gmail + Apps Script
  3. 3Signed ingest
  4. 4Parse + redact
  5. 5Confirm with receipt
  6. 6Envelopes, reports, push

Engineering notes

  • Real money data lives here, so every screenshot on this page comes from a scratch copy with a made-up household.
  • Parser tests run on name-scrubbed real emails; forwarded emails taught me to normalise CRLF line endings.
  • iOS details matter: high-urgency pushes, retrying the first request after a long sleep, and a fixed app frame.

How I build

Designed, built, tested and deployed by me with an AI coding assistant (Claude Code): I set the requirements, review every change, test on scratch copies with fake data, and run it in production.