How I Automated Tinder using Artificial Intelligence

Oscar Alsing
4 min readSep 27, 2017

--

Artificial Intelligence was given to man for a higher purpose. I kindly obeyed, and used it’s unquestioned capabilities of solve one of the major burdens of mankind — the endless swiping for a potential lover on Tinder.

Using Convolutional Neural Networks, I created a Machine Learning model, able to predict girls of my interest with an astonishing 85% accuracy. This smart little Tinder bot hacks the (nowadays) naughty Tinder algorithm and gets straight to the point — matching with people you find attractive.

Online dating applications are more popular than ever, and many people find love through the mechanics of swiping pictures of potential lovers. Though, as modern applications rely increasingly on quantitative swiping with limited profile filtering features, the search for love could be an endless swiping procedure before finding a potential match.

Interested in the future? Make sure to check out my Youtube Series “Artificial Intelligence for Everyone”, where everyone, regardless of prior knowledge, can learn about Artificial Intelligence. It’s the most valuable asset of knowledge in 2017.

As of this, I felt like investigating the possibility of using Convolutional Neural Networks (CNN) in order to learn abstract facial features of people of one’s interest, and inherently investigating the possibility to automate the mundane task of swiping through the pictures of other users. Through the use of facial feature extraction and a deep CNN architecture, a swipe classification accuracy of 85% was achieved.

Let’s get techy about it!

We need to collect data! Loads of data! More specifically, I had to gather thousands of images of people that I find attractive — which could be quite a mundane task, to say the less. Well, luckily, we can user Tinder for that. Obviously the Tinder mobile apps utilise an API in order to transfer data back and forth, and if we could make the Tinder app believe that our program actually is making API calls from a mobile phone, then we could access all data available in the mobile applications in our program.

This could be achieved by investigating API calls with the use of programs such as Charles, but once again we were lucky, and someone had implemented exactly what we were looking for already — ladies and gentlemen, I give you Pynder!

With the user of Pynder (and my personal Facebook ID and Facebook Token) I was now able to swipe through the pictures of potential matches, doing this, I was then able to classify every image as either attractive or not attractive, according to my personal taste. This allowed me to gather thousands of labelled images, that could later be used for training the CNN.

The problem with these images is that they are all taking from different angles, and some of them are of the entire person and some are zoomed in on the face. As I mostly interested in evaluation the performance looking at people’s faces, I decided to do some feature extraction. As described in the video below, I used the OpenCV Haarcascades library to extract faces from each and every image, resulting in thousands of images of faces.

Well — that’s wonderful! We have now preprocessed our training data, and we are set ready to do some training! But wait.. There is a catch! My dataset was incredibly imbalanced between liked and dislikes images (20/80), and my CNN results were incredibly low. Luckily, there is a Python Library in Scikit called imbalanced-learn, developed by these guys, that could help me get things straight! With a now balanced dataset, we are ready for action.

Typical Convolutional Neural Network

With our courage on top and keyboard at hand, I started to implement a Convolutional Neural Network that would suit my needs. During the process of finding the optimal structure for CNN given the constrains I had on computational power, the resulting network consisted of 7 Convolution Layers, 3 Max Pooling Layers and some fully-connected layers. A dropout rate of 50% was used after each pooling layer.

Were we successful? Yes — absolutely! Our model was able to predict the correct label on the faces of my potential Tinder matches with 85% accuracy on the test set, which most definitely is considered great results (just imagine the swipe accuracy of drunk people?)!

Well, what’s left? To pipeline our model with the procedure of automatically browsing and swiping on nearby Tinder users. This is easily achieved using the Pynder, and the app now runs automatically. Easy as that!

Arguably, it is a bad idea to automate the process of online dating. Though, as mentioned earlier, online dating seems to focus increasingly on quantity rather than quality, and is becoming more superficial. Given enough data, a CNN is perfectly capable of learning the features of a face you find attractive, and therefore one is able to spend more time on connecting with the people of one’s interest, rather than the mundane swiping.

Call To Action

Do you want to stay updated with my latest articles? If so, subscribe to my newsletter. If you want to learn more about Artificial Intelligence (regardless of background), check out my Youtube channel.

--

--