Inspiration
Our group wanted to tackle a challenge we'll all face soon: finding community as a new grad in an unfamiliar city. Social networks like Facebook and Instagram claim they "aspire to connect people," yet surveys show younger generations feel lonelier than ever. 79% of Gen Z and 71% of Millennials consider themselves lonely (Cigna). Our goal: provide new college grads with a seamless, easy-to-use platform that connects them a group of other young adults who share their interests!
What it does
Our program is designed to be sleek and simple as possible. Users send a very short survey of their hobbies and interests. Then, our system treats these data as a social network and matches you compatible folks in your city. Once your group is formed, Fynd recommends local activities curated to what your group will enjoy!
Insights and Main Algorithm:
Our key insight is this: each year thousands of new grads move to each major city. Since people have so many interests--i.e. social network dimension is high--it's almost certain that people could be grouped by shared interests. The challenge is to create a program that can form those social clusters despite the problem being high dimension and NP-hard. We've designed the following algorithm to tackle this problem:
Preprocessing and functions (1) User data are queried in a city. They are given ID's for tracking in the algo (int) and their interests are binary encoded (True/False). (2) Users are sorted based on their total interest count, those with the fewest interests at the top. This sorting aims to start forming groups with the least connected users. (3) Computing Compatibility Score: A function score_users_compatabilities calculates two users' compatibility based on number of shared interests. We accomplish this quickly by treating their interests as vectors and taking the dot product. (4) Finding the Best Candidate for a Group: Given a current group and a list of potential candidates, a function identifies and returns best candidate to add to a group. This decision is based on the highest compatibility score between current group members and the candidate.
Core loop (5) Forming groups: Starting with the least connected user (best-worst case), the algorithm iteratively adds the best candidates to the group until it reaches a predefined maximum size or runs out of compatible candidates (usually when n_users % max_group_size != 0). When a users is added to a group, they're removed from the pool of candidate--ensuring groups don't overlap. (6) Iteration: This process repeats, each time starting with the least connected user from the remaining pool, until all users are assigned to a group.
How we built it
Frontend: React, Next.js, Vercel (shadcn & Tailwind) Backend: Python, Starknet Demo: Jupyter
Accomplishments that we're proud of
The problem our code solves is very challenging, time complexity of checking every group configuration is on the order of O(m*n!(kn)!). If we naively search for groups of 5 between 100 users across 16 interests, the n! term alone blows up to 10^157 (not to mention the (kn)! term, yikes!). Our algorithm (written in Python), finds high quality solutions with a time complexity of just O(m*n(k!))--note that k (group size) is far smaller than m and n. It also dynamically constructed, in that the ideal group size is parameterized and the weights of each interest's connecting power can be easily scaled.
In addition, we spent time thinking about how we'd get major adoption of our platform, which is why we chose to build some of our major infrastructure on Starknet. Tokens are great at solving the "cold start" problem. By rewarding early users and incentivizing the sharing of our platform, blockchain tokens bootstrap the crucial set of initial network participants.
What's next for FYND
- Improvements to the user experience, along with complex user data features. Specifically, we'd like to implement deep learning to find subtler connections between users. What if you could send Fynd for your Instagram feed and have an AI model reverse engineer your vibe?
- Doing the backend work on a larger cloud compute service, like AWS EC2, and storing our data in an S3 DB (for example). This would also potentially give us the computational room for a more advanced grouping/clustering algorithm.
- Rewarding users with a points program on Starknet. Points would be stored on our centralized database but would soon be redeemable for our native platform token.
- Utility of our token involving staking, governance, etc.
Creators
Jonathan Zhang, Jeffrey Ryan, Samarth Arul


Log in or sign up for Devpost to join the conversation.