← Back to all projects

Bayesian ML · Education

ProfInsight

PythonFastAPIReactBayesian MLVite

RateMyProfessors gives you a number. ProfInsight gives you confidence intervals on that number, detects whether the professor is getting better or worse over time, classifies review sentiment across five teaching dimensions, predicts your likely grade, optimizes your entire semester schedule, and matches professors to your learning style. All through original statistical modeling, not LLM summarization. I implemented three Bayesian ML models from scratch in pure Python with no external ML libraries. A Beta-Binomial posterior model for confidence-aware quality ratings that accounts for sample size. A Naive Bayes classifier that categorizes reviews into lectures, grading, workload, approachability, and exams. And a Gaussian Process Regression with an RBF kernel that detects rating trends over time with uncertainty bands. The scraper hits the RateMyProfessors GraphQL API with parallel fetching, retry logic, and rate limit handling. The backend caches aggressively and refreshes all data automatically every week through GitHub Actions. Currently serving 29 universities with over 100,000 reviews.

What it does

Three Bayesian ML models implemented from scratch in pure Python, no sklearn or scipy

Beta-Binomial posteriors for confidence-aware ratings that account for sample size

Naive Bayes sentiment classifier across five teaching dimensions (lectures, grading, workload, approachability, exams)

Gaussian Process Regression with RBF kernel for rating trend detection over time

Semester optimizer that finds the best professor combination based on your preferences

Student fit quiz with Bayesian matching against all professors

Side-by-side professor comparison with radar charts

Red flag detection for declining ratings and poor reviews

Parallel scraping with ThreadPoolExecutor, exponential backoff on rate limits

Automated weekly data refresh via GitHub Actions

29 universities, 3,000+ professors, 100,000+ reviews

Tech stack

ML ModelsBeta-Binomial, Naive Bayes, GP Regression (all from scratch)
BackendFastAPI, LRU cache, IP rate limiting, security headers
FrontendReact 18, Vite, Tailwind CSS, Recharts
ScrapingRMP GraphQL API, ThreadPoolExecutor, retry with backoff
CI/CDGitHub Actions (weekly scrape + auto-deploy)
HostingVercel (frontend), Render (API)
LanguagePure Python (no ML libraries)
← Back to all projects