Broke by 30

Inspiration

Financial literacy gets taught through quizzes nobody remembers. We wanted people to learn by making money decisions and living with the consequences instead — aimed at the twelve years where mistakes compound hardest.

What it does

You're randomly assigned an 18-year-old: a name, a city, a part-time job, and whatever debt you started with. Then you live twelve years, one decision per year. Your car needs $1,800 in repairs — pay cash, put it on a card at 18%, or take the bus and lose shifts. At 30 you get a verdict, from Actually Rich to Buried in Debt.

Some scenarios aren't written by us. They're extracted from live Bureau of Labor Statistics releases, and every one links back to the exact government release it came from.

How we built it

Next.js and React, with a pixel UI rendered entirely in SVG — no image assets. Snowflake holds the game world (cities, occupations, starting backgrounds) and saves every player. Our Xtract pipeline reads live BLS data, classifies the signal, and turns it into a playable decision card carrying its source.

Challenges

The backend spoke in annual salaries and "net monthly change"; the game engine tracked income and expenses separately. Passed through raw, a rent increase would have made players richer. We fixed it with one translation layer instead of forcing either side to change.

We also lost hours to files silently corrupting mid-build. Commit often.

What we learned

Traceability is a constraint, not a feature. Requiring every news-derived event to carry its source meant we couldn't paper over weak extraction.

Built With

Share this project:

Updates

Submission history