Historically, it’s been hard to innovate in the financial sector because banks and financial service companies accumulated decades' worth of data and functionality that FinTech companies had no access to. This is now changing: The market is opening up to companies and technologists who can use this data to build new tools and drive new business ventures which could translate into economic growth.
In his talk, Wayne Summers explains how Investec hopes to unlock more opportunities within the SA tech ecosystem through opening up APIs and investing in programmable banking.
Presentation transcript
Wayne Summers:
[00:09] Welcome. Okay, no heckling. My name's Wayne Summers, I am the Head of Digital IT, at Investec so I'm going to give away my age now, but I'm a self-taught developer. I started coding in the mid-eighties. Now, I don't know, if any of you, coded in those days. You basically had access to two computers, a ZX Spectrum and a Commodore 64. Yeah, I can see some people in the audience here know what I'm talking about. That's good. Otherwise, I'd be the only one. And the problem with those things is you never had a hard drive. So whenever you started writing code, like when you're done and you turn the computer off, all your work was lost. See, you can relate again. And the way you taught yourself in those days, there was no Google or MSN or anything, you used books like this. And you can see this is a book and it's got a hundred games inside of it, but the games are actually all the texts of the game.
[01:02] So what used to do is open it up, type basically word for word, the entire game into the Commodore 64 or the ZX Spectrum, play it, and then pretend really hard that those two square shooting pixels at each other were real tanks, okay. That lasted about five minutes then you got bored, and then you'd stop and recode the whole thing in again. So, that was annoying. So we figured out after a while, and I'll teach you a life hack. If you take an old cassette I don't know but I presume you know old cassettes and there's a small square on top, and if you put sellotape on that little square on top, you can actually make a cassette tape writeable so you can record over it. So what you used to do then is, code these games, put it into the cassette. [inaudible 00:01:44] with some tape and then now you could actually save your work. Okay. That sounds like I'm from the dinosaur age, but that's fine.
[01:55] I think in the mid-nineties I got to work as a developer. I worked on a mainframe in a language called Ideal Datacom and none of you probably ever heard about this and that's fine. It's died, I think. That went on to me using Cobalt and then I got access to web technologies and my whole career I've been basically in web and internet technologies. For most of my career I've been a developer at a bank now working as a developer, not at a bank, in financial services, corporate type of vibe. It's an interesting concept because you generally, if you’re in a startup, everybody's techies and they sort of can relate to you. When you work in a corporate, that's a very different story.
[02:35] I think a lot of people think we're like, use our nerdy wands and we wave it and code pops up. That's sort of the idea of how people think developers work and that comes with a challenge because when you're trying to put across new ideas or innovations, it's very hard to explain to people the value in those things, but I think it's up to us to try and articulate to people the value we can deliver with technology. In a corporate, it's a very hard challenge, when you start up probably less - to an extent. So I'm very excited about the possibilities we can use technology for, as opportunity in the financial service space to actually deliver value.
[03:13] So then you’re probably asking yourselves what is some weird developer from Investec doing on the stage talking at a MERGE conference? Because generally banks aren’t at the forefront of innovation and the reality is at Investec, we believe that the biggest way to impact the economy is to actually invest in the technology sector. We heard earlier today that there's low barriers to entry so anybody can become a dev and technology is like a force multiplier, which means the economic value you can generate with your code is much more than the value they're paying you. Doesn't mean you have to ask your boss for more money, but you get what I mean: one dev can generate a lot of economic value and with low barriers to entry, it's sort of a no brainer. Those two points for me, just sum this up. So this looks like one of those things you print out in black and stick it on your wall.
[04:02] And now you've done your contribution to society, but not really. So when we looked at this statement, we said, what does growing the SA technology sector actually mean? Like practically, you know you can stick this on there and waffle around stuff. And when we looked around a lot of the money, there's a lot of money going into the technology sector in South Africa, but a lot of it was focused very much around fintechs or startups so it didn't feel like they were focusing on the actual route of the matter, which is the individual developer. Like it was all very financial based to an extent. And for me growing the technology sector is actually not about that. It's actually about the individual. It's about the jockey and it's about getting more dev's to write more software, that's the fundamental of it. It's not about all the other fancy stuff in the environment.
[04:51] So that left me with a question, how do we actually go about doing this? Because its felt very broad. So we went on a bit of a learning exercise. So we spoke to anybody in the tech ecosystem that wanted to give us the time of day. So, we spoke to some startups, we spoke to professor Barry at Wits, we spoke to code dojo's, code retreats - like anybody that wanted to talk to us. We had some focus group with some devs externally, we asked our own dev's, since we're a tech team or like how do we go about doing it? We've collected all of that information and we drew out this beautiful slide. Just to quickly run through this thing.
[05:30] It basically... from the left to right here: we believe that this requires a cradle to grave strategy. It wasn't just about making sure that you enabled somebody who wants to have a job, it's about how do we get them from an early childhood to getting access to computer, taking them through the education system to learn how to code and once they get a job, how do you make them successful at their job? So this was a cradle to grave strategy, not just about an individual part of your life.
[06:04] So we broke it down to those few sections and we tried to plug in everything we learnt on the right you'll see this orange bit we thought initially, this was our hypothesis; that developers would want access to financial services, maybe we can plug in - as Investec - our part in there. And then we found out about this company at the bottom called OfferZen and they, they were well-connected into the tech community because of what they do. They had access to a lot of dev's so we said they’re probably a really good bunch of people to go ask: how do we generate value for the tech community?
[06:35] First we sent them an email to say, can we chat to you? They blatantly ignored us - us being a bank. They said like, sorry, not interested. And then we wore them down I think over time and after a while they like said, cool, come to Cape Town, we'll have a chat with you. So I took in, took that big A4 piece of paper there, walked in and said, I want to do this, can you help us? So we sat, you can see us here in Cape Town having a nice chat. Sat in their poufs as well there. This was a more civilised one.
[07:08] So we sat there and said like how do we go about doing this? And we had our assumptions, we said, should we invest in education? Is that the biggest lever we can pull to get devs to become better at their jobs? Or do we go and like get cheap hardware? We had like a couple of hypotheses based on all the learnings we've done up to now. It emerged at the end that basically the biggest thing we can do as a bank is actually give people access to their banking. Because, like, banking is hard like writing code. It's hard, but it's not as hard as being a bank. So can we take the hard parts away and actually enable dev's to use that infrastructure to do cool stuff. And you heard earlier, there's a lot of opportunities we believe can be unlocked by giving you access to your banking.
[07:53] So based on that we said let's do a little experiment. So the quickest and most practical thing we can think of is just to say, can we plug programming into a card? Because it's used every day, everybody's used to swiping your card; it's a nice easy thing to actually do. And now I'm going to explain to you how card systems work, for all the technical people, you've learned something today. So there's a point of sale and it basically sends the transaction to Investec we process it and send the transaction back.
[08:26] Okay so just humor me. I know this is really basic. So as you saw in that other picture, we actually had Louw from a Root there and we had Malan and they were all involved and they helped us put this together. So we said, can we actually say when you swipe at the point of sale, it sends us to our card system and before it does anything we want to plug into these two hooks. One before transaction, before the money goes out of the account, and one after it goes out of your account and then we want to run an AWS Lambda expression.
[08:58] We were invited back again and for two days we sort of tried to build all of this stuff out - just to make sure that we can prove how it works. Just to show you what this is, this is an editor in Investec online, so if you'd think of private banking or online banking or whatever you do, you log in there and see all your money. There's a thing that says go to this editor. On the left-hand side is a simulator so this is basically going to simulate your transaction coming from the point of sale, so you don't have to swipe your card you can just hit that ‘Run in Sandbox’ button and it will simulate the transaction from a point of sale. On the right-hand side you should be familiar with this. This is like a code editor, here you write all your code - just to position when we go forward.
[09:41] So we said let's create a little simple use case. So like the most obvious thing is what I want to do. I want to go set up a Google sheet and every time I swipe my card I want the transaction to update my Google sheet. What that will let me do is sort of get a feel for if I'd set up a budget, how much money is coming in. What I next want to do is actually tell myself every time I swipe, how much money I've left against my budget, so that I know: am I swiping too much money or not? And then the freaky part was trying to actually start controlling the behavior of my card based on the values of the Google sheet so: can I start controlling my card?
[10:21] Okay, so step one, this is going to go into a bit nerdy stuff. I'm going to show you a code. So just humor me. So we said we're going to focus first on this after transaction. Just to explain this. Once you've swiped your card, the money goes out of the account. This is like almost a callback to that thing to say you can add your stuff with the results of that card swipe. So we've logged into Google sheets, and this is the Google sheet. So I'll quickly take you through this. So basically this is a weekly budget. You see the planned spend is R2500, I don't know why I'm using my finger.
[10:59] And then you can see I'm breaking down my spend into three categories; food, transport, and every other thing I do. And against that food, I'm going to say I can spend R1500 a week. That's the only one we're going to demo. Just ignore the rest just to give you an idea. And then this bar here shows you how much money I have left against my budget. Okay? So next steps. We wrote some code and here you can see that after the transaction, the transaction object coming in there is the result from the card swipe. After you've done it, it connects to Google sheets over here and here we've posted the Google sheet. So you'll see the money on the left there. We're going to put the R500 transaction from a Spar in Cape Town, and we're going to hit that button... and magic.
[11:50] Suddenly when I swipe my card, the data's going into a Google sheet and you can see that blue bar there, actually showing the value. Okay? And just to show you the sheet now you can see my budget over here has updated. I've spent R500. So I still have a R1000 left, simple! So we've now managed to, from swiping a card, post something into a cloud provider. In this case, Google sheets. Okay. So next thing I want to do is notify myself against that spend category. So once again, we're going to plug into this, after transaction here. We're going to log it to that budget.
[12:29] Now what I'll do is actually read that spreadsheet, read the Google sheet back information so I can start doing some calculation in that after transaction method. And then what I want to do is: I want to post to Slack, so every time I swipe my card, I'm going to get a Slack message saying you have X amount of money available to spend still. Once again, looking at the code, let me just focus on the right-hand side here, you see the ‘get remaining budget’. So we're actually calling out to Google sheets, mapping it to an object. We built this integration into Slack - just a simple little JavaScript - and at the bottom here, you can see we're sending the message, ‘You have X amount of money left’. Okay.
[13:06] Once again we click it, you'll see my budget's gone down and at the top right corner there, you'll see there's a little thing that says you have R400 left. That's telling us that we now have stuff. So what typically would take a bank a very long time to build, we've now like almost built in two days. Just by using this very simple logic and giving people access to their account. But now the magic part comes like, can I actually start controlling my card behaviour? To do that, we actually have to then look at this before transaction. Now the before transaction happens, just to position it, before the money goes off your account. So this is where you get a chance to block stuff or do something before the money goes off.
[13:48] Just while we're on this topic from a security point of view, the first question somebody asked me is, ‘Can I use this stuff to make the card swipe go through without paying for it?’ Because that's the obvious. It's like you just go yes, accept everything and you just swipe your card. That's not actually how it works. These functions go out before it goes through the normal card transaction processing. It runs in an AWS Lambda expression and the only results that get returned back to the card system is a boolean. It's like true or false, do I proceed or don’t I proceed so you can’t really manipulate anything that is out of the ordinary from your card processing flow. This is just something else you can do on the side. It's in a Lambda expression, out of our building. Out of Investec's infrastructures, you can't really do dodgy stuff with it.
[14:32] Okay, so just to continue with this, we are going to read that budget into that before transaction and then if I don't have enough, if the Spar card swipe coming in is bigger than the budget we have available, we're going to decline it. So now I can actually start controlling it. Okay. So you see there on the left-hand side, I’ve got R400 available and over here, we hit that simulator again. Well before we hit the simulator, we can see that before transaction method coming in there. It takes this authorisation object, which is basically the thing coming from the point of sale. So it's coming all the way through our systems hitting this method. And now based on that object, you can actually start doing some logic. So you'll see, as I mentioned, this boolean condition happening here, it's basically just saying, do I have enough money left to accept this card swipe? And based on that it's returning a true or a false.
[15:26] So we hit the simulator and at the bottom of this editor thing on the left or the simulator, you'll see, there's a console log that tells you what the results will be going back to the point of sale. And there in red, you see, we've actually just now declined it. So when you swipe your card, the card will go, sorry, it's been declined. Okay. Magic! Now, the freaky thing here is from now on, I actually don't have to actually code anymore because what I can do now is say I want to set up this budget and I can control the behavior of my card by changing the values in the Google sheet, which is quite magical because now I can say I don't need to do anything.
[16:04] I can put up my budget every month, allocate myself stuff and never code and just go and control what the card can be used for. So that's very useful. If you think of this in a more business context, maybe you issue some cards to your driver or your cleaner, you can now go and say each card, how do I set up that budget and make sure that the things are being spent on just what you want to and you can start dynamically changing the behavior of it.
[16:29] This is just an example. We made that R2500 around that same ‘Run in Sandbox’ button and this time the result is coming back as true. So we've now, we've just managed to alter the behavior of a card based on changes in a Google doc or a Google sheet. So, that was quite black magic-y I've waved my magic wand and I just made a Google sheet start manipulating Investec card infrastructure through allowing access for developers to some parts of this transaction flow.
[17:04] Because it's in an AWS Lambda expression, you're not in the firewall so nothing's blocking you so you can use any of these other things to try and think about creative ways of using your own data to do stuff with. This is for me the big opportunities, like we are building something that we don't know the potential of and I think it's up to the community to start showing where the potential is in this thing. Our role as the bank is to say, here's all the technology and I think the community's role is to make value from that. S,o as I mentioned, this is still in a very early beta phase and what we want to do is not go away into a cave and build it and then come out and say, “Hey, look at our cool technology!”
[17:45] We want to say we're building this for the community. So what we want to do is build with the community. And I think that's the important part. If you bring it back to why I was waffling on about that, helping the tech ecosystem is the biggest impact to the economy, I believe this is the levers we can pull to start actually generating economic wealth as a tech community. Because giving you access to your own services and products, you can start getting really creative how you want to use that stuff and building businesses or just building systems. So, if you want to be part of this, we're starting a little community. OfferZen is helping us set that up. And at the bottom you'll see the link offerZen.com/community/investec. Go there, enroll in the beta program and help us build out what this thing could be one day. Thank you!
NOTE: The questions for this presentation were not transcribed, they start at 18:40.