DormSoup - GPT-Powered Eventbrite
A ChatGPT-powered campus event website that parses emails into time, locations and tags, totaling ~960 MIT student users.
2024-08-20
Website link: dormsoup.mit.edu (needs MIT kerb to access)
Technologies: React, Next.js, TailwindCSS, PostgreSQL, ChatGPT
GitHub links: frontend, backend
Screenshots
Story
At MIT, students advertise campus events by sending emails to dorm mailing lists, called “dormspams.” These emails are all over the place, making it hard to quickly figure out what’s happening tomorrow or which events have free food. There are official event websites, but no one really posts there.
When ChatGPT came out, I thought, instead of hoping students would change their habits, we could take the emails they were already sending and automatically upload the events to a website. I shared the idea with my friend Chengyuan, and we both got excited.
We set up a Notion workspace, made a to-do list, and got to work. That summer, we’d come home from our internships, hop on Zoom, and do three hours of pair-programming. Chengyuan worked on the database, search, and connecting to the email inbox, while I worked on the UI, prompt engineering, and talking to Fiverr artists to iterate on designs for our logo and loading screen GIF.
Playing around with LLMs was fun, but it wasn’t always easy. One of our first problems was getting GPT-4 to figure out the datetime from emails correctly. It usually got the date right but always defaulted to 12:00 AM for the time. We fixed that by using chain-of-thought: extract the time of day first, then the date, then put them together.
Tagging events was another tricky part—GPT-4 would sometimes hallucinate and make up tags that didn’t exist. So, we made a multi-stage pipeline where it first summarizes the event, then explains why it should or shouldn’t have each tag, and finally gives us the tags. We even had it do this three times and then picked the tags that showed up in all three runs, just to be sure. To save money, we used GPT-3.5 to check if an email actually had an event, and then let GPT-4 handle the details like time and location.
In the end, we were glad we went with LLMs. There was another group trying to use Regex to do the same thing, but their progress was much slower because emails, being so unstructured, defy traditional parsing.