Project Info
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. 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. 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. 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 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:)
HeartHack
Making the soul-sucking dating apps suck even more, one swipe at a time!
Stop wasting time on swiping. Simply describe what are your green and red flags in a potential match, and let HeartHack swipe for you.
Yes it's clearly for-the-lols project, but akshually it does solve a specific problem (kind of):
By default, most dating apps let you specify only very basic filtering criteria: age and gender. If you want anything more fine-grained (like education, family plans, hell even covid vaccine), you have to bite the bullet and pay up. But even this won't save you from seeing all those shirtless pics 🥵 This is why we built HeartHack.
Possible future improvements
devpost link: TODO
Authors:
Analysis
View
Metric
- 5
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- JavaScriptIn code
- KotlinIn code
- ReactIn code
- Google GeminiClaimed
5 of 6 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
22 KB
Source files
10
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
avah1026/treehacks-2025
22 files · 236 KB · @ 429d9a7
Structure
Interface
1 file · 5%Screens, components and styles rendered to the user.
Application logic
11 files · 50%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Kotlin54%
- JavaScript25%
- CSS15%
- Markdown4%
- HTML2%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
gatherer/package.json
npm · 10- react
- react-dom
- +8 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.