Back to worldNext: The observatory

05 · Capstone

BudgetPal

Finance actions proposed clearly, confirmed by people.

An agent-first personal finance app and B.Sc. capstone. People state what they want in text, voice or a receipt photo; the app prepares a structured action and changes nothing until the person confirms it.

Nour’s role
Full-stack mobile engineering · Agent systems
Status
Public repository. Screenshots and demo media are still being prepared by the project.
BudgetPal app icon: a green-to-blue orbit glyph on a dark rounded square.
BudgetPal app icon from the BudgetPal repository (assets/images/icon.png). The project has not published screenshots yet.

What is real today

Live

  • Public capstone repository with the agent, receipts, voice and reports implemented

Not claimed

  • No public app store release is claimed here
  • The demo on this page uses a fictional example: no account, no analysis, no financial advice

The problem

Traditional finance apps rely on manual entry and nested menus. The friction leads to skipped entries and late awareness of overspending.

Letting a language model write to financial records directly is unacceptable: interpretation is probabilistic, money is not.

How it works

  1. 01

    A conversational assistant is the entry point: “I spent 45 shekels on lunch”, “Can I afford headphones for 350 ILS?”, “Generate a monthly report”.

  2. 02

    Every interpretation becomes a record in agent_actions with the state proposed. The app shows an interactive card; the database transaction runs only after the person confirms. Proposed → executed or cancelled.

  3. 03

    Totals, date ranges and metrics are calculated on the server deterministically; reports are rendered as vector PDFs.

Try it

A fictional request becomes a proposal. Review it, then confirm or cancel — nothing happens until a person decides.

“I spent 42 shekels on groceries at the market.”

Add transaction

status: proposed

One action is proposed. Nothing has been recorded.

Fictional example. No account, no spending analysis, no financial advice.

Selected capabilities

  • Conversational requests

    An intent classifier routes requests such as adding a transaction, spending analysis, affordability, saving advice, budget limits and reports.

  • Review cards

    TransactionPreviewCard and BudgetLimitProposalCard let the person inspect and confirm before anything is written.

  • Receipt input

    Camera or gallery images are compressed on the device and sent to a server-side vision pipeline for structured extraction.

  • Voice input

    Local recording with expo-audio and level detection, transcribed server-side with Whisper.

  • Deterministic reports

    Server-side category totals and metrics, with vector PDF reports generated by pdf-lib.

  • English and Hebrew

    Localized strings with an automated check that both locale files contain the same keys.

Architecture

The mobile client never talks to the model directly; server routes validate, stage and execute.

  1. Mobile client

    React Native 0.81 with Expo SDK 54, Expo Router and TanStack Query.

  2. Server routes

    Expo Router API routes for agent messages, confirm-action, receipts, voice and reports; Zod validation.

  3. Model services

    OpenAI gpt-4o-mini for intents and receipts, whisper-1 for speech. No write access to financial tables.

  4. Financial core

    Supabase Postgres with row-level security on user-owned tables and the agent_actions state machine.

  • React Native 0.81
  • Expo SDK 54 · Expo Router
  • TypeScript
  • TanStack Query v5
  • Zod
  • Supabase · RLS
  • OpenAI API
  • pdf-lib