RateMyGaucho

RateMyGaucho (Chrome Extension)

RateMyGaucho enhances UCSB GOLD to 1,200+ students per month by showing professor ratings and course data directly on course result pages. It works offline and preserves your privacy by using a local dataset.

Demo Video: https://www.youtube.com/watch?v=fl7-icSAves

Novel Features

Installation

  1. Download the latest release from the Releases page.
  2. Extract the ZIP file.
  3. Open Chrome, go to chrome://extensions, and enable “Developer mode”.
  4. Click “Load unpacked” and select the extracted folder.

Building

To create a distributable ZIP file, run the appropriate script for your OS:

The build script bundles the unified dataset and content script into dist/RateMyGaucho.zip, which is ready to upload to the Chrome Web Store.

Data Source

The extension ships with courses_final_enrollment.csv as its only data source. Every rating, review, and course record comes from this file, ensuring consistent results across the UI. When updating data, replace this CSV and rebuild the package.


Backend Architecture

The backend/ directory contains a production-grade Python API that powers search, analytics, and data ingestion.

Tech Stack

Layer Technology
API Python 3.12 · FastAPI · Pydantic v2
Database PostgreSQL 16 (SQLAlchemy ORM, connection pooling)
Search Elasticsearch 8.17 (full-text, fuzzy matching, filters)
Cache Redis 7 (cache-aside, 300 s TTL, 128 MB LRU)
Messaging Apache Kafka 3.8 KRaft (no ZooKeeper)
Observability OpenTelemetry → Jaeger (distributed tracing)
Orchestration Docker Compose (all services with health checks)

Key Components

Quick Start

# From the repo root
docker compose up --build -d

# API at http://localhost:8000
# Jaeger UI at http://localhost:16686
# Elasticsearch at http://localhost:9200

API Examples

# Health check
curl http://localhost:8000/api/v1/health

# Search courses
curl -X POST http://localhost:8000/api/v1/search/courses \
  -H 'Content-Type: application/json' \
  -d '{"query": "machine learning", "department": "CMPSC"}'

# Analytics
curl http://localhost:8000/api/v1/analytics

Running Tests

cd backend
pip install -r requirements.txt
pytest

Contributing

Contributions are welcome! Please fork the repository and submit a pull request.

License

MIT © 2025