Automated catfishing: a dating site chat bot

Jeffer1981
3 min readJul 28, 2021

Ok, title is a little weird, but I’m quite interested in all things AI and chatbots. The challenge I made for myself was easy: how long can a bot keep a normal everyday conversation going before the other party realizes he or she is talking to a bot.

Why a dating site chat bot?

Because for this challenge I needed a large pool of actual people willing to chat. Dating sites provide this.

Is this unethical? In a sense it is, as I was tricking people into thinking they were talking to actual potential love interests. However, I never promised anything, sold anything etcetera. I just made light conversation. And in the end the bot always let the other party know that they were talking to a bot.

Basic setup: the bot

I’ve set up the bot in Python with Selenium. Selenium allows you to simulate a real user through Chromium, which is a headerless version of Google Chrome.

By using selenium, I could automate signing on to the dating site and reading and replying to messages, or even browsing profiles and initiating conversations. However, this process is site dependent. As every dating site is structured differently, with different HTML tags, you will need to custom write this part for every site you try out.

from selenium import webdriver

driver = webdriver.Chrome(executable_path=EXE_PATH)
driver.get(url)

Of course, you also need to create a profile on each site. As the number of men on dating sites outweigh the number of women, you’ll get a lot more traction when creating a female profile. And create one that is not obviously fake, like using a supermodel’s picture.

Baseline strategy

My baseline strategy was pretty easy: just ask random small talk questions: how was your day? Any fun plan for the weekend? Favorite country?

In this strategy I do no reply to any questions the other party asks, I just ask my next random question.

I do take care of the following rules, as they are a dead giveaway for being a bot:

  • Do not ask the same question twice.
  • Only ask a new question when the other party has replied.
  • Do not reply immediately when the other party replies.
  • Try to include the other party’s name in the greeting. the name can be scraped from the user’s profile.

Chatterbot strategy

Python has an AI chatbot library, called chatterbot. It’s pretty easy to set up:

  • Initiate your chatterbot model
  • Train the model
  • Use the model to reply to questions.

As with all AI applications, the key is in training the model. And to be able to do this, you need a file with questions and answers. The bigger this file, the better. You can find some training files online, especially in English.

The issue is that most chatbots are very context specific: every niche has it’s own lingo and so does the online dating world. So you will definitely need to supplement your training data with dating specific training data.

The result

I got the best results, by far, with the baseline strategy, much more than I anticipated.

The chatterbot did not hold up. If it gets a question that’s very close to one in its training data, it’s able to somewhat answer the question. Unfortunately, people do not write clean or standard English online: lots of abbreviations, certain lingo, typo’s, etc. Chatterbot was not able to deal with this, unless I would have vastly expanded the training data set.

On the other hand, the baseline strategy really held its own. I limited the bot to max 5 questions before the bot revealed itself and it often got to 5 questions without being detected as a bot.

--

--

Jeffer1981

Project Manager for ERP software | Tech enthousiast in python, AI | Loves sports and martial arts | Living in Belgium