Inspiration

A healthy income can look reassuring—until life throws you a tangerine.

We wanted to explore a question that a bank balance alone cannot answer: How long could someone cover their expenses if their financial circumstances suddenly changed?

Using the Tangerine challenge dataset, we investigated the relationship between money coming in, spending, and financial buffers. That became When Life Gives You Tangerines: an interactive way to understand financial resilience through evidence and realistic “what if?” scenarios.

What it does

Our app turns historical account data into an understandable picture of financial resilience.

Users can explore an account’s income and spending patterns, compare it with similar-inflow accounts, and simulate disruptions such as job loss, rising bills, or an unexpected expense. Sliders, presets, and supported text prompts make scenarios easy to explore.

The app shows the estimated financial runway, a projected balance path, and the calculations behind the result. It also explores hypothetical recovery options, including reducing spending and building an emergency buffer.

Our central finding: higher inflows did not necessarily mean a larger cushion relative to spending. Across the dataset’s 4,500 accounts, the highest-inflow fifth had a median buffer equivalent to approximately 1.8 months of typical spending, compared with 8.5 months for the lowest-inflow fifth.

These are descriptive comparisons of account-level buffers—not proof that earning more causes financial insecurity.

How we built it

Database: the bank data lives in Tiger Data (Postgres), which calculates each customer's numbers. Backend: Next.js API routes serve those numbers to the app. Frontend: a React + TypeScript app runs the shock and plan calculations in the browser, so results update instantly. AI: Gemini turns the results into plain-English explanations. Hosting: deployed on Railway at our GoDaddy domain, whoisdaddy.us.

Challenges we ran into

1. Choosing what to build. One of us wanted the NASA challenge, another wanted Tangerine, and another wanted IBM. We each made our case, compared them against our skills and the time we had, and settled on Tangerine together. This taught us that a conflict over ideas gets settled by discussion and a shared decision, not by whoever argues hardest. Once everyone had a say, everyone stood behind the choice.

2. Matching the judges' formulas exactly. The judges calculate their answers from strict definitions: medians for income and spending, the buffer as the average balance over the last 6 months, and the loan payment only if the loan is still running at the end of 2025. Close wasn't good enough, because one wrong decimal live in front of a judge loses trust. We matched every definition and fixed rounding differences between Python and JavaScript until all 36,000 test cases agreed.

3. Keeping the work going through the night. Some of us went home while others stayed up, so we each worked on our own branch. By the time people came back, main had moved far ahead, and merging brought a pile of conflicts to untangle file by file. We learned to merge from main often and keep branches small.

Accomplishments that we're proud of

  • Finding a clear, counterintuitive relationship between inflows and spending-adjusted buffers.
  • Connecting dataset-wide analysis with interactive account-level scenarios.
  • Making the calculations and limitations accessible through “show the math” explanations and a methodology page.
  • Building a reproducible pipeline and passing all 23 automated tests.

What we learned

Financial resilience depends on the relationship between available funds, ongoing expenses, and potential disruptions—not simply how much money comes in.

We also learned that responsible analysis means questioning convenient labels and separating observed data from scenario assumptions. The provided historical dataset is useful for exploration, but it does not establish how today’s Tangerine customers or Canadians generally would respond to financial shocks.

Clear communication matters as much as the calculation: a useful result should explain what happened, why it matters, and what remains uncertain.

What's next for When Life Gives You Tangerines

We want to add optional inputs for external savings, investments, additional debts, and household obligations so users can represent more of their financial circumstances.

We also want users to confirm which expenses they could realistically reduce, improve benefit and unemployment-duration assumptions, and test whether our findings hold across other datasets.

Our goal is to turn a surprising finding into a clearer conversation about financial preparedness—one tangerine at a time.

Built With

  • claude
Share this project:

Updates

Submission history