I still remember of launching my 1st startup of reducing call center volumes when iPhone and Android started picking up in 2012 timeframe. Being the first mover, I got my first 2 customers as Airtel and Vodafone India – both with huge number of mobile data users. Next 3 years, we (my team) implemented the self care app solution in 20+ countries with about 100m+ app users at that time. We also implemented mPaisa (Safaricom 1b+ money transactions per year) in the app. I learnt a lot during the design and implementation of the app. Here are the few design challenges we (my team, customers) encountered and how we addressed them.
User Onboarding : was very important to us as rest is secondary if the user gives up after few questions. We didn’t want to identify user based on series of questions. Every question we ask was a friction to adoptability. Hence we implemented mobile number detection through network (no need to collect from user). We still sent OTP for verification but leveraged Android silent OTP auto-read so that user need not to bother entering it. For iPhone we had to collect OTP from user but fortunately emerging markets have 80%+ Android share so we were in better shape than our US counterparts.
Even today my mantra is not to ask any question till user sees the value in the app. Today, we can read mobile number automatically in Android using the API. In iOS, one can use the AppleId.
If you need to collect information then do it intelligently with out upsetting the user. For example HealthifyMe & lemonade apps do it in a smart way.
No Login everyday: Often I notice that apps ask user to login. Why? Unless you are constrained by legal laws, let the user be logged in though FaceId has solved some friction already. Good topic for debate. Do Amazon/Starbucks ask us to login every day? They have my credit card info with them.
I think we should ask for verification when its needed and not for launching the app. We never logged out user in Airtel/Vodafone apps but we put all the framework in place for verification if any privacy or money transaction was involved. We also made sure that we can remotely log out the user, clear the app cache for variety of reasons. Happy to share technical design, please message.
Customer Navigation : With smartphones, it’s very important our user can swipe with just one hand. Let me show you 2 examples of today’s world leading apps and you know what I mean :
Per Hobber research (https://www.smashingmagazine.com/2016/09/the-thumb-zone-designing-for-mobile-users/), 75% transactions are done using thumb.
Do you think one can swipe with thumb if navigation is on the top? Try it yourself.
Multiple Regions, One App : One of our customer had 16 countries under its belt with each having its own customized features. It’s obvious that we want only 1 app on the iOS/Android stores. We didn’t want to maintain 16 different pages in the app as that would have increased the app size. At the same time we didn’t want web view (to be loaded from server) as that would have killed the customer experience on slow networks (at least at that time). We ended up putting a discovery server during first launch that instructs app to customize itself. If the user changed the SIM to another region then we called the discovery server again.
User Engagement : Our users didn’t have appetite to wait more than 5-7 seconds on any page (today probably 3 secs rule apply). However getting information from our back end systems some times took time. Challenge was how to keep customer engaged during these slow loading time. We designed the front page in such a way that sections of it can be loaded from the cache. Certain times we loaded stale information (debatable) from the cache and then refresh it after getting from the back end (servers). If any information took too long to fetch then we keep updating customer about on why it’s taking long with a new message every 10 seconds.
Financial transactions security : This was a big headache to resolve as hackers and thieves were very innovative. We had to make sure that transaction is originated from the user device, user SIM and user app – all 3 unique combinations had to be checked with minimal user interference as sessions can be hijacked (specially in Africa, can share more, please message).
I hope you can benefit from my learnings. If you have solved above problems in some other better way then please share so that community can benefit. In my next post, I’ll share the operational & engineering challenges we faced and how we overcame those.
Disclaimer : Above article doesn’t reflect views of my current employer. It’s manly for educational purposes.