Inspiration

Every registration week, students at Al Ain University (AAU) do the same thing: open the study plan PDF, open the guidance plan, and cross-reference them by hand to work out what they're allowed to take next. The PDFs are accurate, but they don't know what you have already passed, so they can't tell you what's blocking you, or whether one missed course pushes graduation back a whole semester.

Day to day it's no better. The timetable lives in one place, deadlines are scattered across course outlines, and nothing warns you that two midterms are at the same time on Friday until it's too late. We wanted one app a student opens every morning, for their day and for their degree.

What it does

Your day

  • Home: "Good morning, you have 3 classes today." The next class with a countdown and its room, today's priorities ranked by urgency, upcoming deadlines, and your CGPA at a glance.
  • Timetable and calendar: lectures, labs and tutorials with rooms and professors. Cancel or move a single class, add makeup classes, and see everything in month, week and day views.
  • Assignments and exams: ranked by deadline, weight and work left, with the reason shown. Import deadlines from a course outline or PDF, and review them before anything is saved.
  • Smart conflict detection: overlapping classes, exam clashes, too many deadlines on one day, tight changes between buildings, attendance near the limit. Every alert says what's wrong, why it matters and what to do.
  • Attendance: "How many classes can I still miss?", answered under your own university's rule.
  • CampusFlow and events: where your next class is, a directory of every room in your timetable, and university events you can add to your calendar.

Your degree

  • My Courses: every course is Completed, Taking now, Planned, Available or Locked, with a one-line reason for anything locked.
  • Semester Planner: a recommended next semester where every course says why it was picked, plus a full roadmap to graduation.
  • What if?: try a lighter load, summer terms, or postponing or retaking a course, and see exactly how your graduation date moves and which courses shift.
  • Degree Map: an interactive prerequisite graph. Tap a course to light up everything before and after it.
  • GPA and forecast: your CGPA on AAU's official 4.0 scale, best, expected and worst-case forecasts, and the grades you need for a target CGPA.
  • AI Coach: portfolio project ideas built on the courses you've actually taken, grounded in a live web search of what employers expect, with sources.

No sign-up and no API keys: click Try Demo to explore a sample Software Engineering student.

How we built it

  • Next.js 16, React 19, TypeScript and Tailwind CSS 4, with Radix UI for accessible dialogs and menus and React Flow + dagre for the degree map. Deployed on Vercel.
  • Curriculum as data. We transcribed three official AAU study plans (Software Engineering, Computer Science and Cybersecurity) into JSON. Prerequisites use a tiny rule language (0102221 & 0107200, (A & B) | D, credits>=75) that is parsed into expression trees. Every curriculum is validated with Zod plus custom checks for missing references, cycles and credit totals before a student can use it.
  • A deterministic planning engine, separate from the UI: eligibility, requirement tracking, a critical-path-first semester scheduler, elective "slots" so the app never picks electives for you, and a what-if simulator that runs on copies of your data.
  • Honest estimates. Scheduling with prerequisites and credit caps is NP-hard in general, so the scheduler is a heuristic. It also computes a lower bound on the semesters left (shown here without summer terms):

$$T_{\min} = \max\left(\left\lceil \frac{C_{\text{left}}}{C_{\max}} \right\rceil,\; h\right)$$

That is the credits still needed divided by the per-semester cap, or the longest chain of remaining prerequisites, whichever is larger. UniPath only says "no plan can finish sooner" when its plan meets that bound.

  • One event model for the whole day. Weekly classes expand into real meetings, with holidays, cancellations and moves applied, and merge with tasks and events into one feed. The calendar, Home, conflict checks and reminders all read from it, so they never disagree.
  • AI only where it helps. Rules, planning, GPA, attendance, conflicts and task ranking are plain, unit-tested code. AI (Groq's gpt-oss-120b with browser search, or Google Gemini 2.5 Flash with Google Search) powers the project coach and an optional deadline reader for course outlines. It runs from a server route, so keys never reach the browser. The browser sends only course codes; the server looks up the real names and strips any course the model mentions that you haven't taken. Rate limiting and caching keep it inside the free tier, and an offline rule-based reader is the fallback.
  • Local-first. Versioned, validated localStorage with migrations, backups if saved data can't be read, and export and import of everything.
  • Tested. 161 Vitest unit tests for the engine and data, plus Playwright end-to-end tests with axe accessibility scans and a phone viewport.

Challenges we ran into

  • The official documents don't always agree. Guidance plans used different course codes from the study plans, listed courses that weren't in the degree, or left out required ones. Two prerequisites in the Cybersecurity plan point to course codes that don't exist. We made the study plan the source of truth and recorded every interpretation as a visible data note instead of quietly "fixing" it.
  • Electives. Picking electives for a student felt wrong, but a planner needs to know when they'll happen. Elective slots solved it: an open slot counts toward the requirement and becomes a real course when the student chooses one.
  • Credit-hour thresholds. Courses like the capstone need 90 completed credits, and a single 1-credit lab could push one back a whole semester. A "fill pass" in the scheduler swaps in end-of-chain courses to use every available credit.
  • Not overclaiming. There was no official campus map, attendance policy or event feed we could use, so UniPath doesn't invent walking times or rules. Students enter their own, uncertain dates read from documents are flagged (including day/month mix-ups), and sample data is labelled as sample.

Accomplishments that we're proud of

  • Three real study plans load and pass every validation check.
  • For all three majors at 18 credits per semester, UniPath's plan for a new student matches the lower bound: 7 semesters, provably the fastest possible under those settings.
  • Every recommendation, lock, alert and what-if result comes with a plain-language reason, taken from the actual prerequisite graph or your own schedule.
  • It works at phone size, is checked with automated accessibility scans, and needs no account.

What we learned

  • Real-world data is messier than it looks. Treating the curriculum as validated code caught problems we would never have spotted by reading the PDFs.
  • An answer without a reason isn't trusted. Explaining why a course is locked or recommended mattered as much as the recommendation itself.
  • Be honest about hard problems: a heuristic plus a provable lower bound beats pretending to be optimal.
  • Use AI where language is fuzzy (reading deadlines, suggesting projects), keep the rules deterministic, and put guardrails around anything the model says about a student's degree.

What's next for UniPath

  • More majors and universities; the engine is already university-independent.
  • Real section and seat data, so "eligible" becomes "offered and has seats".
  • Push reminders that arrive when the browser is closed, plus optional accounts and cross-device sync.
  • Verified campus maps and official university feeds, where a university offers them.
  • Shareable read-only plans for academic advisors.

AI disclosure

We built UniPath with substantial help from Claude (Anthropic) via Claude Code, which wrote most of the code, tests and documentation from our specification and the official study plan PDFs we supplied. We directed the work, chose the scope and are responsible for reviewing it. At runtime, only the AI Coach and the optional deadline reader use AI; everything else is deterministic code.

Built With

Share this project:

Updates

Submission history