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.

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
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”.
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.
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: proposedOne 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.
Mobile client
React Native 0.81 with Expo SDK 54, Expo Router and TanStack Query.
Server routes
Expo Router API routes for agent messages, confirm-action, receipts, voice and reports; Zod validation.
Model services
OpenAI gpt-4o-mini for intents and receipts, whisper-1 for speech. No write access to financial tables.
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