Kenyt Product Ranking Engine

Kenyt was started with a goal to help buyers make quick and informed purchase decisions. To achieve this, we envisioned a knowledge platform which can process available information to extract useful knowledge and a product ranking engine which can rank products using this knowledge. Like Google gathers all the web pages and give you top 10 for any query, we wanted to rank all products to produce top 10 products for your needs. I am happy to say that we have cracked both of these pieces and now have an awesome knowledge platform and a product ranking/recommendation engine. In this post I am going to talk about factors we use in our product ranking engine.

Existing solutions provide options to sort by popularity, ratings etc. which does help a bit but still require you to do lot of work. Our engine looks at many parameters together to give you top 10 list tailored just for you. You can get “Top 10 products by brand”, “Top 10 by price”, “Top 10 by availability on a particular site” easily. Heck, we can even tell you “Top 10 Laptops with i5/i7 processor, 8+ GB ram having backlit keyboard” or “Top 10 Mobiles from Samsung, Lenovo, Honor with 8+ mp front camera in 10-20K price range“. Any Top 10 list is possible with Kenyt. Please note that this list is completely data driven and is always up to date unlike other lists which become outdated quickly.

Lets talk about the factors which Kenyt ranker uses to rank the products.

1. Feature strength: We evaluate all the features of a product and assign a spec score. To do this, we look at specs and compare it with other similar products to measure how good are its features compared to its competition. Not all features are considered equal. For example screen size is much more important than a USB port in TVs. Kenyt Spec Score for each product reflects our ranking of its specifications.

2. Value for money: If a product offers more features at lower price, it gets higher “value for money” score. This enables us to rank products offering more value for money higher.

3. Product ratings: This is typical star rating and ratings count. We assign some weight to rank products with more ratings and better star rating higher.

4. Recent popularity: Customers are influenced by what others are buying. Knowing what is popular help buyers choose more confidently. We guesstimate every product’s recent popularity using various data points like number of search queries, page views, purchase volume etc. and rank products popular in last one week/month higher. Many sites give you option to sort by popularity. At Kenyt you can even see exactly how popular is a product.

5. User Reviews Sentiment: Customers rely heavily on user reviews to get unbiased insights from existing buyers. To accommodate this, our engine go through the user reviews and automatically find aspects people talk about in a product. It then assigns scores to various aspects based on polarity of each sentence (and not use review level star rating). These aspect sentiment scores are then used in the product ranking. All aspects are not equal. Aspect weight is decided depending on its importance. For example, battery and camera reviews are given more importance than weight of a mobile.

6. Brand popularity and quality: Brand is another extremely important aspect involved in purchase decisions. Customers would choose product from a superior brand if everything else is same. To reflect this in our ranking, Kenyt calculates brand popularity and brand strength in different price bands. We use brand search volume, page views etc. to guesstimate popularity and calculates a brand score. We also look at average rating of all products and reward brands with multiple good products higher than ones which has few good but many bad products. Products from higher ranked brands are ranked higher.

All these factors are used to calculate a final Kenyt Score for each and every product. Our top 10 is list of products sorted by this score. Yes, there are other factors which are involved in decision making but even with these our rankings are fairly good. We will continue adding more signals to make our ranker even better. Further we are looking at making these recommendations personalized.

Product rankings can be only as good as the quality of the data. Many times data is incomplete, incorrect and inconsistent. Challenge is to be able to rank with all the imperfections in the data. I will talk about our data collection/extraction challenges in next post and give details of problems we solved to reach a point where we are able to do such deep analysis of hundreds of thousands of products from many sites in 52 categories with just 4 people.

You can download Kenyt Android app from here. Our iOS app is under development and will be released next month.

P.S. Interested in working on simplifying decision making with us, send me a message.

Levels in Microsoft mapped to one single quality

I have this habit of over-analyzing things, trying to figure out the formula which connects the underlying dots to put a structure to my thoughts. At Microsoft I spent countless hours thinking about skills I need to acquire and qualities I need to build to move ahead in my career. Two most important activities I frequently did was deducing what skills my managers had which made them effective and second experimenting with my own ideas. After all the thinking, below is how I deciphered career levels in Microsoft to single most important quality people need to develop to get there.

Base = Intelligence and Hard work
These are two core qualities people need to get anywhere in life. You need to have a fresh mind which can think and you should be hard working. There is no escape from these.

Senior = Self Critical
Person who is self critical and is able to evaluate what skills he/she needs to acquire constantly (and then acquire those) should definitely make to Senior in Microsoft. Self critical people are able to see goodness in others and able to pick the right skills they need. Without continuous self improvement, your career is going to stagnate quickly.

Principal = Courage
Now this is where things get hard. As you climb up, you will be required to take many decisions everyday and those decisions are going to be very crucial for your team and product. Your level of courage will define if you are going to target big challenges or not. Courage will help you open up to take risks and experiment more which in turn will help you learn more. Without courage leaders won’t be able to pursue big dreams and take calculated risks. Courage is what pretty much separates men from boys, leaders from managers.

Partner = Good Intuition
Everyone in the world has some level of intuition on everything but depending on how good your intuition is, you are going to succeed less or more. Are you able to predict needs of others, market, customers better than others. Can you tell which team composition will work better, which market strategy will work, which features customers are going to love. Can you just feel what are the next steps team should take? Intuition helps with these kind of things and good intuition makes you extremely effective. You can term it as experience too but experience can build good intuition or bad intuition. People with bad intuition has view of the world which might not be right and actually will make them take bad decisions. As building deep intuition takes time, you cannot really fast forward in building this. IMO more you travel, experiment in previous years, better intuition you are going to have.

