Inspiration

Most personal-finance apps tell you where your money went. The harder question comes before a payment: "Can I afford this, and when?" A ₹75,000 laptop can be affordable today and still leave you short a week later, when rent and bills arrive before your salary. We wanted a tool for that moment, one that shows the consequence of a decision before it is made and then helps you act on it safely through PayPal.

What it does

FINORA builds a financial digital twin from your transaction history: recurring income, recurring commitments and day-to-day spending. It then projects your balance day by day for the next 90 days.

  • Payment comparison: for a purchase, FINORA simulates paying in full today, waiting until payday, Pay in 4 and Pay Monthly. It reports the lowest projected balance and whether each option breaks your safety buffer.
  • What-if scenarios: delayed or reduced income, new or cancelled subscriptions, unexpected expenses and exchange-rate moves, compared against the baseline.
  • Stress testing: job loss, pay cuts, medical emergencies and 400 seeded Monte Carlo paths built from your own spending variability.
  • AI assistant: ask in plain language. The assistant selects the right engine calculations and explains the results.
  • PayPal checkout: when you choose an option, FINORA prepares a PayPal Orders v2 checkout. Money moves only after three human steps: you acknowledge the projected impact, approve the payment on PayPal, and confirm the capture in FINORA.

A purchase option is considered safe when the projected balance stays at or above the user's buffer for the whole horizon:

$$\min_{t \in [d,\, d+90]} B_t \;\ge\; \text{buffer}$$

How we built it

  • Deterministic engine (Python, Decimal): every figure is computed by a pure financial engine. Forecasts, scenarios, payment comparisons and stress tests produce identical outputs for identical inputs. No floating-point money.
  • AI layer (Groq): openai/gpt-oss-120b via Groq's OpenAI-compatible API with tool calling, falling back to openai/gpt-oss-20b and finally to a deterministic planner. The model chooses tools and arguments. It never does the arithmetic.
  • Grounding guardrail: every amount, percentage and date in an AI answer is checked against the engine's output with a precision-aware tolerance. An answer containing an unsupported figure is replaced with the engine's own wording, and the UI says so.
  • PayPal integration: OAuth 2.0, Transaction Search (read-only, idempotent imports keyed on transaction ID), Orders v2 (create, approve, capture with PayPal-Request-Id idempotency), Subscriptions v1 and Log in with PayPal (OpenID Connect). All are tested against the free Sandbox.
  • Stack: FastAPI, SQLAlchemy 2 (SQLite or PostgreSQL), React 19, TypeScript, Vite, Tailwind CSS 4 and Recharts, packaged with Docker.
  • Data provenance: every record carries its source (sample, imported file, PayPal API or PayPal checkout). Fictional sample data and real PayPal data can never share a ledger.

Challenges we ran into

  • Keeping the LLM away from arithmetic. Our first evaluations showed the model sometimes subtracted numbers itself and got them slightly wrong. We moved every difference into the engine's tool results, so the model quotes figures instead of calculating them, and added the guardrail as a backstop.
  • Guardrail edge cases. Red-team testing exposed two bugs: JSON escaping turned "₹12,469" into a different number, and a flat tolerance let swapped digits through. We fixed both and added regression tests.
  • Cross-currency checkout. The demo profile is in INR, but the Sandbox checkout settles in USD. An early version would have sent ₹75,000 as USD 75,000. We now require an explicit conversion rate and charge the converted amount.
  • Sandbox account setup. Buyer approval failed with an India-registered Sandbox account because of currency restrictions. A US Sandbox buyer account resolved it.
  • A stable demo on any date. The synthetic profile is generated relative to today, so the story changed with the calendar. We anchored bills to the pay cycle and tested the outcome across a full year of dates.

Accomplishments that we're proud of

  • A complete, verified Sandbox flow: order created, approved by the buyer on PayPal and captured (COMPLETED), with the payment reflected back into the forecast.
  • An AI assistant whose figures are always traceable to the engine. Every answer carries an execution trace and a grounding verdict.
  • Payment safeguards enforced on the server, not only in the UI: missing acknowledgement, approval or confirmation is rejected, and duplicate captures return the original capture.
  • An evaluation harness covering a 40-question agent benchmark, guardrail red-teaming and a forecast backtest. The backtest runs on synthetic data and is presented as such, not as real-world accuracy.

What we learned

  • LLMs are excellent at understanding intent and poor at being trusted with money. The right division of labour is to let the model orchestrate and let deterministic code calculate.
  • Payment UX needs friction in the right places. Explicit, separate human approvals make an AI-assisted checkout trustworthy.
  • Being honest about data matters. Labelling sample data everywhere and keeping it apart from real PayPal records made the product more credible.

What's next for FINORA

  • Production PayPal onboarding and live Transaction Search for real users.
  • Pay Later eligibility and terms fetched from PayPal instead of illustrative terms.
  • Proactive notifications when a forecast crosses the safety buffer.
  • Shared household twins and support for more currencies.

Built With

Share this project:

Updates

Submission history