Inspiration

We, as a friend group, are terrible at planning events and figuring out where we want to meet. We wanted to create an app that can help facilitate these meetups and act as a way to organize our memories in the form of pictures.

What it does

This app allows friends to create groups with each other and plan trips to different places. When a set of friends creates a group, they can use the app to compute optimized meeting points based on the locations of the members. It takes into account things like traffic conditions, as well as distance from each other. It can also suggest activities in the decided area based on group members' preferences. Users can also simply set a destination for a trip if they have decided on a place ahead of time. Another major feature of the app is that it allows for a way to store pictures from a trip together and the application will automatically tag friends for easy querying using AI and facial recognition. For example, with our application, a user could search for all the pictures of a certain friend across all their trips.

Here is a list of other features that it also provides:

  • Create Groups with your friends to have an integrated environment for planning trips
  • Chat with your groups within the app to keep all planning in the same place
  • Find Cities that are between a group of friends with any number of individuals
  • Find a destination that would bring driving times as equal for all group members as possible
  • Find a destination that would minimize the sum of driving times for the whole group.
  • Generate Routes to Activities selected by users
  • Suggest Attractions and Things to Do based on a group's interests and preferences
  • Ask questions in Natural Language about the recommended activities to make research faster
  • Upload images from your device's gallery into the application
  • Automatically tag members of the groups in a shared album within the app
  • Unknown members in pictures are grouped together for labeling if they weren't a part of the group
  • Search/Filter images using AI facial detection with all images across groups that the user is in

How we built it

Our application is built using Flutter and Dart for the user interface. For our backend, we developed a NodeJS server that is hosted on the cloud. Our optimal destination computation gathers its data from various Google Maps APIs and endpoints but is then put through our algorithm to enhance the overall route. Our facial recognition algorithms for friends are implemented using a combination of Google Cloud's Vision API, Semantic Searching, and Python's machine learning libraries. Our Question-and-Answer NLP model for learning more about suggested activities was a BERT model that was developed using PyTorch as a machine learning framework.

Challenges we ran into

Finding a way to determine the "midpoint" of all parties has proven to be a very difficult task. It is not as simple as finding the midpoint of all the people, because people in different areas may have different driving conditions or access to highways, for example. At the same time, the midpoint between a group of people could (due to geographic conditions) end up in a body of water. We had to use the implementation of a land mask on an image of Earth planet with a decently high resolution to plot latitude and longitude and determine if we were on land or on water. After determining that we were in the water, we would still need an approach to get the midpoint onto land, while neutralizing the traveling time for individuals. In order to do this, we had to implement and derive a completely proprietary algorithm that would implement geometric fundamentals and calculus concepts to optimize the midpoint placement.

Accomplishments that we're proud of

From our research, it seems that there is not much precedence for finding optimal meeting locations for more than 2 people. We came into this 36-hour hackathon with the goal of at least coming up with a solution and developing a minimum viable product around that solution. However, we exceeded these goals by a large margin; not only have we solved the problem with a rather effective solution, but we have also been able to develop a product around it that would greatly help a group of friends like ourselves. We think we are taking great strides in the right direction of solving this problem with a heuristic solution, and this idea is a core aspect of our project. To give you a sample of the effectiveness of our algorithm, the app is capable of planning a trip among five different people, equalizing their driving distance within 10 minutes of each other; it is also capable of finding a place between Maine and Florida (despite the midpoint originally starting in the Atlantic Ocean), with an accuracy of both routes arriving at the midpoint within 3 minutes of each other.

What we learned

We learned a surprisingly high amount of things about geography and what it really takes to develop an algorithm that needs to work around natural and man-made structures. This was actually something we were thinking of ways to locate the optimal meeting point, as we have to work around roads, geographical features of the area, actual things to do with friends, the group members' locations, the group's preferences, and so much more. We gained some experience with some facial detection libraries in combination with semantic searching to help with organizing and sorting the pictures. and LLMs for understanding and answering questions. As a group of friends, we also got to think about our own behaviors when planning trips, as well as what we know about our other friends in order to come up with features that are effective.

What's next for Squadzz

We have a ton of new features that we can't wait to implement for Squadzz. Something we thought would be fun with larger groups is introducing the concept of voting on what to do. A user could set up a poll in the chats to gauge interest in a certain activity. We would also like to let users enter their availability to facilitate planning/scheduling events. Our algorithm, while it worked extremely well for 36 hours of progress, still has a long way to go to be completely optimized computationally.

Built With

Share this project:

Updates