Inspiration

sis9.rpi.edu — the website that made us realize course planning should not require deciphering ancient runes or bracing for emotional damage.

What it does

T.R.R.A.M is a tool that scrapes, cleans, and organizes RPI’s course catalog into a beautifully searchable, filterable interface.
Students can explore courses, compare credits, check prerequisites, and plan schedules without experiencing a mild existential crisis.

How we built it

We built a full pipeline:

  • A Python scraper that automatically collects course pages from the RPI catalog.
  • A normalizer that cleans, parses, and structures messy course information.
  • A PostgreSQL database + Python backend that stores and serves all the data.
  • A modern frontend (React/Vite) that displays everything in a clean UI that doesn’t look like it came from 1998.

There was a lot of JSON. More JSON than anyone should ever see in one weekend.

Challenges we ran into

  • The RPI catalog HTML structure is held together with duct tape and vibes.
  • Credit ranges like “1 to 4” attempted to destroy our parsing logic.
  • PostgreSQL repeatedly said “connection refused” and honestly, same.
  • GitHub Pages was personally offended by our folder structure.

Every part of the system fought back at least once.

Accomplishments that we're proud of

  • The pretty colors. Extremely important.
  • Clean, consistent course data that no longer looks like it survived a tornado.
  • A UI that students won’t recoil from.
  • A working end-to-end pipeline from catalog → JSON → database → frontend.

What we learned

  • How to scrape and normalize real-world messy data.
  • How to build a full backend → database → frontend architecture.
  • That PostgreSQL errors are inevitable and possibly karmic.
  • That hackathon sleep schedules are an illusion.

What's next for T.R.R.A.M

We serve at the pleasure of the RPI student body.

More seriously:

  • Degree requirement tracking
  • Automatic schedule generation
  • Course recommendation features (“students who took this also survived…”)
  • Maybe one day… replacing the functionality of sis9 entirely. We can dream.
Share this project:

Updates