Technologies Used

Project Overview
BruinPlan is a comprehensive web and mobile application that enables UCLA students to plan their quarterly schedules and track prerequisites across their entire degree program. The platform addresses a critical need at UCLA where students often struggle to navigate complex degree requirements and prerequisite chains.
I built BruinPlan because I struggled with enrollment and course planning, too. The cluttered registrar's website made understanding degree requirements a hassle. I initially planned to build BruinPlan just for myself and my two majors, but released it to the public after scraping the necessary data for all 130+ majors at UCLA.
Key Statistics

Technical Architecture
Data Collection Pipeline
The foundation of BruinPlan is a robust data collection system built with Puppeteer, Python, and Google Gemini API. This system:
- Scrapes course information from the UCLA registrar's website
- Normalizes data across different formats and departments and saves as JSON
- Implements rate limiting and error handling for reliability
- Processes over 14,000 courses and their complex prerequisite relationships
Frontend Implementation
The user interface leverages Svelte and TypeScript for:
- Real-time automatic prerequisite validation
- Drag-and-drop quarterly planning interface
- Responsive design for desktop and mobile
- Interactive graph visualizations with Cytoscape.js

Technical Challenges & Solutions
Challenge 1: Data Collection at Scale
Problem
UCLA's internal API course is not open to the public. UCLA's course catalog contained over 14,000 courses across 130+ majors, in various formats and locations.
Solution
Reverse-engineered UCLA website. Built a robust scraping system with error handling, rate limiting, and data validation.
Data Collection Pipeline
Recognition] D --> E[Courses Database] B --> F[Majors List] F --> G[Major Requirements] G --> H[AI Requirement
Formalization] H --> I[Major Requirements
Database] E --> J[BruinPlan
Unified Database] I --> J style A fill:#f9d5e5,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style B fill:#ffd6ba,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style C fill:#f6a6b2,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style D fill:#f3b0c3,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style E fill:#f2c6de,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style F fill:#a8e6cf,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style G fill:#b2f7ef,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style H fill:#cce2cb,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style I fill:#d6eadf,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000 style J fill:#d5f5e3,stroke:#333,stroke-width:3px,rx:15,ry:15,color:#000
Automated pipeline for collecting and processing UCLA's course and major requirement data
Challenge 2: Complex Prerequisite Logic
Problem
Course prerequisites often involve complex conditional logic (AND/OR relationships, choose N from M, recursively nested choices, etc.) that needed to be parsed and visualized.
Solution
Developed a canonical JSON format for prerequisite chains, then created a graph-based visualization using Cytoscape.js to make dependencies clear.
Challenge 3: Performance Optimization
Problem
Loading large amounts of data, rendering large course graphs, and handling real-time prerequisite validation could cause performance issues.
Solution
Implemented efficient algorithms including modified topological sorting for prerequisite chains and optimized rendering techniques for large datasets.

Future Enhancements
Planned improvements include:
Real-time seatcount tracking
to show course availability
AI-powered validation
to catch errors a rule-based system might miss
Professor rating integration
for better course recommendations
Predictive analytics
for quarterly difficulty predictions
BruinPlan represents the intersection of data engineering, user experience design, and educational technology. By solving a real problem faced by tens of thousands of students, it demonstrates how technology can democratize access to information and improve academic outcomes.