OfferZen’s recent hackathon featuring teams from the Programmable Banking Community turned up some exciting projects built using programmable banking tech. Here, Anri Goosen, Pieter Goosen and Johan du Plessis share their solution Snitch, which solves the headache of updating credit card information on multiple subscription platforms.
- Dive into the Open Source Code
- View Google Slides
- Watch Snitch's Submission Demo Video
- Use Snitch’s App
The solution runs an apps script to create reminders on Google calendar when an Investec Programmable credit card expires. An AppSheet solution is linked to the Google sheet to provide a nice user interface that can be used on a mobile device.
In the app itself, the subscriptions list shows all the places credit card info needs to be updated, saving the user time! The automated reminders will help the users avoid any possible late fees or penalties due to failed credit card transactions charged to an expired card. The generated list can also be used for other analyses.
Transcript of the demo
The problem
Anri Goosen (00:03)
Awesome, thanks. Okay, […] the problem we try to address is when your credit card expires, you have a mountain of places that you need to go to update your credit card information. You might have a bunch of subscriptions like Bugsnag, or GitHub, or, and even online merchants, such as Takealot, or even UberEats. And trying to remember where you have your credit card information stored can be quite a big problem. Also, it's quite a hassle to then go and upgrade your credit card information.
The solution
Our solution is basically just a little system to track where your credit card is used, which then […] generates a list for you of possible subscriptions. And then […] it generates a Google calendar reminder for you as well, whenever your credit card is expiring, so that you know where you need to go update your credit card, and when you need to update your credit card information. The benefit of the solution is it's saving you time because you have a list of all the subscriptions or merchants where you need to go update your information. And it also helps by preventing you from missing any payments or paying fees and penalties and stuff like that.
How they did it
How we did it. We used all things Google in this solution. Firstly, Pieter created a Flask web app for us, where users can sign up. And that contains all the information you need to set up your own Little Snitch solution. All the information is stored on your own Google spreadsheet, so we don't store any of your transaction info at all. And, if at any time you don't want to use the system anymore, you are welcome to just revoke the access on your Google spreadsheet. And that's it.
So, what we did is we created a Firestore, which just has a User collection. That's just to keep track of when your transactions come in; it links to your User and to your spreadsheet and sends it to you. Then we have a bunch of cloud functions, which just process the merchant information and your credit card information. It just keeps track of your credit card ID and its display name. And then it processes all that information and stores it in Google Spreadsheet, which I'll show you guys in a minute. And then on top of that we have Apps Script, which generates your Google calendar reminders for you. And then we created an AppSheet on top of that, because looking at a spreadsheet can be quite ugly. And AppSheet is quite nice to look at. Cool.
So, when you go [to] our little website, which is part of our repo, you can see there's a link to our Flask app. You sign up for a year. And then this has all the information you need. So, it has all the instructions you need to set up your own Google Spreadsheet, sorry, with all the information you need. And then it has the code generated for you that you need to put on your Investec programmable banking card. And then lastly, it has everything you need to set up your own Google Apps Script to generate those Google calendar reminders for you. And that is all you're going to be doing on our Flask app. Once you're there. It's done. That's the end of it. So now I want to look at this spreadsheet. And I might need to zoom in here because I think my screen is huge. [Laughter]
Anri (03:40)
Cool. So, in the spreadsheet, we have three spreadsheets: you've got Subscriptions, Not Subscriptions and a credit card list. In Subscriptions, you'll see there's like a list of a bunch of subscriptions that are already coming through on our credit card. And there's also Not Subscriptions; this is any merchants that haven't been filtered out, that might or might not be a place where you stored your info, your credit card information. And then you can manage this as you need to. And then it also has a list of all credit cards. So, you can have multiple credit cards linked to you if you need to manage a bunch of credit cards.
To show you guys how this actually works, I'm just actually going to trigger a transaction just straight into the back end, for Steam, which will come up as a subscription. And it's for a brand-new credit card too. It's not in this list yet. And there we see it just popped up. So, it's a Steam game. It's an unknown category from Hamburg, Germany, and the last transaction […] and then we also see that I now have a new credit card. So, here I can set the credit card expiry date, which I’m going to set for next month. And our App Script actually runs every month. But for this demo, I'm just going to trigger it to run right now, so I can show you guys.
I don't have at the moment any notifications for expiring credit cards. But after that has run, you'll see on the first of August, I now have the reminders set to remind me to update my credit card information. And it also has a list of all the subscriptions where this credit card has been used. And this is all nice, but I mean looking at spreadsheets is not great. So, we created a little AppSheet as well, thanks to Johan du Plessis for this; this is just a pretty way of seeing all your transactions again.
So, this is all your merchant information. You can click on one of them. And it'll show you all the information related to that merchant or the other non-subscription transactions. But you can also edit these and then actually change them to subscriptions if they are or not, stuff like that. You can also see a list of all your credit cards. We can see that test zero has expired already. Test two is nearing the expiry date; that's why it's yellow. And the other one is far into the future; so, it's not a problem. And if we click on one of the cards, it also gives us a list of all the merchants linked to that card.
And then Dup went on a playing spree last month last night and added a map showing us where all our transactions are, from across the globe. So, thanks to Dup for that. Yeah, all our entire project details are available on our Github repo. It also has info there if you want to set up your entire stage on GCP for yourself. Thanks.
Questions from the community
Nick Benson (06:55)
Very cool. I like that whole transaction part. [It] was actually very cool. Any questions from the community? Anything that you were wanting to know? Otherwise, is there anything that you guys would like to ask the community?
Anri (07:20)
Basically, just a call to action. Our categorisation is pretty dumb at the moment. If anyone feels like they can help us improve the way we are categorising it, maybe help us out with writing a classifier? That would be awesome. It's an open-source project; anyone can just go create a PR. That'd be awesome.
Aretha Cooper (07:46)
All right. My question was going to be – okay, you’ve just mentioned one area, the classifier for the categorisation – but what do you guys want to do next with this?
Anri (07:56)
The big thing for us would probably be the classifier. And I think Dup also mentioned that this app isn't really scalable, unless we create like an AppSheet template, which you need to pay for. But it would be nice to create a mobile version that could be rolled out to people at large. So, at the moment, if you want to create the AppSheet, like we did, it's a bit more involved than we would like. Dup, Pieter, you guys got any comments on that?
Johan du Plessis (08:36)
From my side, I think one thing that could be a nice next step is if we could get a largish database of transactions, because even in AppSheet, there is some new functionality that allows you to do a predictive model. I'd actually like to see if we could leverage off that to do the suggestions in terms of what is a subscription or not. I think that's sort of the same thing that Anri said, but I think we can still do quite a lot to improve the solution.
Get involved in the Programmable Banking Community
If you have questions or just want to say hi to the Programmable Banking Community core team, you can pop us a mail and we will get back to you.
If you want to see more from what the community has been up to, you can: