Berkeleytime

At a glance

Role
Product designer, scheduler redesign lead
Team
4 engineers
1 PM
Timeline
May to Dec 2025
Platform
Web

I led the redesign of the Berkeleytime scheduler, the tool 20K+ Berkeley students use every semester to plan their classes.

I started by surveying students on where course planning breaks down, then shipped the redesigned scheduler as a beta in one month. 90% of beta users prefer it to the old one.

Context

One place to plan a Berkeley semester

Berkeleytime is a student-built course planner for UC Berkeley, with the class catalog, grade distributions, enrollment data, and a scheduler in one place.

The scheduler was the hardest part to navigate. Finding a class happened in one place, while its grades and seats lived somewhere else. Discussions and labs were tucked inside each class, so clashes were easy to miss. And there was no simple way to try a different plan without rebuilding the one you had. With a new version of Berkeleytime on the way, it was the right moment to rethink the scheduler from the ground up.

Research

Asking students where planning breaks

I wanted to hear it from students first. I shared a short survey through Berkeleytime and banners around the site, asking how students plan a semester, which tools they jump between, and where they get stuck. Over two weeks, responses kept coming in, and I followed up by talking with a few students in person.

  1. Picking a class means checking three pages

    Before adding anything, students opened grades and enrollment in separate tabs to decide if a class was worth it.

  2. Conflicts show up too late

    Discussions and labs were easy to miss, so students often found clashes only after committing to a plan.

  3. Trying a new plan means losing the old one

    To test an alternative, students screenshotted their schedule or rebuilt it from scratch.

Root cause

Planning a semester is really comparing options, but the old scheduler only held one plan at a time and hid the information students compare with.

Solution

Three decisions that shaped the scheduler

  1. Grades and seats on every class

    Students were already deciding with grades and enrollment, just in other tabs. Putting the average grade and how full a class is right on its card lets them judge a class in the same place they add it, so no more checking three pages.

    Two class cards: SEASIAN R5B, B+ average, 100% enrolled, 4 units; PHYSED 1, A- average, 94% enrolled, 0.5 units
  2. The whole week before you commit

    Every lecture, discussion, and lab now sits on one color-coded week, so clashes show up while you’re still choosing instead of after. It replaced a view where sections were hidden inside each class.

    The weekly calendar: each class in its own color, with lectures, discussions, and labs labelled by room
  3. Try a plan without losing the one you have

    Before, testing an alternative meant screenshots or starting over. Generate, Compare, and Clone existed in early forms, so my job was redesigning them to be easy to find and use together. Generate builds possible schedules from your classes, Compare puts two plans side by side, and Clone copies a plan so you can experiment freely.

Outcome

Shipped in a month, preferred by 90%

Students every semester
20K+
To beta
1 month
Beta survey responses
400+
Prefer the redesign
90%

Before launch, I ran usability tests with Berkeleytime members from other teams, so the flows got fresh eyes from people who hadn’t worked on the scheduler. We released the beta in June, and 90% of 400+ beta survey responses preferred the redesign. We worked through that feedback and added smaller details like hiding classes before the full launch in September, then I kept iterating through December.

Reflection

Every feature has to earn its place.

The hardest part was holding back. Every round of feedback gave me new ideas, but a scheduler flooded with features stops being easy to plan with. I learned to check each idea against one goal, helping students build a semester they feel sure about, and to save the rest for later. Next time, I’d write that goal down on day one and share it with the team, so we could prioritize together faster.