Vice President = Out of box thinking
Now out of box thinking is the hardest as most of the people will struggle their whole life to even understand what it means to be inside a box. Even ones which can tell when they are inside, its very hard to get outside the box. As per my own understanding, you are inside the box when you accept an outcome without rationalizing it completely, when you stop questioning processes/directions etc. just because that’s how you have seen them but can’t really justify it. People who are able to keep their awareness and perspective fresh and able to question their knowledge and principles all over again as required stay out of the box. These leaders can guide through their emotions and that of the team successfully and gets to fulfill the biggest responsibilities in corporate world.

Of course people have lot more qualities than these and there are many other things you need but these form the basic ones in my mind. Yes there are people who get to these levels without these qualities too but this is what separated majority of the people at these levels from ones below them. I would love to hear from readers what skills/qualities you might put higher than these.


New Beginning – Kenyt

After spending more than 13+ years working for Microsoft (14+ including 1 year at Cisco), I have decided to test some uncharted waters. Even though I was enjoying working for Microsoft, I had few ideas which I wanted to evaluate and it was unlikely that Microsoft will be willing to take bets on those. So I left Microsoft couple of months ago and have started my own company Kenyt.

Problem I have decided to work on is to make it easy for people to make decisions starting with shopping decisions. We live in era of umpteen choices and as the number of choices increase it is getting harder and harder to pick one out. Google is great tool but it is making decisions harder because there is tremendous amount of information (not knowledge) in front of you to go through. Customers are spending days and weeks trying to zero-in on a product or service. As per a research study done in USA, consumers are spending average of 70 days researching before they finalize a which product to buy. All this is completely taking fun out of shopping. Even after all this consumers are not sure if they have made write choice.

Kenyt’s goal is to make all this pain go away. We believe that consumers need clean/trustworthy data first to narrow down on choices and then need social validation in terms of reviews, expert advice, and what friends has to say. Kenyt has started with first pillar of clean and trustworthy data and to that end, we have released our first version of the android app on play store.

Here is what we are doing to provide meaningful insights to consumers. Our engine is collecting the data from multiple sources, cleaning it, conflating data from all sources and then extract useful knowledge. We have exposed knowledge like what typical specs you can get for a price which can help you decide your budget, how a brand is positioned in a particular price range, how each feature in a product stack against other products you are evaluating etc. Few useful tools are also included like ability to reject (many times consumers know what they don’t want but not what they want), merging multiple variations like different colors together so that you don’t see same product again and again, side by side comparison of any number of products and session management so that you can carry on with your research when you come back next time. Please download the app and give it a try and do share your feedback.

I have been thinking about blogging ever since I moved back to India in 2010 but for some reason or other never got to it. I am very excited to bring my blog back to life. I am going to share lot of thoughts on entrepreneurship and technology. Stay tuned for more.


Podcast on Running PHP on Windows

Peter Laudati & Dmitry Lyalin host the edu-training Connected Show developer podcast on cloud computing and interoperability. I met Peter in Chicago during Tek-X and we along with Don and Wade recorded a podcast on evolution of PHP on the Windows Platform. We talked about the improvements made to Windows in order to support PHP, including: Fast CGI, WinCache, PHP 5.3, the Web PI, and the SQL Server driver for PHP. Check out episode #31, “PHP On Windows” on Connected Show. Interview starts at 24:31.


If you like what you hear, check out previous episodes of the Connected Show at  You can subscribe on iTunes or Zune.  Peter and Dmitry publish new episodes approximately every two weeks!


Impact of name resolution on mysql_connect perfomance

I spend lot of time profiling popular PHP applications finding where exactly processing time is spent during PHP execution. Few months ago, one thing which caught my attention was performance of mysql_connect API. On my windows test bench, xdebug output showed that one call to mysql_connect was taking 0.31 seconds which is huge. While playing with the API, I noticed that when IP address of the MySQL machine is used instead of the hostname, performance of mysql_connect API is much better. Below is a simple script I ran to test this.
1. <?php 
2.     $hostname = "hostname";
3.     $ipaddress = "";
5.     $starttime = microtime(true);
6.     for($cnt = 0; $cnt < 10; $cnt++) {
7.         $connection = mysql_connect($hostname, 'username', 'password');
8.         mysql_close($connection);
9.     }
10.    $endtime = microtime(true);
11.    echo ($endtime $starttime . "\n");
13.    $starttime = microtime(true);
14.    for($cnt = 0; $cnt < 10; $cnt++) {
15.        $connection = mysql_connect($ipaddress, 'username', 'password');
16.        mysql_close($connection);
17.    }
19.    $endtime = microtime(true);
20.    echo ($endtime $starttime);
21. ?>
Below is the output I got when I ran the above script on my test bench.

3.14003 seconds (time taken for 10 mysql_connect calls when hostname was used)
0.01396 seconds (time taken for 10 mysql_connect calls when IP address was used)

As you can see in the results, hostname resolution slows down mysql_connect significantly and the performance hit seems to happen on each mysql_connect call. This slowdown only happens when connection is made to a remote machine. When MySQL and web server both ran on the same machine, there was no performance difference between hostname and ipaddress case. So if you are running MySQL on a remote machine, use IP address in the mysql_connect call. Alternatively you can add an entry in %windir%\system32\drivers\etc\hosts file to tell your system IP address of MySQL machine. System will find this entry in the hosts file and pick the IP address of MySQL box directly without going through more expensive name resolution. Change hosts file only if you have a static IP address. Name resolution performance will depend on your DNS/WINS configuration and on your network topology. So you should run the script above to find out performance impact of hostname resolution before making any changes.

Hope this helps.