brunosearch.com is a course search engine for Brown University. Users can insert a rough description of what they're looking for in a course, which is then transformed into a semantic embedding powered by OpenAI. Search terms don't have to be precise, examples include "how to make sick beats" or "a class on the intersection of art and technology."
As registration looms near or shopping period is in full swing, I've often found myself frantically searching for a fun course to offset a painful looking shopping cart. Groupchats get flooded with messages like "does anyone know a fun class to take?" or "what's a class that's not too hard but also interesting?"
Brown already has a number of tools to help out here, like The Critical Review, BurntOutAtBrown and of course, CAB. While these are great resources, it's not always easy to find classes that are fun and aligned with my interests. I wanted to build something that would allow searching for courses in a more natural way, without having to know exactly what I'm looking for -- just like how I'd ask a friend for recommendations.
Brunosearch is a custom, distributed search engine written in Rust, using an in-memory Redis vector database for similarity search. The embedding is powered by OpenAI's text-embedding-3-small model, which scores well on most benchmarks and simplifies deployment in the cloud. The frontend is built in Svelte and TailwindCSS. The entire app is hosted on Fly.io for easy deployment and scaling.
Created by Komron Aripov. I took a lot of inspiration from Eric Zhang's classes.wtf and Dispict projects. Much of the CAB scraping code came directly from BurntOutAtBrown's course scraper, which was a huge help.