Making soul-sucking dating apps suck even more, one match at a time!

HeartHack isn’t just about automating dating—it’s about making dating smarter, faster, and more intuitive. HeartHack is totally about automating dating, and making it even less personal and soulless!

Inspiration

"In today’s fast-paced world, spending hours mindlessly swiping on dating apps feels like a chore. Finding love shouldn’t be exhausting—so we built a smarter solution. Everyone knows what they’re looking for, but sifting through endless profiles? That’s the real challenge. With HeartHack, you can skip the tedious search and jump straight to meaningful matches."

Actually, it just seemed like an idea with quite a big LOL potential.

What It Does

HeartHack is an AI-powered tool that automates swiping on dating apps based on your personal preferences. First, it asks you a few key questions to understand your ideal match and builds a personalized profile. From there, it scans Tinder profiles from screenshots, using LLM (currently Gemini, but this could be easily changed) to analyze the bios and photos of potential matches. If a profile aligns with your preferences, it swipes right; if it detects dealbreakers, it swipes left.

How We Built It

HeartHack consists of 2 parts:

  • "gatherer" – the web app where you provide information about your dating preferences
  • "swiper" – a CLI app running an HTTP server that receives info from the gatherer, and then interacts with a connected Android device (opens up Tinder, browses through profiles and swipes)

Technologies used:

  • HTML, CSS, JavaScript (with React) for the "gatherer" web app
  • Kotlin (programming language) + Maestro (mobile app automation framework) in the "swiper" CLI app
  • Gemini

Mobile App Automation: To interact with Tinder (or any other app on a mobile device), we use parts of the Maestro framework built by Mobile.dev. Maestro lets us interact with the mobile Android or iOS device just like a real user does – we can tap, perform gestures, input text, open different apps, and capture screenshots.

AI-Powered Matching: Once the screenshots are saved, Gemini Flash 2.0 analyzes bios and photos to determine compatibility. Profiles that meet the user’s criteria get a right swipe, while those with red flags get a left swipe.

Challenges We Ran Into

We initially built the "gatherer" app in Python (using PyQT), but quickly realized that using web technologies for it would be more fun, flexible, and also a good learning experience. Later, we hit another roadblock when we realized that the Maestro framework is really laser-focused on testing mobile apps and doesn't lend itself to general-purpose mobile device automation which we actually needed. To overcome this, we extracted some of its internals and used them directly, omitting parts we didn't need.

Accomplishments We’re Proud Of

We are happy we managed to build a functional system that works quite reliably (by hackathon project standards). Successfully integrating together the few (quite different) technologies we used under such tight time constraints and then seeing it work felt really good!

What We Learned

This project pushed us to explore a few new technologies—React, the Kotlin language, Gemini API, and mobile app automation with Maestro—that some of us had never used before. Each team member took on the challenge of learning something unfamiliar, and for two of us, it was our first-ever hackathon. The experience gave us a crash course in rapid problem-solving, teamwork, and working under tight deadlines. Plus, we had the chance to learn directly from a more experienced programmer, gaining more confidence in working with different parts of a quite simple but not-so-typical software system.

Possible future improvements

  • Adaptive Swiping: We aim to track user swiping history to refine our AI’s decision-making, making matches even more tailored.

  • More dating apps: it'd be easy to add support for more dating apps, like Bumble or Hinge.

  • Smart Conversations: if we had more time we'd also add LLM-powered conversations, so you didn't have to even spend time to rizz up your matches to go on a date with you.

  • Your personal dating farm: nothing is stopping us from running a few Android emulators at once, to get even more matches. Couple this with LLM-generated conversation and BAM! you're making the dating app experience suck even more for everyone, even more efficiently! :D

PS Funny thing: our very clearly garbage, fake profile hasn't been banned by Tinder after 2 days of swiping:)

Built With

Share this project:

Updates