I was pretty intrigued by the dating App Tinder.
Because apparently the number of matches you get kind of determine how good looking you are. (Okay, sort of, not all the time). I’ve also heard that guys gets WAY lesser likes than girls do (mainly because guys are swiping right all the time). For those unfamiliar with the concept of Tinder, this post will NOT make sense. Familiarise yourself with the basics of Tinder’s mechanism first.
But I have to say I was intrigued by Tinder’s algorithm. Also because it seems like a computational approach to solving a real world problem. In this post I will talk about my experiences (both technical and non-technical), and the things I’ve done to mess around with Tinder’s API, Web Debugging Proxies and even Android Reverse engineering APK. (LOL!). Not all worked, but I’m just going to write down everything I’ve tried.
My first day on Tinder I got about 8 matches. (mainly because I created an account previously and then deleted the app in a few hours, just to see how it was). Then subsequently it went down to 4 per day. 3 per day. And eventually about 1-2 day (could be also because Tinder’s drip feed kicks in and prevents me from swiping enough. I was probably only swiping right about 10 times per day, so 1-2 sounds about right). In about 5 days I got about 20 matches and had a few decent conversations (some were inactive, dead accounts of real people. thankfully no bots. I unmatched the some I swiped wrongly).
I’m a pretty selective swiper. I am aware that swiping right all the time seems to be the dominant strategy. But I find it fun to swipe (and it kills time). and seriously it’s nice to know that when you have a match notification it has to be someone you actually really like. I am aware of how easy it is to make a auto swiping bot. Everyone is doing that anyway. But it just feels too uncool to me. I didn’t even want to be a desperate guy in a virtual sense.
I was swiping a lot. Going through a lot profiles. I would refresh whenever Tinder’s drip feed would give me 3 profiles and I would swipe them.
Unfortunately, while naively thinking that deleting accounts preserve my matches, I tested it and nope, my matches were all gone.
Since I also heard that the android app doesn’t have a proper matching system. I took this chance to get a spare iPhone 5s and downloaded Tinder. Restarted my account. And started swiping again. I didn’t go as far as last time (probably only about 1/5 of the whole initial chunk before drip feed kicks in). My matches were about 2 per day as usual. I came to a conclusion that the android app doesn’t have a buggy no match problem. I wasn’t really actively swiping and decided to now play around with the API and other alternatives to see how I can game this mechanism.
Being familiar with social media API, the first thing I tried to do was to use Tinder’s API. but Tinder’s API isn’t official or public. The documentation online is based off people who actually used a network debugging tool (like Charles Proxy) to determine the calls to the Tinder API server. Obviously the easiest thing to implement using the API is to make an auto liker bot. (but I said that was uncreative). And the furthest you can go is to do some fancy computer vision (eigenfaces) bot that swipes for you and/or implement an AI that would talk on your behalf. That’s about it.There is really no way to really “game” the system. Yes, the API is limited in this sense.(of course there are many other things you can do using the API, like crawling people’s data, Facebook profiles, location data for all the other malicious intents. But nah, I’m not interested in that.)
Match Genie & Charles Proxy
I wasn’t pretty sure what I wanted to achieve. But then I stumbled across “Match Genie” which was an app for iOS that apparently tells you who likes you. (so that you can like them back and initiate a match). Initially this did sound too good to be true. I downloaded it and tested it so far. It works. On the first 2 hours I got already 2 matches through Match Genie. The next day 3-4 showed up. But you had to pay about 4USD for unlimited genie reveals. Hmmm?
Anyway everything up till this section seems to be guess work. I am pretty sure, but I am not 100% certain. I am just guessing.
Match Genie does provide another neat functionality of allowing you to “browse” instead of “burning bridges” to move forward. But you can do that with the unofficial API either. A recommendation request typically pulls about 10-15 profiles for you to like or pass.
Their website claims that it’s based off genuine serious research. I was VERY intrigued given that it works (and they must have balls to charge for reveals, so it must be pretty accurate). I mean like how? How did you know? It feels just like a magic trick to me. Genie indeed.I was intensely curious!
I fired Charles Proxy. And decided to figure out what they were doing behind the scenes in the Genie. The other option was to reverse engineer the iOS app which was terribly complicated and I didn’t want to waste much time (not to mention, I have never written any code for iOS before).
So apparently each time you do a “Search for people who like you” function call on Genie. Based off Charles Proxy, it calls the API 4 times. and pulls 4 recommendation requests. (of about 60 people). I believe they have observed that the people that likes you tend to be put in front more often than the people who don’t. Based on this observation, they use simple statistics to calculate and present people who pass a certain threshold as your “likes”. It might sound very simple, but it took me awhile to figure this out.
My other theory was that since their app had the same functionality (to like or pass) as the official tinder, I thought they kept their own record of who was liking who. It was easily proven false when I actually asked one of my matches from Genie whether she was using the official client.
So the question now is, can you actually just relie on the Genie for a passive game? (not swipe at all, wait for people to like you). The answer is probably NOT.
Because it seems like it is common knowledge (and somewhat proven) that if you like someone, Tinder will show them your profile earlier in the feed(as long as they are actively swiping). If you don’t ever swipe right, the only likes you are going to get are from people who are swiping a lot! Which means, not a lot!
Also, Match Genie could be considered a paid app. Because you have to pay about 1+USD per match or 4USD for unlimited. There are ways to bypass it. (Hint, it’s in the title of this section).
Also, Match Genie blurs the faces of your likes and deliberately doesn’t show them on their profile browser. So trying to match the blur picture to the real picture is out of question because it won’t even show up! (good move guys) Alternatively, you could use another 3rd party Tinder app (that has browsing functionality) to easily determine the target. (it’s not hard, the pictures aren’t blurred too badly).
I managed to get the user IDS of my likes (through Charles Proxy) and used the API to manually like (Like request to server takes an argument of user ID and simply swipes right for you). Indeed, they were all legitimate likes.
So based off this “experiment” (or just tinkering around). I came to a conclusion that,
1) Match Genie functionality can be replicated by simply calling recommendation requests several times. Analyse the results. The one with the highest frequency is very likely to be your like. if it’s that simple, why are they charging 1+ USD each time they do this?
2) Remember using Match Genie doesn’t seem to be game changing. If you don’t actually like anyone in the feed and only wait passively, chances are you might not get much matches either.
3) Well, it’s still just simpler to swipe right all the time. There is no denying that that is certainly the best strategy.
4) The question is that does Tinder hide some of your potential matches (likes) deep down in the stack of recommendations?
5) Match genie will not work once Tinder changes their algorithm.
Android APK – Reverse Engineering
I was also curious about what I could find reverse engineering the Tinder app (for android). Well you never knew if there were methods inside that gave you special calls to the server or what not. Also, Decompiling Android was relatively easy. (took only 20 minutes max and it was my first time). BUT the conclusion was don’t waste your time, the Tinder App is pro guarded. All the variables, class names, methods are renamed A,b,c etc…you won’t get anything out of decompiling the app. Or at least I didn’t. There seems to be no work around for this anyway.
In conclusion, it wasn’t game breaking but I had a better sense of how tinder does things. It’s also good that you can get around match genie without actually paying them a single cent.
And as of now, it seems like as long as Tinder doesn’t penalise you for swiping right all the time, swiping right is the best strategy.
But anyway since I’m not exactly looking for any real hook ups or whatever. (maybe in the future, but not now definitely). I’ll probably get off the app, for now.
But assuming that there are real (unknown) penalty for swiping right all the time, the best way now would then to be using a statistical approach (mentioned above, getting multiple recommendation lists analysing them) or simply just playing the game how the creators designed it to be.
AGAIN, everything in this post is my GUESS WORK. don’t take it too seriously. Please don’t hesitate to share your thoughts with me. Or point out if I’m doing anything wrong!