Inspiration
As aspiring startup founders, we are always looking for pain points and problems to solve. As such, we decided to ask our professors for the problems they faced. But no matter how hard we tried to meet with them, we could never get a meeting scheduled due how difficult it is to coordinate meetings across 4+ unique schedules. It was only 5 weeks later that we actually got to meet with our professor, but more importantly, had an epiphany to use AI to do annoying, tricky scheduling for us. And the more we asked around, we found that professors specifically hate having to schedule 10+ people research meetings because of how hard it is to schedule meetings.
What it does
Picture this: you are a professor and you need to meet with 10+ of your research students (our prof has this problem). Just tell TimeSync to schedule a meeting with John, Sarah, Brady, etc.. and it'll automatically find the best time available and put it on all of your Google calendars. Seamlessly. No more finicky when2meets or horrid email chains.
How we built it
Our project was constructed from the ground up using a robust stack of modern web technologies. We chose Next.js as the foundation for its SSR capabilities and seamless integration with React, enhancing the overall user experience and performance. For our database and ORM, we integrated Prisma with Supabase, leveraging Supabase's scalable backend services and built-in authentication to secure and manage user data efficiently.
The core feature, vector search, was implemented using Convex, enabling us to perform sophisticated queries to find optimal scheduling slots based on user availability and preferences. This choice allowed for a more dynamic and intelligent matching process, significantly improving the scheduling experience.
To ensure a high degree of interoperability and maintainability across our server and client-side code, we utilized fully typed server actions. This approach guaranteed type safety and facilitated easier development and debugging by making our codebase more predictable and less prone to errors.
Additionally, we embraced the power of AI in our development process by using v0.dev for generating UI components. This innovative tool accelerated our UI development, allowing us to quickly prototype and refine our application's interface based on AI-generated suggestions, which were then customized to fit our specific needs and design guidelines.
By combining these technologies, we built a comprehensive solution from scratch, designed to address the complexities of scheduling for users by offering a seamless, integrated experience that leverages the best of modern web development and AI innovations.
Challenges we ran into
We had lots of issues with configuration. Whether that be through being banned from AWS on Stanford’s public wifi, or having issue setting up authentication with Supabase, many hurdles caused us to lose massive amounts of time. With Supabase specifically, we had trouble accessing our user session on both the frontend as well as the backend. Additionally, this was our first time using OpenAI’s function calling functionality. As such, we only found one small example by OpenAI on how to implement function calling, but besides that, there was nothing, and we had to try many different config files to get it working properly.
Accomplishments that we're proud of
We are proud of how simple our product is. Just tell it to schedule a meeting for you, even if its with 30 people, and it’ll do it. Our UI is clean and our product is easy to use, and most importantly, it solves a problem we and many others have. On the technical side of things, we thought that it was amazing how our LLM is able to interact with all aspects of our app; whether it be our frontend talking to our user, or literally querying our backend and extracting Google provider tokens to create calendar events for our users. We never anticipated that the LLM could reach outside of its container and interact on the full stack.
What we learned
One of the main things we learned was how to work with vector embeddings. It was really cool to apply a mathematical side of AI to our calendar data in order to find the best We learned a lot about how to work with LLM. Specifically, getting an LLM to extract pieces of data from what our user types, and feeding it into a function that we can use to actually schedule meetings was cool. Another thing we learned was how to get an LLM to call functions for us and to query our data for us. We wanted it to be so easy for our users to schedule meetings that we want them to just mention the names of the individuals who they want to meet with, and our LLM will be able to find those people in our database and access their google calendars for them, scheduling meetings accordingly.
What's next for TimeSync
In the future, we would like to fine tune our model in order to understand more scheduling prompts from users. Additionally, we would like to add a Stripe integration in order to accept payments, as we can see this being a Software as a Service startup, competing with the likes of Calendly.
Built With
- convex
- nextjs
- openai
- postgresql
- prisma
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.