Skip to content

Latest commit

 

History

History
52 lines (39 loc) · 2.52 KB

README.md

File metadata and controls

52 lines (39 loc) · 2.52 KB

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