The Iterated CSV Uploader Tool

Elliot Koss
5 min readJan 11, 2021

**I’m launching a newsletter in 2022 called Personal Finance in the Blockchain Age. It would make my day if you sign up.**

It’s been 10 days since PluFin launched, and while I’ve squashed some bugs and made a few improvements, this is the first new feature / iteration. Admittedly, it’s been a tough week to juggle a full-time job, new puppy, and side hustle (ie PluFin), but I’m happy with making some progress. Slow progress is progress.

From Friday, Jan 1 through the first weekend, about 20 people signed up. One person paid, a friend who sent me some helpful feedback. I fixed a couple of the easy bugs, but there are a few bigger ones that will take more time.

The first Intercom message came from someone who had an issue with the CSV Upload tool. It really isn’t the most crucial feature for PluFin long-term, but it serves two incredibly important functions. First, some users will be skeptical about inputting their bank credentials into PluFin — despite the security precautions I’ve taken and the lack of the credentials being stored in PluFin, people have doubts especially considering the large companies that have been hacked. Uploading a CSV file provides a lower-risk way for a user to add their data and see how at least some of the features within PluFin work.

In addition to security concerns over bank credentials, the fact remains that Plaid doesn’t offer integrations for every bank. And if you’re not in the US, then there’s an even lower chance that your bank is supported.

That’s the problem the first Intercom message highlighted. The user was trying to upload a European bank file.

I knew that the CSV Upload tool was going to be limited at launch. I had hard coded two bank CSV documents that I personally use. Two. Plaid offers 11K connections and that 11K banks is still NOT enough (I’m already considering other options such as Yodlee, but that’s a long ways away). My original plan was to add individual bank CSV structures for a little and then build a more scalable solution. But as soon as I looked into trying to continue hard coding, I realized how futile and time-consuming that would be.

So I went ahead and prioritized building the scalable solution. It took a decent amount of the weekend to do it, and I was only able to start after I spent part of the week cleaning up some things including updates to adding the Privacy Policy to various locations so that Google would grant PluFin authorization to use Google Sign Up (I have to refactor some code before that goes live, hopefully another week).

The CSV Upload tool was the very first thing I built for PluFin back at the end of June / early July when I was calling this the Personal Finance App instead of an actual name. The code had not been refactored / cleaned up, and I knew there was going to be some work making this all come together as it should. So I threw on Game of Thrones (I like having a movie or TV show I’ve seen at least once on in the background while I work — I’ve been doing this since high school), made some flowcharts, wireframes, and checklists with my iPad / Apple Pencil, researched a new table layout with the design framework I’m using, and eventually coded away for about 12 solid hours (in two sessions — one on Sat and another on Sun) with the release to production on Sunday afternoon. All while my puppy yapped at me to play, which was a good distraction. (Yes, there are some iterations I need to make to how I work, but considering that I’m basically working non-stop, it does keep me moving forward.)

And after all of that, I built the new CSV Upload tool.

Now, when you upload a CSV file, all you do is upload the file. You don’t select the bank. You don’t select a bank nickname. You don’t select the type of account (Credit Card, etc). You just upload the doc. It’s so much simpler.

The PluFin CSV Upload page only requires a CSV file now and no other data.

The uploaded file is then passed to a new CSV Mapping page that shows the data from the CSV file in clean files. It doesn’t try to identify what the columns mean (maybe later). For now, that’s up to the user. The page includes some instructions for how to make it work and there’s an error message if you don’t select the correct columns plus another error if you don’t skip the non-transaction fields (ie include the header rows from the CSV).

The PluFin CSV Mapping page that allows users to map basically any CSV file.

I added a currency field, but I only added USD and Other as an option. I’ll have to figure out multi-currency at some point, but not today.

Once this data is accepted, you’re taken to the Vendor Match page. I cleaned this page up so that the already identified vendors are hidden by default, but you can show (and subsequently hide again) with a one-click toggle. I also removed two unnecessary rows so that the data lays out much cleaner.

The PluFin Vendor Match experience after successfully uploading the CSV file.

I’m sure that there’s still something that will cause errors for someone, but that will only be identified when more bank CSV files are uploaded. For instance, there’s a limit of 10 columns at the moment, but that was arbitrary, so I can add more. I could probably figure out how to make it dynamic since the way the data hands off behind the scenes can handle different scenarios, but it’s at least 2 or 3 story points and there’s a lot to do, so I’ll only prioritize this when needed.

My hope is that the CSV Upload tool won’t require a lot more work this year to meet the bare minimum of usefulness for all users. We’ll see how that goes.

I’m going to reach out to that customer who first alerted me to their problem in the next 24 hours to ask him to retry it and to give feedback. If his European bank can be satisfied with it, then I’ll feel much better.

One more thing I noticed is that the Sample CSV file is old. It only has data through June 30, 2020 (that’s how old this feature is). I’ve already thought about a way to make sure that the data is generally current through the end of 2021, but it’s not truly scalable, so I will need a better solution at some point. But for now, if you use the Sample CSV, it won’t show much in the Insights Dashboard because that dashboard is showing only the last 30 days. I’ll fix it at some point, but I’m just not there.

Well, it’s about 10pm and my Indian food is about to arrive, so this will be my stopping point. But if you’re interested in hearing future updates, please follow me on Medium or Twitter.

--

--