Perfect — here’s your writeup formatted properly in Markdown like that editor expects:


ClassMate — Course Scheduling That Actually Makes Sense

Inspiration

Every semester is the same mess.

You’re refreshing the course portal, flipping between tabs, checking Rate My Professor, trying to avoid 8 AMs, and texting your friends to see what they’re taking. The system technically works, but it feels like it hasn’t changed in 20 years.

The bigger issue is that your schedule shapes your semester. Bad time slots, exhausting back-to-backs, or poorly rated professors don’t just make life annoying. They affect your energy, focus, and sometimes your grades. Small decisions during course selection compound over four months.

We kept thinking: why does something that has such a big impact on academic performance feel so clunky?

Instead of clicking through dropdowns and manually testing sections for conflicts, what if you could just say what you want and get a clean, optimized schedule back?

That’s where ClassMate started.


Why It Matters

Course selection is not just administrative.

  • Better time distribution means less burnout
  • Better professor selection often means clearer instruction and fairer grading
  • Smarter spacing between classes improves focus and retention
  • Coordinating with friends can increase accountability and attendance

A well-built schedule sets the tone for the entire semester. ClassMate is not just about avoiding conflicts. It is about helping students make decisions that improve their odds of succeeding.


What It Does

ClassMate lets you build a schedule by describing it.

“First year CS courses, mornings only, good profs, and match me with Marcus.”

It generates a valid, optimized schedule instantly.

  • Understands normal language
  • Supports course packs for majors and common tracks
  • Integrates professor ratings directly into section selection
  • Matches you with friends so you can overlap classes
  • Optimizes across time, walking distance, professor quality, and seat availability
  • Lets you visually compare schedules side by side

It feels less like filling out a form and more like configuring something around your goals.


How We Built It

Stack: Node.js + Express backend. Vanilla HTML, CSS, and JavaScript frontend. No frameworks. Everything is written from scratch.

Scheduling Engine

At its core, this is a constraint satisfaction problem.

For ( n ) courses with ( k ) sections each, the raw search space is ( O(k^n) ). We prune aggressively.

Conflict detection

[ \text{conflict}(A, B) = (\text{days}(A) \cap \text{days}(B) \neq \emptyset) \wedge (\text{start}(A) < \text{end}(B)) \wedge (\text{start}(B) < \text{end}(A)) ]

Walking feasibility

[ \text{start}(B) - \text{end}(A) \ge \text{walkTime}(\text{building}(A), \text{building}(B)) ]

Scoring function

[ S = w_1 f_{\text{time}} + w_2 f_{\text{spread}} + w_3 f_{\text{walk}} + w_4 f_{\text{prof}} + w_5 f_{\text{seats}} ]

Every valid schedule is scored and ranked so the result is not just possible, but optimal for the user.


NLP Layer

The parsing is rule-based and deterministic.

  • Tokenizes input
  • Extracts course codes using regex
  • Maps phrases like “morning classes” to preference flags
  • Resolves friend names against the user database
  • Triggers course packs via keyword matching

If the user gives courses and preferences in one message, it generates immediately. No API calls. No hallucinations. Just logic.


UI

Custom dark theme built with CSS Grid and custom properties.

  • 6-column schedule grid
  • Precisely positioned class blocks
  • Subtle accent glow for depth
  • Clean, consistent panel design

We redesigned it multiple times to make it feel like a real tool instead of a demo.


Challenges

  • Seeded demo users initially had impossible overlapping schedules, which required pairwise conflict auditing
  • Early versions looked like a generic AI wrapper, so we stripped out heavy branding and visual noise
  • Making rule-based NLP feel natural required handling compound requests and smart defaults

What We Learned

  • A well-pruned constraint system can replace a lot of unnecessary complexity
  • UI density and small visual decisions matter more than expected
  • Preloaded demo data makes a product feel alive
  • Better course decisions lead to better semesters

What’s Next

  • Real university API integration
  • Live professor data
  • Waitlist monitoring with notifications
  • Multi-semester planning with prerequisite validation
  • Mobile-first redesign
  • Optional LLM layer for fully freeform scheduling

If you want, I can also compress this into a shorter Devpost-style version that fits strict character limits.

Share this project:

Updates

Submission history