CourseCompass injects an "Analyze" button into Hoos' List/SIS course pages and returns a short, sourced summary for a professor/course (RateMyProfessors + Reddit + GitHub). It's a lightweight assistant to help students pick sections with better fit and workload visibility.
If you're like me and you don't want to open 15 tabs just to figure out if a section is a good idea, this puts the “should I take this?” signal directly where you already register.
- Chrome Web Store listing: https://chromewebstore.google.com/detail/agmlnkmkjbjkkhjejoodckjgmafnnifm?utm_source=item-share-cb
- Extension folder:
/extension - Backend folder:
/backend
- Adds an Analyze button next to instructors on Hoos' List pages.
- Aggregates public signal from:
- RateMyProfessors (GraphQL)
- Reddit discussion threads
- GitHub repos (nice for project-heavy classes)
- Returns a short summary + any numeric rating we can confidently extract.
- Server-side caching (Postgres) to avoid repeated scraping.
- Overview
- Features
- Architecture
- Install & run locally
- API
- Troubleshooting
- Project structure
- Contact & privacy
- Client: Chrome extension (Manifest V3) — injects buttons and shows a tooltip with results.
- Server: Spring Boot backend — orchestrates scraping, aggregates results, caches them in PostgreSQL.
High-level request flow:
- You click Analyze on Hoos' List.
- The extension sends
{ prof, course }to the backend. - Backend checks cache → scrapes on cache miss → stores result → returns JSON.
Chrome extension:
- Open
chrome://extensionsin Chrome. - Enable Developer mode.
- Click Load unpacked and choose the
extension/directory.
Backend (local):
- Edit
backend/src/main/resources/application.propertiesor set theDB_*environment variables. - From repo root:
cd backend
mvn spring-boot:run- Health:
http://localhost:8080/health
When testing the extension locally, change API_BASE in extension/content.js to http://localhost:8080/api/v1/analyze and reload the extension.
Query params:
prof(required): professor name (usuallyLast, First)course(required): course id likeCS 3240
Example:
curl "http://localhost:8080/api/v1/analyze?prof=Sherriff,%20Mark&course=CS%203240"Response (shape):
professorName: stringcourseId: stringavgRating: number | nullsentimentSummary: stringredditTopThreads: string[]githubTopRepos: string
- Make sure the extension is loaded from
extension/and reloaded after changes. - Confirm you’re on a supported page:
hooslist.virginia.eduorsis.virginia.edu.
- Open DevTools → Console and look for a network error.
- Confirm the backend is reachable:
- Local:
http://localhost:8080/health - Deployed:
https://course-compass-api.onrender.com/health
- Local:
- Check Render logs for DB connection errors.
- Ensure env vars are set (especially
DB_PASSWORD).
/extension # chrome extension (manifest + content script)
/backend # Spring Boot API (controllers, services, model)
Dockerfile
render.yaml
Aryan Thodupunuri — https://github.com/AryanThodupunuri
Privacy: this extension reads professor names and course identifiers from Hoos' List pages and sends them to the CourseCompass backend to compute a short summary. No personal identifiers or browsing history are collected.
Full policy: PRIVACY_POLICY.md
Licensed under the MIT License.
