The Monzo Weekly Diary 2.0

(Samuel Michael) #41

Thank you Tapas!

Hey people! sorry, it has been a while :wave:

Amongst other things, this week i’ll be working on the new debit card carrier letters you receive when opening or migrating to a Monzo current account. Here’s a little breakdown on how I’ll approach the task.

First things first, I like to list out the various use cases. These are basically the different situations people receiving cards will be in.

1. People that have a Monzo pre-paid card and want to migrate to a Current Account
2. Fresh users signing up for a Current Account
3. Replacement cards

With these listed I can start mapping out the path for each, starting with the current state of the App. i.e What can the user see when they open the App? I know @zancler is currently working on a prepaid–current account migration flow which could influence the design of these letters, so I will be tapping his shoulders later to see what’s what :soon:

Then the fun bit begins. I start coming up with ideas and rough concepts on how these letters might work and involve @tristan to help think about copy and experiment with different formats, layouts, shapes and sizes until I find a solution that works best.

So then hopefully we can make these a little more delightful than the Alpha and Beta version you may have already received. :crossed_fingers:

I will share some sneaky peaks soon! :soon:. Please bug me if I don’t (I really need to up my forum game!)

I pick @daniel for the next update when he has time! :raised_hands:

(Ben Taylor) #42

Hi Anthony

I only joined very recent and am Impressed with The Monzo App and service. I work at Deutsche Post DHL and look after London for Account Management and Development. I deal with banks and investment companies for distribution and solutions such as Expedited and Post for International deliveries and U.K. I also deal with EPost and Post Ident for Germany. I am not sure if my knowledge would help but happy to provide some ideas. No problem if not I am a customer really just enjoying the Monzo app and service. Good luck with the role.

(Marta) #43

Everyone is invited to throw their 5 cents here. Welcome and enjoy your stay! :smiley: :mondo:

(Adam Hockley) #44

@Sam Sneeky peaks as promised :blush:

(Adam Hockley) #45

@daniel u forget to post

(Daniel Chatfield) #46

Firstly, sorry for the delay in writing this and thank you @naji for reminding me. I’m an engineer in our Financial Crime and Security team.

Payments on the prepaid card are processed by an external card processor. Over a year ago we started the project of creating our own Mastercard processor. This will give us the freedom to do many things that are either more difficult or not possible with the third party processor. These are some of the things I’m looking forward to experimenting with (disclaimer: there is no timeline for these):

  • Different card numbers on different interfaces on the card, e.g. a different card number on contactless and embossed on the front. This helps protect from fraud as details stolen from the contactless interface would be useless to a criminal.
  • The ability to create virtual cards from within the app and use them online.
  • Push notification > Click to approve 3D Secure flow
  • “end to end” encryption of PINs (see below)

As a bank we look after a lot of sensitive data, including PANs (card numbers) and PINs and I’d like to share some information about how we will protect these.

We run hundreds of services in a microservices architecture but only a very small number of services will have access to raw PANs and PINs. This reduces the attack surface and makes it easy to focus efforts into layering lots of additional security measures around those services.

We are able to restrict the number of services that have access to raw PANs and PINs to a very small number because we tokenise all sensitive values. Essentially that means we replace the sensitive value for a “token” that can be passed around dozens of other services but can only be converted back into the raw value by one of the “maximum security” services.

Suppose a user enters their PIN into the app to authorise changing their phone number. The PIN is then sent over an encrypted connection to the internal API where it is forwarded to the phone number service which retrieves the PIN token from the PIN service and gets the tokenisation service to verify that they are the same.

This is perfectly secure, however as part of defence in depth it is prudent to layer an additional security measure that means that the phone service and internal API don’t have access to raw PINs.

The way we plan to do this is by giving the tokenisation service a public / private keypair and then the app will encrypt the PIN such that the internal API and phone service never see the raw PIN and the encrypted data can only be decrypted by the tokenisation service.

Next up I nominate Fred Jónsson

MasterCard SecureCode / 3D Secure
Online Virtual Cards
How easily can the big banks replicate the Monzo experience
Competitor Update 2
Competitor Update 2
The Next Step: Current Accounts!
Online Virtual Cards
Switching from the Preview's Debit Cards to the Final Generation of the Card
Competitor Update 2
Starling Discussion & Feedback
Card Security
Virtual / Disposable Cards
(Jolin) #47

