Our ultimate objective is to make programs that learn from their experience as effectively as humans do. We shall…say that a program has common sense if it automatically deduces for itself a sufficient wide class of immediate consequences of anything it is told and what it already knows.John Mccarthy, “Programs with Common Sense”, 1958
Machine learning has been and still is a large part of research area in academic circles. But in last decade or so it has made heavy in roads to the practical world of tech industry and today it’s no secret that most of the large players are using numerous machine learning techniques to enhance various aspects of their workflows. In this post I’m hoping to look at few ways how a SaaS application (presumably run by a startup) can use machine learning to enhance its overall experience.
Personalise user experience
In your experience of using SaaS products, how many times you may have found that your favourite item is at the bottom of the list and you have to scroll half a mile or navigate through several layers of menus ? Usability usually favours the majority and you may discover the bitterness of being stuck in minority.
If you go into the same coffee shop every morning and buy the same drink, if they are any good at their business then they should know your preferences after few days and you don’t have to go through the ordering routine everyday. It may be just that the shop owner confirms “Same as usual ? ” and that’s it. So if your app is bit more intelligent (good at its business), it could do the same and not irritate users by dropping their most used features to the bottom of the page and having them crawl over the page every time they use your app. However to be on safe side, just as in the case of coffee shop owner’s confirmation you may need to give an extra setting option to the user confirming whether it’s preferable for the app to learn user behaviours and adapt.
Reduce your support requests
Say you have a hot product in your hands and it’s getting more and more traction. If you have experienced this situation, one thing that you won’t miss is the number of support requests that’s sky-rocketing in parallel to the hotness of your product. Given that startups have limited man power, there’s no need to emphasise the importance of your team’s man hours and whether to spend them answering easily avoidable support issues or somewhere more useful fixing bugs and adding new features. The school book remedy in this situation would be to evaluate the usability of your app which certainly is a good option but it doesn’t hurt to make your app bit more intelligent to identify obvious pitfalls.
In your neighbourhood if you notice someone is wondering back and forth looking up and down wouldn’t you assume he is lost and offer your help ? Taking a leaf out of this situation your app can do the same and be kind enough to identify a stranger wondering throughout your app and offer him help. Not only will you be saving your team’s man hours but you will be saving user’s precious time and as an added bonus impress the user even more so on your product.
Make search intelligent
Search is a window to your application data and improving the quality of search will directly influence the user experience. Rather than making the user guess under what keywords his target content is indexed under, what if your application is good at identifying user intent behind the search ? That would certainly be the icing on top of your search functionality. To make it even better, mix some fuzzy-ness to auto correct a search term when there’s an obvious error. Of course all this is easier said than done and every company is not a Google. But you can take an initiative by analysing search terms to identify week spots, start addressing them first and moving forward as a minor experimental optimisation process.
On another note, a good application wide search will greatly help answer most questions your users may have. From experience most of the support questions are recurring in nature so if users can easily find answers from your community forum or support articles, it will help lighten your support inbox.
Finding more details about users
Well, this is more of a grey area. Gossiping on other’s juicy dirty secrets is usually frowned upon, but a little awareness of what’s going on around you could be useful and even healthy. Most of large companies are already digging up your day-to-day buying patterns to better target you but the amount of how deep you dig into user information (or abstain from it) is certainly up to you. One way to look at this would be how you treat advertisements – as long as they are relevant and useful in achieving your goal you won’t mind it. But the second it falls below your requirements and becomes nagging, it will be a nuisance and spamming. Likewise if you can give users a coupon they can’t ignore it’s likely they won’t mind and you can comfort your conscience by thinking you are doing a service rather than snooping around.
Gauging user reaction to new features
It’s a normal practise for apps to use a simple voting system to get to know most desired new features of a SaaS app. Usually what happen is that app admins put up a set of features they feel important and users vote on them. But taking this one step further and crowdsourcing, you can know what users really need and same time know more about your users. Of course collaborative filtering is not a new technology and most of the social sites are using it to rate new items and know preferences of new users back and forth. So even though you are not running a social network, you can still use it to get to know attributes of your user base such as technical savviness, seeking automation. etc.
This only sums up some of the more obvious situations where machine learning techniques can play a part in improve a SaaS application. It certainly is an exciting field in which I’m trying to get a grasp on as a passive interest and hoping to carry out experiments to learn the applicability of various theories. It would be exciting to hear more ideas and how well they have worked so please feel free to share them here.
Some pointers to get started/keep an eye on:
- Good place to have some quick practical experience – Stanford online ML course by Prof. Andre Ng
- CMU Machine Learning course by Prof. Tom Mitchell
- Probabilistic Graphical Models by Prof. Daphne Koller
- Lots of theories by Prof. Andre Ng – Stanford CS229
- MLSS resources – 2008, 2009, 2010, 2011.
- MIT ML lecture notes
- Various research publications – Google, Microsoft, Academia
- Google prediction API
- What’s happening in the world of big data – NoSQL weekly