Inspiration
My friends and I wanted to visit Punta Cana during our spring break, but money doesn't grow on trees. Soon, we got employed on campus and started saving money to go on the trip of our lives. Little did we know, eating out, concerts, and nights out would eat away from our savings. While traditional banking apps let us keep track of our spending, we often had multiple cards, accounts, and transactions we would only find out about days after they had been processed. If only there was a way to view or predict your future payments... or maybe even control them?
What it does
FinFolio is not your average budgeting mobile-application. We use multiple regression models that interact with each other to create a custom, adaptive budget according to the user's spending. Not only does it set a goal and prediction for your end-of-month spending according to your plans, but it also predicts which categories you spend the most money on and allows more wiggle room for them. On top of that, our smart saver predicts days of income and initiates an action to deposit a certain amount into savings, motivating them to build up their balance. All of the users' saving goals, predicted costs and actual costs are shown neatly on our dashboard, which our mascot Finny will guide you through! Furthermore, we use the Plaid API to ensure secure bank logins using OAuth, and to take it a step further, we trained a Machine Learning model to catch fraud transactions within seconds of them being made. This alerts the user with a push notification, where they can report the payment to the bank or verify it. Lastly, our cash calendar allows users to visually look at their recurring payments, scheduled payments, and predicted inflows to effectively plan their budgeting. We allow users to interact with the calendar to view cash flow, and even make the recurring payment with the card that rewards them with the highest cashback!
How we built it
We used a robust FastAPI backend with a flexible SQLite database to store our Users, Transactions, Events, and Cards tables. We used a relational database as bank information is usually structured, rigid, and relational. Since a mobile
Challenges we ran into
We had a lot of trouble reading the Plaid documentation and figuring out OAuth with the sandbox environment. There were both public and access tokens involved, and data would only be sent to us after exchanging tokens with the API. We also had to learn how to use Webhooks to wait for responses from the API, and this was new to us. We ran into a lot of dependency conflicts over our Python environments too, as some of us ran 64-bit while the others ran 32. We had to run a script to train the model on each of our devices with our relative dependencies.
Accomplishments that we're proud of
We successfully implemented OAuth using Plaid API, which is used by banks such as TD. This showed us that we are capable of using real-life tools that developers who work on critical projects work with daily. We are also proud of how many features we have successfully implemented, and how we effectively divided the features (such as machine learning, authentication, and frontend) amongst ourselves. This is also the first time developing an iOS application in React-Native, and we think the UI came out pretty good!
What we learned
We learned how to handle critical data with utmost safety and authentication, and the importance of protecting and securing our databases. We also learned how to work with a large amount of data and work with multiple relational tables. Furthermore, we had to handle a huge number of API requests to our backend server and learned how to schedule and streamline them so there was no conflict. We are also glad we developed an iOS application, as we all learned a new framework and are now looking forward to developing more using it!
What's next for FinFolio
Get out of the sandbox, and into developer mode!
Log in or sign up for Devpost to join the conversation.