We were inspired by the “forest” time-tracking app ( It shows a tree that grows healthier when you spend your time well, and dies when you don’t. We thought this would be an effective way to teach better financial health, made easy using Mastercard’s real-time transaction data.

What it does

Our project integrates with the Mastercard transaction notifications API to receive card transactions. Using data from the API, it groups the transactions into simple categories, like “gas”, “subscriptions”, and “air travel”. Then we ask the user to pick a goal for each category of how much they would like to spend. When the user meets their goal, their tree produces fruit, but they begin to lose fruit as they go over their goal.

How we built it

Our backend is nodeJS/Express, and we have a React frontend. We use a webhook to integrate with the Mastercard API so that we receive a notification whenever there is a new transaction.

To generate the tree graphic, we used the DALL-E AI image generator.

Challenges we ran into

Categorizing the merchants was difficult and required us to develop our own mapping of Mastercard-reported categories into simplified ones. The data available from the API is also limited–for example, we wanted to differentiate between large and small businesses to have a “support local business” spending goal, but there is not sufficient data to make this happen.

Several members of our team were also inexperienced with JavaScript, which increased the amount of learning required for the project.

Accomplishments that we're proud of

  • We integrated with a real credit card!
  • We have a fun and functional user interface

What we learned

We learned more about how POST and GET requests work. We also learned how to use Tailwind CSS. Finally, we learned about how credit card transactions are assigned to categories using MCCs.

What's next for Budget Buddy

First, we would like to add additional challenge types, such as supporting small businesses or supporting businesses with good environmental practices. We believe this would allow people to be even more sustainable with their spending.

Second, we believe this represents a significant business opportunity. Existing credit cards have reward offers that are sponsored by merchants, but they’re usually just presented as a list in a banking app. Our vision is that in our app, each fruit that the customer earns with their good spending habits is redeemed for a random sponsored offer. In this way, customers are rewarded for good spending habits and save money, and businesses get to send their sponsored offers to highly-interested consumers who view the offers as a reward rather than an advertisement.

Share this project: