Inspiration

Disinformation is becoming an increasingly serious threat online, with AI-powered bots amplifying fake news, manipulating public opinion, and undermining trust in democratic processes. We wanted to tackle this problem using machine learning, building a tool that could detect these automated accounts before they cause damage at scale.

How we built it

We used the TwitBot-20 dataset and developed three complementary ML models, each targeting a different dimension of the data:

  • Random Forest on account metadata (creation date, follower count, profile features, etc.)
  • Fine-tuned BERT on tweet content, to capture linguistic patterns typical of bot-generated text
  • Graph Neural Networks on social relations and interactions, to detect suspicious network structures

We then combined these three models using stacking, training a meta-learner on their outputs to produce a final, more robust prediction.

What we learned

We learned how to work with multimodal data and combine heterogeneous models through ensemble methods. Fine-tuning BERT on short, noisy tweets was particularly instructive, as was handling large social graphs with GNNs. We also gained a deeper understanding of how bots operate across different signals.

Challenges

  • Processing and aligning data across three very different modalities (tabular, text, graph)
  • Fine-tuning BERT efficiently with limited GPU resources
  • Ensuring that every user in the test set was represented in the final predictions, even when some had missing tweets or incomplete social data
  • Tuning the stacking meta-learner to actually improve over individual models rather than just averaging them out

Built With

Share this project:

Updates

Submission history