Inspiration
Spl-it was born out of personal frustration. As college students, it is a common experience to have groups for assignments or projects that have misaligned values and fail to work together. Furthermore, regarding one of our group members in particular, cost-splitting has been very difficult for their family, since their parents grew up in Canada and their Canadian bank has not yet implemented Venmo. While brainstorming personal problems that our software can solve, we realized that splitting things was, in general, a major difficulty that we believed computational algorithms could solve. That inspired us to create Spl-it.
What it does
Spl-it is a combination of several utilities, including a team creator (which splits people into optimal teams based on results on a five-factor personality test), task splitter (which gives you an amount of time to spend on a task), and check splitting (which splits a cost among members of a group).
How we built it
Spl-it's team creator implements a genetic algorithm that creates random teams, and then forces them to "reproduce"—to form a third team composed of random selections from the two parent teams. That third team then may undergo random mutations wherein a couple of members are re-organized to introduce more diversity to our pool of options. Then, we measure the fitness of each team (currently, that is based on similarity in two factor scores), sort it, and crop our holding list for "survival of the fittest". The task splitter relies on a random walk function that can be configured to have different variation scores. The function outputs n values that sum to the total amount of time allotted, where n is the number of tasks inputted, but the higher the variation, the more chaotic those values would be. The check-splitter is probably the simplest utility as it functions by dividing price by people—however, we still believe it can be very useful given the frequent need for cost splits.
Challenges we ran into
One of our biggest challenges was front-end implementation, as none of our team members have extensive front-end experience (or backend or even middle-end experience, if I'm being totally honest). We are currently developing a website as a host for all of these services, and it is proving to have a very difficult learning curve. At the moment, our program runs directly from the command line, and while we designed it to be accommodating and user friendly within the limitations of that interface, our attempts to break free of those limitations through our own customizable website have proven to be our biggest challenge.
Another implementation challenge was making two teams reproduce for our genetic algorithms. The genetic algorithm must choose random segments from both parents, and it was possible that we would have a scenario where it would choose component x from parent a, component y from parent b, and then potentially reach a point where it would have to choose between parent a's component y and parent b's component x. To resolve that, we keep a HashSet to quickly determine if we are adding a duplicate, and, if we are, then we don't add anything but make a note of that location so that we can fill it with missing data later.
Accomplishments that we're proud of
As relatively inexperienced hackers, we are proud that we were able to see this project through, going from a raw idea to something genuinely useful!
What we learned
We learned a lot about front-end design and experimented with implementing APIs, even though we had trouble implementing these in the final product. We also became more accustomed to general project development, which we believe will help us with future pursuits as well as maintaining Spl-it.
What's next for Spl-it
If Spl-it proves to be valuable for customers, we will continue working with the front-end to migrate it to a more user-friendly platform. We will also integrate an actual ability to pay through the site for split items instead of just calculating the splits—we are hoping to partner with retailers to curate certain items to recommend for gift-shopping and allow the gift splitting for those items directly through our site. We also hope to expand the team-maker to allow more customizable criteria for groups, and hopefully streamline the currently tedious data entry process. And we want to modify our time split so that, rather than merely outputting amounts of time to spend on a project, it functions as a schedule organizer. Some other ideas that we have had for future services include tutoring (where the tutor teaches a group and the group splits the payment, so a group of 15 might only pay $1/hour for a $15/hour tutor).
Log in or sign up for Devpost to join the conversation.