Great stuff, and really exciting, thanks for sharing! One question I have, is what aspects of a transaction the ‘MasterCard processor’ is responsible for. Is this the ‘Card Network’ in the [3 Second Sandwich] ( I can’t quite get my head around what the MC Processor controls. Thanks!

(Daniel Chatfield) #48

This diagram is very simplified but gives the rough idea.

The Card Network is Mastercard. The card processor is what connects to Mastercard (multiple physical cable connections) and processes the messages from Mastercard. Messages are EBCDIC encoded ISO8583 messages (we actually contributed EBCDIC code pages to the Go encoding libraries such that we could parse these in Go). The card processor is responsible for the processing of these messages.

Competitor Update 2
(Jolin) #49

Thanks for the further detail, @daniel. I find it very interesting. So, presumably, until now the message parsing, card resolution, and verification has been handled by the third-party processor, whilst :monzo: does the balance, etc. I can see how this would slow/prevent/complicate any innovation around multiple card numbers, virtual cards, etc. Thanks again for such detail; really interesting to understand how many parts there are, and how they fit together. :slight_smile:

(Dawid) #50

Virtual cards for online use that could be removed and added is something I think is definitely a game-changer! Awesome post @daniel!

(Dan) #51

This sounds like an amazing idea. I’m unsure of how baking systems work, but I do like the idea of it being an option users could toggle on/off to not allow any online card transactions unless authorised with 3D secure push notification on phone. Potentially with the exception of recognised regular payments, for example something like NOW TV / Netflix.

(Alex Sherwood) #52

Unfortunately the merchant has to implement 3D Secure for their website so Monzo won’t be able to guarantee that your online transactions are authenticated this way.

But if the merchant does implement it, Monzo will be liable for fraudulent transactions on their website so I expect they’ll be keen to do the check which is good.

Here’s a pretty good overview of how 3D Secure works -


That was a diary entry worth waiting for!

(Fred Jónsson) #54

Hey everyone, and sorry for the delay! I’m an engineer in our internal product team. A big part of what we do is building features to make sure we can resolve customer issues quickly, even as we grow. This sometimes involves building features for our internal web tools that help our support team respond more quickly to support enquiries.

Another way to quickly resolve issues is to provide more support in the app, so that there’s no need to get in touch. This has a fantastic dual effect:

  • Many people get a resolution to their issues right away instead of waiting for a response from our support team (although they’re very quick, and definitely worth having a chat with!)
  • Load on the support team is decreased, so we can respond quicker to more complex queries that can’t be resolved in the app.

Because the inner workings of payment systems are very complex, many of the enquiries we receive are around transactions. For instance, the first time you use Transport for London services, you might be a bit bewildered by a charge appearing in your Monzo account a few days after travel. Or you might be surprised to see two transactions in your account for a single trip to a US restaurant — one authorisation for the cost of the meal, and one for a larger amount including the tip.

Based on transaction data, we can often identify someone’s transaction issue programmatically. What we’ve been working on this week is a new feature to show context-sensitive help content when you click “Something wrong? Tell us!” from the transaction screen.

(Note: These screenshots are based on a design rather than the implementation.)

A few thoughts on this feature:

  • Crucially, we’ll suggest options that we think most likely apply to this particular transaction. In the screenshot, the transaction is in Euros, so it’s probably a foreign transaction. Information about fees and charges abroad might be a helpful option.
  • If someone taps :-1:  No, I still need help”, we’ll get them straight through to customer support. It’s important that our improved in-app support doesn’t get in the way of customers getting help from a human.
  • We’ll use metrics for the :+1:   and :-1:   indicators to develop our content: both in terms of the the content itself and the options that we show for a particular class of transactions.
  • In the future, we want to use machine learning to come up with better rules to suggest help content. Our hypothesis is that sophisticated algorithms can probably come up with better recommendations in less time, compared to the time-consuming work of identifying classes of transaction issues and writing rules by hand.

Currently, the help content that we show is based on specific hard-coded rules. For instance, if we detect that a transaction is from Transport for London, we can show a help option that explains how TfL charge fares based on travel patterns over a full day.

Of course, not all transaction enquiries can be resolved in the app. People will need to get in touch with us as we develop our help content, and some transactions simply can’t be resolved by help content — such as when a merchant has made a charge in error.

In the future, we’re hoping to support menu options that go beyond help content. If a transaction is declined at the point of sale but goes through as an authorisation, we could offer “This transaction was declined” as an option. This might reveal a screen where you could upload a decline receipt that our customer team can verify and subsequently reverse the authorisation.

We’ll be trialling this feature in the coming weeks for a small number of customers. If we consider the change successful based on our analytics, we look forward to rolling it out to all customers.

I’d like to nominate @nigel for the next update! :monzo:

(Colin Robinson) #55

@enginoid It’s stuff like this that makes me :heart:️ monzo even more :+1:


That was a great entry, thank you @enginoid

(Nigel Ng) #57

Hey guys, I’m a data scientist in our two-person data team. We’re responsible for all the data related stuff for the company, anything from setting up and maintaining ETL pipelines so we can get clean accurate data, creating dashboards to track our KPIs, doing analysis/modelling to inform decisions, to creating machine learning data products.

One of the things I’ve been working on this week was modelling growth of our users. When a user signs up for a Monzo account, we track where they came from. Unfortunately, lots of signups can’t be attributed to a source. The model I’ve built helps us answer: of all the untracked users, how many came from word of mouth, and how many came from Monzo’s organic brand growth?

For those interested, I modelled this with a hierarchical/multilevel Bayesian model with heavily informative priors that impart our domain knowledge into the model. I also borrowed a few techniques from Facebook’s Prophet. Unfortunately, I don’t think I’m allowed to share my findings with you :pensive:. All I can say is that the results look pretty good for Monzo so far! :tada:

Another thing I’ve been working on is an attention based model for customer support. As @enginoid mentioned, we’re trying to make our customer support scale. This model basically takes a customer support enquiry and determines which sentences/words are important in order to resolve this issue. We can do many things with this model: build a classifier on top of it for auto-tagging conversations, use it as a search ranking algorithm for our in-app FAQs, or if we feed it transactional data, it can tell you what transaction a user is most likely asking about, making this a super versatile base model to use. An additional bonus is that it makes whatever model you’re creating down the line a lot more interpretable since you know why a model make a certain decision.

Here’s an example of what the model outputs (glad I can at least show this). It tells us that the first sentence is the most important, and the most important words in that sentence are ‘annual’, ‘withdrawal’, ‘limit’, ‘renew’. Pretty cool stuff! :grinning:

Happy to chat about this stuff if you’re interested! I’d like to nominate @yehudi for the next update

"smart" categories
(Yehudi Asamoah) #58

Hello :wave:

I’m Yehudi, and I’m in Monzo’s Customer Operations team :wave: I’ve mainly been working on complaints for the last few months: dealing with incoming complaints; designing and delivering training packages for the Customer Operations team; alongside working with @StuartM , @leah , @thomasageorge and @Patrick to refine our internal complaints procedures.

I’ll be writing a blog post about in the future, so this’ll serve as a preview to that, and I don’t want to give away too much just yet :wink: however I’ve pinched a few key paragraphs from the upcoming blog, as I believe that this a good opportunity to set a few things out about complaints at Monzo.

To begin with, we love dealing with complaints. We really do. It might sound intense or emotionally taxing, but we feel a connection with anyone we speak to who’s voiced disappointment about us. On a personal level, I love that each complaint we receive represents an opportunity to transform that disappointment into something better.

I’m very, very passionate about this, in fact, we all are: the last thing we want is some perfunctory process which exists solely to tick the regulator’s box. We believe that there’s real value in listening to and learning from the complaints we receive from our community, and wherever possible, we want to collaborate, feedback internally, and drive improvements based on what we’ve learnt from those complaints. To help us achieve that aim, I’m in the process of working through the following questions:

  • Procedure: What’s the optimal way to receive complaints? How can we deal with them efficiently, carefully, and in a way which shows that we’ve really taken on board the feedback we’ve received from a customer?
  • Reporting: How can we use the information we receive from complaints to improve? What are the common trends and themes? How can we best extrapolate root causes to prevent us from making the same mistakes with other customers?
  • Apologies: If we’ve made a mistake, what can we do to offer a personalised, meaningful apology? It’s sometimes appropriate to offer financial redress - particularly if we’ve messed up in a way which has impacted your finances, but sometimes, in comparison to a quick apology and cash deposit, a heartfelt, unique apology can mean so much more.

I think answering those questions will help us in our effort to deliver world-class customer service at all levels. If you ever make a complaint, we should treat it seriously, make things better for you, learn how we can make improvements based on your experience, and then apply those improvements to make those things better for everyone else too.

I’m very excited about developing a culture of collaboration, in which we work together with our customers to develop the best Monzo possible, and I believe that complaints will play a crucial role in that effort. As promised earlier, you’ll be hearing more about this in the future, so stay tuned!

Next up, I nominate Ivan, from our awesome Android engineering team :smile:

(Alex Sherwood) #59

Thanks Yehudi - another great post in this topic.

The Monzo team already seems to do a great job of resolving issues & complaints but in my experience, closing the feedback loop - explaining the specific follow up actions that Monzo plans to take, to improve on something that a customer’s raised, to that customer, if something can’t be resolved immediately - seems to be a challenge.

Hopefully we’ll hear more about that in the blog :slight_smile:

(Ivan) #60

Hello :wave:

I’m Ivan and I’m an android engineer in the external product team. I joined Monzo 10 months ago and I’ve been working on the Android app since its first version that was released in September last year. I usually work with another two amazing android engineers @kavi and @emmag, and we are looking for more android eng to join us so please apply if you’re one! :wink:

My day-to-day work involves implementing new features in the Android app, fixing bugs when you report issues with your app and also ensuring our codebase is kept in good shape and that we use the best possible technologies that allow use to move fast. For example, we have recently started using a new programming language Kotlin to write our Android app. Kotlin is a modern programming language that has many benefits compared to Java. This will hopefully allow us to write features faster than before and also reduce the number of bugs that we create when implementing those new features :tada:

Most recently, I’ve been focusing on adding current account features to the Android app :bank: (this is why we haven’t released any new major feature to the Play Store recently). For example, I’ve been adding bank payments so you will be able to send money to an account number and sort code as well as setting up recurring and scheduled payments (aka standing orders). The first version of this feature is now implemented on Android and we’re testing it internally :rocket:

This week I’ve been working on a new identity verification flow :camera_with_flash: The new identity verification is similar to the previous one but it will allow us to verify your identity quicker than before. It also has a bunch of improvements as well as camera fixes for some devices like the LG G4.

That’s all for now :slight_smile: Next I nominate @priscila

Monzo Job Posts :loudspeaker: