Built With MongoDB: Coursedog

Siya Raj Purohit


Nicholas Diao and Justin Wenig had just joined the undergraduate program at Columbia University and were excited to take their first computer science class. They registered and, to their delight, were accepted into the course. When they showed up to the first class, however, they were greeted with distressing news: the class was double-booked. As they quickly discovered, their situation was hardly unique. Universities, such as their own, often lack the software to manage the complexities of class scheduling. They decided to fix that.

What started as an undergraduate project to solve a local problem turned into Coursedog, a Y Combinator backed curriculum success platform for higher education. Coursedog works with more than 70 universities to modernize the way they propose, schedule, and publish their classes to students.

Coursedog has raised $4.2M in funding and been building with MongoDB since Day 1. Both founders were recently named to Forbes 30 under 30.

In this edition of #BuiltWithMongoDB, we talk to Nicholas about being a student founder, building prototypes to find product-market fit, and growing with the MongoDB platform.

Photo of Nicholas Diao and Justin Wenig

Siya Raj Purohit: Coursedog started while you were still in college. Let’s talk about how you came across the problem your platform is built to address.

Nicholas Diao: My co-founder Justin and I both wanted to be in a specific CS class. On the first day of class, we had our textbooks, our coffee, and our snacks, and were ready to go - and then we realized the professor wasn’t there. It turns out the professor had been double-booked.

As aspiring CS majors, we thought “how can this be a problem of the 21st century?!”

We assumed there was some automated system that ensured smooth scheduling for university classes. But it turned out that what we thought would be an automated system was a couple of overworked administrators with Microsoft Excel spreadsheets in a dark back room where they had to build the schedule themselves. And, of course, that process is error-prone and not the best use of time for university administrators.

Justin and I spoke to around 400 to 500 university administrators to better understand the scheduling process, which is far more complex than it appears and has an immense impact on students and their ability to get the courses they need to learn and graduate. We realized this was a problem that was mostly ignored.

Columbia Law School joined us as a design partner, and we started building a simple prototype to address this problem and make the system better for all universities.

SRP: What was your initial prototype like?

ND: We used simple HTML, CSS, JavaScript, and Node.JS server with a MongoDB database. Part of the reason we chose MongoDB is its ability to be really flexible, because we were learning and iterating day after day. A few months later, we ended up signing our first official school contract at Brigham Young University based on good references from Columbia Law School.

In the winter of 2019, we entered Y Combinator. After we graduated from YC, we raised $4M in Series A funding, and now we’re working with more than 70 institutions and have released three additional products focused on curriculum management, event management, and catalog management. We have a team of more than 40 people across three countries.

SRP: What does your tech stack consist of?

ND: It's the MEVN stack: MongoDB, Express.js, Vue.js, and Node.js. We use AWS for architecture.

SRP: When you started building Coursedog, you were still a CS student. How did you decide to choose MongoDB?

ND: There are a couple of reasons why we started building with MongoDB. Early on, we wanted to quickly build demos that our customers could provide immediate feedback on.

We knew we were tackling a complex problem and we didn’t know what our ultimate data structure would be, so we wanted a database that could be as flexible and iterative as possible and that ended up being a NoSQL database that was cloud-hosted. MongoDB came to the top of that list.

It was a great decision, because we made many modifications to our data model and MongoDB managed the complexity of our solution while being easier than any other database. What got our team to really fall in love with MongoDB was the power of what we were able to do with it . There are relationships between different data objects (for example, for an economics class, managing all the components you need to know: room size, class size, department, and so on). We’re able to do very powerful joins in the SQL database and complex filters. We can build out everything we need in an iterative fashion, and MongoDB has all the functions to enable us to build more complicated features over time.

We once spoke with a MongoDB technical advisor too: aggregation pipelines were new to us, and our conversation gave us great footing for getting started. From there on, the MongoDB documentation has been detailed enough to help us navigate scaling challenges.

SRP: Now you’re used by more than 70 universities. How has your experience been scaling up with MongoDB?

ND: We’ve found it really easy to scale because of the seamlessness and flexibility of the product and its easy communication. We have a clear sense of how much data we’re using and what the performance metrics are, and we get timely notifications.

We really appreciate that if you hit 80% of a specific metric, MongoDB will send you a notification. This has been hugely helpful to our DevOps and infrastructure folks for monitoring. We’ve actually taken some cues from that: if you have 80% of a room booked, we send a notification to our users.

As we’ve scaled and worked with an increasing amount of data (typically there are between 150 and 200 data types for each school), we have found that MongoDB has the flexibility and customizations we required.

This is sometimes a contrast to AWS, our architectural tool. Doing the same things in AWS is much harder. For example, to change notifications (or even set them up), you have to read AWS’s incomprehensible online documentation, and then there are about 30 different places you can go to make that change on the site. In contrast, MongoDB makes it so easy to manage the back-end so we can focus on building the business.

SRP: What advice would you have for college students who aspire to build their own company and move into the CTO role for that company?

ND: The most important skill to pick up during college is collaboration. The way schools evaluate students is all content-focused (test, papers, problem sets) but what really matters in your career is your ability to collaborate with other people.

I wouldn’t have gotten anywhere if Justin and I were not able to build a strong partnership and work with other smart, hard-working people to get Coursedog off the ground. For college students, I would say that in the long run, it doesn’t matter what grade you get on that problem set or lab; it matters if you’re able to work well with the people around you.

My second piece of advice is when building solutions, start small, start local, and start trying to solve problems for the people around you - as we did with Coursedog. The best companies come from solving personal problems and then building it out from there.

Looking to build something cool? Get started with the MongoDB for Startups program.