An open API service indexing awesome lists of open source software.

https://github.com/guysnacho/unclesam

Taxes is annoying and I don't wanna pay anybody for it... so I'm doing it myself.
https://github.com/guysnacho/unclesam

csv-parser financial-analysis golang tax

Last synced: about 2 months ago
JSON representation

Taxes is annoying and I don't wanna pay anybody for it... so I'm doing it myself.

Awesome Lists containing this project

README

          

# Uncle Sam | Tax Services

So its tax season and one of the beautiful perks of getting business official is paying it up to Uncle Sam. I just wish that was me.

## Inspiration

Its a lot of work to sift through Excel Spreadsheets and I don't feel like learning macros.

Its painful. I'm fine. INSTEAD, I decided to use it as an excuse to learn some more Go. Found the [go csv package](https://pkg.go.dev/encoding/csv@go1.24.0) was baked into the standard lib (like most things), downloaded my transactions across a couple of cards and accounts, and got to work.

## Usage

### Prerequisites

To use this tool, you'll need

- [Go installed](https://go.dev/)
- CSVs of your transactions
- CSVs need a header row (top row with a label for each column)
- Most banks with an online banking feature should have a way to export your transactions, ideally it has a `description` and `amount` header but you can rename that in the CSV or modify the app to look for differently named columns

### Executing

#### Using Go

Add copy/move your downloaded CSVs into the root of the project and run the following

```bash
#!/bin/bash
go run
```

#### Using release

You can find built versions of the tool if you don't feel like installing Go [here](https://github.com/Guysnacho/unclesam/releases)

## Gameplan

### Collect files

I exported my transactions to CSVs and dropped them in the root of the project. If you fork...obviously don't commit your financial transactions.

### Find out which columns we need

Thankfully my bank provides standardized CSVs but I made it dynamic bc why not.
Added a function to parse the header and return which columns contain the transaction's `description` and `amount`.

### Filter out transactions I need

Unfortunately DoorDash effectively owns my transactions so I need to filter down to just transactions I need.

Something'll probably slip through the cracks but luckily I know must of them.

### Compile results

Just a string conversion to float and adding. If I wanted to do some calculations or find some aggregations then I could add that but thankfully I just need income and expenses.

Not a bad idea though, we'll do that later because I never wanna touch this again and don't feel like signing up to QuickBooks.

### Sip some tea and touch some grass

I already feel like I spent too much time on this but I've got 12 days to get this filed and whip up a K-1 form soooo I continue to cook.

## Changelog

So I'm writing this from the point where I've got file reading kinda working.

### Filtering is working

Got filtering working

![alt text](evidence1.png "Got filtering working")

Got expenses generated. Looking good

![alt text](evidence2.png "Got expenses generated")