Inspiration

Every year, thousands of Ontario university students transfer between institutions and silently lose thousands of dollars worth of academic credit — not because their grades were bad, but because the system is completely opaque. There's no easy way to know which courses will transfer, what year standing you'll enter at your new school, or how much money is actually at stake.

As an international student at Brock University considering a transfer, I experienced this confusion firsthand. The difference between losing 2 credits and 6 credits as an international student can mean $15,000–$25,000 CAD in extra tuition. Nobody tells you that. We built CreditCheck to change that.

What it does

CreditCheck lets Ontario university students upload their unofficial transcript (PDF) or offical transcript and instantly see:

  • 🟢 Which courses are likely to transfer to their destination university
  • 🟡 Which courses are flagged for review — uncertain transfers that depend on departmental assessment
  • 🔴 Which credits are at risk of being lost
  • 📅 Their year standing at the destination based on transferred credits
  • 💰 The real dollar value at risk — calculated using verified 2025–26 tuition data, shown as a range for both domestic and international students
  • 🎓 GPA converted to the destination university's native scale (4.33, 12-point, 10-point, or 9-point)

All of this is displayed through a stunning 3D orbital visualization where each course is a planet — green for transfer, amber for review, red for lost — grouped by academic department.

Currently supports transfers from Brock University to 5 major Ontario destinations across 4 programs:

  • Carleton University
  • University of Ottawa
  • McMaster University
  • Toronto Metropolitan University (TMU)
  • York University

How we built it

AI Coding Assistant — Antigravity The entire frontend and application logic was built using Antigravity, an AI-powered coding agent. Antigravity handled component architecture, Three.js integration, Zustand state management, and iterative UI refinements in real time throughout the hackathon.

Frontend Stack

  • React + TypeScript + Vite
  • Three.js for the 3D orbital course visualization
  • Zustand for global state management
  • Tailwind CSS for styling
  • React Router for navigation

AI / Document Processing

  • Google Gemini 3 Flash — reads and interprets uploaded PDF transcripts, extracts course data, and categorizes each course by subject area (cs_core, math, business_core, etc.)
  • PDF.js — extracts raw text from uploaded transcripts before sending to Gemini

Research & Data Layer

  • Hardcoded verified 2025–26 tuition, GPA scales, credit systems, and transfer residency rules for all 5 Ontario universities — sourced through deep research using Perplexity DeepSearch
  • universities.ts — a structured TypeScript data file powering all credit conversion, GPA mapping, value at risk calculation, and year standing logic

Key architectural insight: Rather than having Gemini guess facts (tuition, credit counts, GPA scales), we hardcoded all verified institutional data and used Gemini only for what AI is actually good at — reading unstructured PDF documents and categorizing course subjects.

Challenges we ran into

  • PDF parsing fragility — University transcripts have no standard format. Pure regex parsing failed on our own transcript. Switching to Gemini for text extraction fixed accuracy dramatically.

  • Ontario's fragmented credit systems — Every university counts credits differently. Brock uses 0.5 units, TMU counts individual courses, uOttawa/McMaster/York use 3-unit courses. Converting between these required a completely custom data model with per-university conversion factors.

  • No public equivalency tables exist — We initially planned to hardcode Brock → destination course mappings. Research revealed these simply don't exist as public data. All five universities only confirm equivalencies after admission. This forced us to redesign Gemini's entire role from "guess equivalencies" to "categorize and estimate likelihood."

  • International vs domestic tuition gap — The value at risk difference is enormous (e.g. ~$5,700 domestic vs ~$24,000 international for the same lost credits at TMU). Getting the isInternational boolean correctly through the Zustand state management chain required several debugging passes.

  • Gemini inconsistency — Gemini occasionally miscategorizes courses or uses American semester credit hours (3.0 per course) instead of Ontario's 0.5 unit system. We addressed this with explicit Ontario credit system context in every prompt, sanity checks, and hardcoded fallbacks.

Accomplishments that we're proud of

  • A genuinely beautiful 3D orbital visualization that makes a dry academic problem feel visceral and real
  • Honest, defensible estimates — we show cost ranges not false precision, and always link to official ONTransfer resources
  • Real verified tuition data powering Value at Risk instead of guessed numbers — domestic and international
  • A mission-control loading screen with live status messages as Gemini processes your transcript
  • Correctly handling 5 different credit unit systems across Ontario universities in a single unified data model
  • Built and shipped a full working product in a single hackathon session using Antigravity as our coding agent

What we learned

  • Hardcoded verified data always beats AI guessing for factual, structured institutional information
  • Ontario's university credit transfer system is genuinely broken and confusing — which validates the problem we're solving
  • Gemini is remarkably capable at document understanding when given precise, domain-specific context in the prompt
  • AI coding agents like Antigravity dramatically accelerate development — but you still need deep domain knowledge to direct them correctly
  • The difference in financial impact between domestic and international students in the transfer system is staggering and almost entirely undiscussed

What's next for creditcheck

  • 📚 Expand to all 20+ Ontario universities
  • 🏫 Add college-to-university pathways (diploma → degree)
  • 🔗 Live ONTransfer API integration for real equivalency lookups
  • ⚖️ Side-by-side university comparison: "where do I lose the fewest credits?"
  • 📄 Downloadable PDF transfer report students can share with academic advisors
  • 🌍 Expand beyond Ontario to other Canadian provinces

Built With

Share this project:

Updates