Thumbnail image

Berkeleytime Notifications

At Berkeley, courses often fill quickly, leaving students unsure when to act. Without alerts, students must constantly monitor enrollment pages to catch openings as classes fill up during Phase 1 and Phase 2 registration. To address this, I designed the core MVP and led a team to build a notification feature for Berkeleytime, UC Berkeley's largest course discovery platform, allowing students to respond immediately when key enrollment milestones are reached.

Role

Design Lead

Timeline

Sep 2025 - Dec 2025

Team

1 Design Lead

1 Engineering Lead

1 User Researcher

3 Engineers

Problem

How might we help UC Berkeley students make informed enrollment decisions despite limited and rapidly changing course availability?

Impact

Set to launch in Spring 2026, Berkeleytime notifications will address one of the biggest student pain points: constantly refreshing course pages during enrollment period. By delivering real-time enrollment updates, we estimate it will help 30k+ students secure desired classes and make more confident schedule decisions.

Course Enrollment is an Inefficient Process

With over 30,000 undergraduates competing for limited spots in high-demand classes, UC Berkeley’s enrollment process is often stressful. During Phase 1 and Phase 2, many students lack visibility into how quickly classes are filling due to the absence of live enrollment updates. As a result, students repeatedly refresh enrollment pages to monitor availability, creating a time-consuming and inefficient process that increases stress and uncertainty.

Current Challenges in Course Enrollment

I collaborated with our user researcher to analyze 167 survey responses and conduct 6 interviews, uncovering Berkeley students’ key challenges with course enrollment.

78% of students manually refresh enrollment portals multiple times a day during course enrollment period

During Phase 1 and Phase 2 enrollment, seats in high-demand classes often open only briefly before filling again. This constant monitoring highlights a lack of real-time visibility into seat availability, increasing cognitive load and uncertainty.

61% of surveyed students said their biggest course enrollment challenge was was getting into their desired classes.

Without threshold alerts, students have no early signal that a class is nearing capacity and often only realize the urgency once enrollment reaches 90% or the class has already closed.

55% of surveyed students review historical enrollment trends before course enrollment

Many students research enrollment patterns ahead of time to predict which classes will fill quickly and which can be enrolled in later because they lack live feedback regarding current enrollment.

Meet Alexis

Alexis, one of 30,000+ UC Berkeley undergraduates competing for limited seats in high-demand classes, relies on Berkeleytime to plan her schedule. When a class reaches capacity, she’s forced to constantly refresh enrollment pages to monitor seat availability, a tedious, inefficient process that is stressful and makes enrollment feel like a race rather than a plan. Her experience highlights the challenges many students face in navigating a system with limited real-time visibility.

Framing the Product Opportunity

How might we help UC Berkeley students make informed enrollment decisions despite limited and rapidly changing course availability?

System Foundations

Highlights from Our Component Library

User Research

These UI components were designed to be flexible, accessible, and consistent across all product teams. Each one follows a shared token system and includes guidelines for usage, states, and responsive behavior.

System Foundations

Highlights from Our Component Library

User Research

These UI components were designed to be flexible, accessible, and consistent across all product teams. Each one follows a shared token system and includes guidelines for usage, states, and responsive behavior.

Iterative Exploration

Through iterative exploration, we generated multiple concepts, tested them with users, and refined our designs based on feedback to better address enrollment challenges.

Before: No Visible Way to Undo Unfollow

The original design confirmed when a student stopped receiving notifications for a course with a subtle toast, but lacked a clear way to undo the action. Without a visible unfollow path, users risked accidental clicks and confusion.

After: Clear Undo with Confirmation

I added a confirmation modal when unfollowing a course that prevents mistakes with a confirmation step and uses semantic color to clearly signal a destructive action.

Before: Confusing Sidebar Design

I initially explored adding a search bar to the notification settings page and displaying tracked courses in a sidebar; however, user feedback showed this added unnecessary complexity and confusion.

After: Simplified, Centralized Notification Settings

I redesigned the profile page to centralize all course notification settings, removed the search and tracked courses in the sidebar, and included signing up for alerts for Phase 1, Phase 2, and the extended add/drop deadline.

Before: Visual noise from Repeated Icons

The original design used a bright blue, high-contrast bell icon, which created significant visual noise because it was repeated throughout the catalog page, making it overwhelming and difficult to scan.

After: Easy-to-scan Catalog with Better Feature Visibility

I replaced the high-contrast color with a more subtle style to reduce visual noise and make long course lists mentally easier to scan. I also added a clarifying "Notify Me" label for the expanded course view, improving feature visibility.

Bridging Design and Code

I collaborated with engineers to define notification triggers and edge cases, and helped implement the notifications frontend by building reusable UI components and handling states such as loading, empty, and error conditions, help oversee design decisions translate cleanly into code.

Final Prototype

Looking Back

Leading with Clarity and a Collaborative Mindset

I learned that good leadership comes less from directing decisions and more from creating an environment where people feel comfortable asking questions. Taking the time to address questions, and making sure teammates have the tools and context they needed fostered an open and supportive team culture, ultimately building team trust.

Bridging Design and Code

Working directly in code gave me a deeper understanding of which design decisions actually work and which interactions break down in practice. Seeing my designs come to life through code, and debugging when they didn’t, made me a more grounded, intentional designer and sparked a deeper appreciation for engineering as a core part of the design process.