Inspiration

In the past two years of university, we haven't been able to have jobs due to our packed schedule with classes, labs, deadlines, extracurriculars, etc. Due to this, budgeting and saving money throughout the school year was crucial, but we found ourselves always outspending our budget, not knowing where money went. This AI tool will help us actively track spending while making changes and optimizing budget from day to day.

What it does

The software uses Plaid as an intermediary to access the user's bank statements. The user will first sign in to their bank using their debit card number and their password through a Plaid-based portal which is secure and allows users to be confident their confidential information is not being leaked. This secure sign-in through the Plaid API grants access token to the software and the software then stores the data in objects in the backend. The implemented Gemini AI model is then prompted to analyze the transaction data from the bank statements and give suggestions on spending optimization.

How we built it

We got our spending data from Plaid API's sandbox, which gave us mock data to use in testing. The data had alot of null and irrelevant values so in order to get a more coherent response from Gemini, required cleaning. We created several functions that travelled recursively across the JSON structure removing all instances of null or none values. We then pass it into another function which then extracts the desired values from the data. Now that the data is cleaned it is fed into Gemini with a prompt telling it to optimize the users spending and provide insight. We displayed the output from Gemini in the frontend using streamlit. We utilized css and html via st.markdown(""" """) to have a more dynamic and clean looking UI.

Challenges we ran into

During this project, we ran into a lot of problems with the implementation of the AI model and the Plaid API due to our lack of familiarization. We did not know what Plaid was and how it worked so determining how to access testing data developed by Plaid through the Sandbox environment took us a long time and posed as one of our bigger challenges. Furthermore, learning about how the Plaid API turns a public token into an access token for our software to access the data was a long and learning-intense process. As for the AI model implementation, we ran into challenges with keeping the API key for the model secure and in a private environment. Since our Github repository is public and the API was openly written into our code, the API key kept getting leaked. Overall, these challenges are what helped us learn as we had to spend significant time researching solutions and methods to solve these problems.

Accomplishments that we're proud of

Since this was our first hackathon, we did not know what to expect in terms of bringing our ideas to fruition and the technical implications of doing so. Although we had some previous experience using tools such as VScode and python, we wanted to push ourselves and learn which is why we tackled a project using the implementation of AI. We are proud that we were able to execute our idea using AI models and APIs that we had no prior experience with.

What we learned

We went into this hackathon with minimal experience in coding and software development and even less experience in the use and implementation of AI models and complex APIs in software development. Even with this lack of knowledge and experience, we were eager to learn and through this experience, we were able to develop our understanding and bring our idea to life.

What's next for FinScout

In the future, we would like to host the software on a website or an app as it can only be hosted locally for now. Hosting it on a website or an app would allow users to access it easily on the internet or on their phone. Furthermore, we would like to begin testing of the software using Plaid documentation as we would like to see how the software reacts to more realistic data. So far, only Plaid Sandbox has been used for initial testing of the software and to sort out any bugs.

Built With

Share this project:

Updates