FatFinger — A Pretty Good Tinder bot

Artiya
4 min readJul 22, 2023

I’m sad about the political situation in my country, Thailand. To cope with my emotion, I usually code, to make me focus and think logically again and maybe want to talk with someone. Tinder is the best way to find someone new to talk outside my circle which is actually really tiny. However, swiping is not my strong suit. I got tired too fast after a couple of dozen of swipes. Making a Tinder bot is the best to do it.

I made Tinder bots in the past but the result is not really good. It was focused on the attractiveness of the dating profile using AI or machine learning models on the profile’s photos and doesn’t care about the rest of the profile information. The model was not high accuracy. The result matched the good-looking profile(properly catfishing or scammer) and even the profile is the real person I ran out of things to start the chat since nothing on the profile for me to work on. I want to improve on this.

Idea

The new idea of the bot is “investment-based dating profile rating”. Tinder is based heavily on Hook Model(by Nir Eyal) to keep users engage. Trigger(attractive user photos, user loneliness), Action(swipe), Variable Reward(match, chat, date), And the most important for my bot idea is Investment (add more photos, write a complete bio, verify the profile, etc.). The new bot will rate the user's dating profile based on the user's investment in the app since the bot can ultimately do the action without getting tried. The info e.g. number of photos, active, verified, bio, age, Instagram, school, job, number of passions, and lifestyles will be counted for the points. If the profile point passes a certain score, the bot will swipe right.

How it work

  • Chrome extension — The FatFinger is a Google Chrome extension installed on the web browser.
  • Gather dating profile info — when visiting https://tinder.com/app/recs the bot will click on the profile photos and gather the information on the profile on the web app when it clicks all of the photos the profile data will be sent to a backend server to evaluate the profile based on the information.
  • Check the skip list — the server code will check if the profile contains skip keywords e.g. ladyboy, fat, chubby, trans, gay, model. since I am straight and I have some level of requirements. LGBT photos will confuse the face rating model I use in the next step and yield unexpected results. If the profile has the keywords, the bot will return the result to skip the profile and swipe left on the browser. This could be done on the browser extension but I want to save the data on the server to improve the bot later.
  • Evaluate the profile — based on profile investment. Count point as following… photo=0.4/photo, instagram=4.6, active=3, verified=2, long bio=3, short bio=2, tag(passion, life style)=0.3/tag, job=2, school=1, cat or dog emoji=1, camera emoji=1, random add=0-2 point. Minus points for some language I can’t read. Then adjust the point based on age x1.1 for age less than 25, x0.9 for age more than 30, and x0.85 for age more than 32. if the point is more than 11.0 and will process the next step otherwise swipe left.
  • Evaluate the face attractiveness — This process will not intend to find only the attractive profile but to filter out the profile with no face on it or barely see the face. The minimum face score is not really high to pass this. Normal people's photos will pass this process easily. Trans people in my country have a super high score when come to this evaluation, that why I need to filter them out first. If the profile has more faces than 3 and the face score is not lower than the normal face score, this will return the result to the extension to swipe right to like the profile. This process is using high computing power and is time-consuming. I have to make sure the bot will not do this often. The previous step will filter out the profile as much as possible before coming to this. The model I use to evaluate face attractiveness is HMTNethttps://github.com/lucasxlu/HMTNet.
  • Saving profile data for developing later.
  • After the server returns a result to swipe the profile, the bot will swipe as the result but it can be overridden by the user input by pressing a key ‘a’ to swipe left, ‘d’ to swipe right, and ‘s’ to rewind the profile. This will allow me to semiauto swipe Tinder with the FatFinger bot if I want to.

The name FatFinger, why?

The bot has a high chance to pass the good-looking profile. I would like them myself but the bot swiped left anyway based on the profile information. It seems like it got a fat finger and press the wrong button. You’ll get it once you using it.

Demo

The code:

https://github.com/artiya4u/fat-finger

--

--