Inspiration
Most people don't fail at saving because they don't want to save. They fail because a goal like "₹50,000 in 6 months" feels vague, and nobody tells them early enough that they're slipping. Budget apps show where money went, but they rarely answer the questions that matter: How much must I save this month? What are my real chances? What should I cut if I fall behind? We wanted to build a goal-first savings coach where PayPal is the engine that actually moves the money.
What it does
GoalPay turns a savings goal (a phone, a bike, a car) into a clear plan:
Monthly target: enter a goal and a deadline, and it tells you how much to save each month. Success chance: using your past monthly spending (from a bank statement CSV), it estimates the probability of reaching the goal. Real progress through PayPal: every "Save with PayPal" click creates and captures a PayPal payment, and the progress bar is driven by those captured payments. Catch-up suggestions: if you fall behind, it suggests which spending category to trim and by how much. Nothing changes until you approve. Price watcher: it shows the item's price trend and flags if the price looks likely to rise, so you know whether to wait or buy sooner. AI coach: Google Gemini turns your numbers into short, friendly advice. Multi-currency: USD, EUR, GBP, INR, AUD, CAD, JPY and SGD, with live exchange rates.
All payments use the PayPal sandbox, so no real money moves.
How we built it Python and Streamlit for the web app, with pandas and NumPy for spending analysis, probability and the price trend. PayPal Orders API (sandbox): we create an order, the user approves it on PayPal, then the app captures the payment when PayPal redirects back and records it. Google Gemini API for the AI coach. Live exchange-rate API with a fallback table for currency conversion. GitHub for the public repo, with secrets kept in a local .env file that is never uploaded. Challenges we ran into Losing state after PayPal's redirect: returning from PayPal starts a fresh Streamlit session, so we saved captured payments to a small file and rebuilt progress from it. Currency limits: PayPal can't charge INR here, so INR users are charged the USD equivalent, and JPY needs whole numbers with no decimals. Making PayPal central: our first version used PayPal only for a checkout button. We redesigned it so that payments drive the goal progress. Environment issues: Streamlit doesn't run inside Jupyter, and a NumPy/pyarrow version clash needed a clean virtual environment. Time: we built and polished this in a couple of days, so we focused on one complete flow instead of many half-finished features. Accomplishments that we're proud of A working end-to-end flow: goal, PayPal payment, captured payment, updated progress. A suggestion system that always asks for approval before changing anything. A multi-currency experience so people outside the US can use it too. A clean, beginner-readable codebase with a setup guide that lets anyone run it in minutes. What we learned How the PayPal Orders flow works: create, approve, capture. Why a hackathon project should have its core technology at the center of the experience, not bolted on. How to handle currencies, redirects and secrets safely. That a small, honest, finished feature set beats a long list of unfinished ideas. What's next for GoalPay Connect a real shopping-price API (for example Channel3) in place of the current simulated price history. Pull transactions directly from PayPal's Transaction Search instead of CSV uploads. Let the AI agent schedule recurring PayPal contributions after the user approves. Add multiple goals, shared family goals, and savings streaks. Move from sandbox to production with proper user accounts and a real database.