Code Monkey home page Code Monkey logo

personal-finance-analyzer's Introduction

Accounting

About

A data pipeline that extracts transactions, categorizes them using an LLM, and loads them in transactions_history.csv for analysis.

An example of recategorized Capital One transactions.

Problem

  1. As someone who uses checking accounts and credit cards from different countries, I can't easily get an overview of all my spending for any month / year in a single report. Personal finance apps (like Mint) don't let you connect foreign bank accounts.
  2. Banks and credit cards don't categorize transactions the way I like.
  3. Cash transactions go unaccounted for with apps provided by banks.

Developing a Solution

For the longest time, I used mental math to add transactions from my accounts and tracked the numbers on Notion. With that process:

  • I made mistakes from time-to-time.
  • I could never easily create visuals to better understand my spending habits.
  • I couldn't easily compare spending year to year.

Since I aimed to get this project up-and-running asap, wanted to keep financial data safe, and didnt want to invest time into building a UI, this app:

  • Stores categorized businesses in categorized_businesses.csv, leverages OpenAI to categorize new businesses, and falls back on user input when unsure.
  • Stores all past transactions in an iCloud folder so that it's all backed up.
  • Uses a Notion Integration so that my wife and I can continue tracking cash transactions on Notion.
  • Analyzes transaction history in the Jupyter Notebook analysis.ipynb.
  • Validates data schemas with pandera

Support

  • Capital One transactions
  • Cash transaction tracked in a Notion database

Setup

  1. Create a virtual environment: python -m venv accoutningenv
  2. (VSCode) Install ipykernal: pip install ipykernel
  3. Create a Jupyter Kernal: python -m ipykernel install --user --name=accoutningenv

How to run

  1. Install dependencies: pip install -r requirements.txt
  2. Place downloaded transactions in data/temp/
  3. Run python -m accounting.run_pipelines

Extra commands

  • Display installed packages: pip list
  • Capture current dependencies: pip freeze > requirements.txt

To-dos

  1. Add support for inputting cash transactions on Notion
  2. Create unit tests to ensure program works as expected
  3. Add support for Citi Card
  4. Add support for cash transactions

personal-finance-analyzer's People

Contributors

lcarvajal avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.