About The Project
SaveMyGrade is a course discovery tool built to help SFU students find classes that are more manageable and more likely to support strong grades.
What Inspired Us
Course planning at SFU often feels like guesswork. Students ask friends, search old Reddit threads, or skim scattered reviews to estimate workload and difficulty. We wanted to turn that fragmented process into a structured system that gives students clearer, data-backed guidance.
How We Built It
We built SaveMyGrade as a full-stack app:
- Data Ingestion: Scraped SFU professor/review data from RateMyProfessor and organized it by department.
- Catalog Validation: Compiled a master SFU course list (2025–2026) from calendar pages and used it to filter out invalid/non-SFU recommendations.
- Recommendation Engine: Parsed course-level review signals (difficulty, rating, comment sentiment, review volume), then ranked the classes.
- AI Layer: Integrated Gemini to improve ranking quality and generate more useful recommendation reasoning.
- Frontend UX: Created a search flow with fixed school input (SFU only for now), department filtering, taken-class exclusion, and saved/taken tabs.
Mathematically, we treated recommendation quality as a weighted scoring problem, and we used a Machine Learning pipeline to analyze the risk factor of the reviews.
Challenges We Faced
- Data Quality Issues: Duplicate professors, placeholder departments, and inconsistent course-code formats (
CMPT120vsCMPT 120). - Source Reliability: Some reviews referenced classes that did not belong to SFU, so we had to enforce catalog cross-checking.
- Scraping Stability: Intermittent 403/rate-limit behavior required retries, pacing, and resumable scraping.
- UI Behavior Bugs: Scroll-state and animation interactions caused hidden-content edge cases that we had to debug and refactor.
- Trust vs Recall Tradeoff: Stricter filtering improves credibility, but can reduce result count.
What We Learned
- Good recommendations are mostly a data cleaning and validation problem before they’re an AI problem.
- UX clarity matters as much as model quality: users need transparent signals (review count, difficulty, source confidence).
- Building robust pipelines requires resumability, defensive parsing, and strict validation checkpoints.
- Hybrid systems (rules + model) often outperform “model-only” approaches in reliability and explainability.
What's Next For SaveMyGrade
As of right now, this app only works with courses from Simon Fraser University. Our next step would be to acquire data on other schools in British Columbia, such as UBC or UFV, and create functionality for the departments at those schools. We could also integrate more data sources than just RateMyProfessor, such as grade average for classes, if those schools provide such information.
Log in or sign up for Devpost to join the conversation.