Back to Projects

Academic Performance App & Grade Tracker

An AI-powered iOS application designed to help students optimize their academic performance through intelligent grade tracking, predictive analytics, and syllabus parsing.

Project Overview

The Academic Performance App is a comprehensive full-stack iOS application that combines Swift/SwiftUI frontend with a Node.js/Express.js backend, integrating OpenAI's GPT-4o-mini for intelligent features. The app helps students track grades, simulate "what-if" scenarios, and optimize their academic performance through AI-powered insights.

Started in July 2025 and still actively developing, this project demonstrates full-stack iOS development, cloud architecture, third-party API integration, and practical problem-solving for students managing multiple courses.

Key Features

AI Syllabus Parsing

Upload a PDF syllabus and GPT-4o-mini automatically extracts the course name, professor, semester, assignments, weights, due dates, and grading policy — ready to review and import.

Grade Tracking

Manually track assignments across multiple courses using weighted category calculation. Enter scores as percentages or fractions, with customizable grading scales including a built-in Ohio State scale.

Grade Simulation & GPA Impact

Target grade slider shows exactly what score you need on remaining work. Scenario simulator runs Perfect / Excellent / Good / Average / Minimum projections, and a GPA impact calculator projects your GPA after the course.

Canvas LMS Integration

Connect a Canvas API token to sync grades automatically. Supports any institution via a searchable university picker, with 5-level fuzzy matching to map Canvas courses to app courses and auto-creation of recurring assignments.

Authentication & Cloud Sync

Email/password and Google OAuth sign-in via Supabase. All data stored in PostgreSQL with Row Level Security so each user only accesses their own data, with full multi-device sync.

Effort Analysis

Ranks incomplete assignments by grade impact and surfaces a grade recovery card highlighting the highest-impact work to focus on based on your current standing.

Technical Implementation

Frontend (iOS)

Swift SwiftUI Vision Framework PDFKit Keychain

Backend & Cloud

Node.js Express.js Supabase (PostgreSQL) Supabase Auth OpenAI API Canvas LMS API

Deployment

Render Supabase Cloud TestFlight (Planned)

How It Works

1. Sign In & Cloud Sync

Users create an account with email/password or Google OAuth. On login, all courses, assignments, and settings sync instantly from Supabase. Every change made in the app is persisted to the cloud in the background, so data is always available across devices and never lost.

2. Syllabus Upload & Parsing

Students upload a PDF syllabus from their device. The app uses PDFKit to extract the text, then sends it to the Express backend which calls GPT-4o-mini with a structured prompt. The AI returns a JSON object containing:

The extracted data is shown for review before import, so students can selectively accept or reject items.

3. Grade Tracking

Once courses are set up — either via syllabus import, Canvas sync, or manually — students enter scores as they receive them. Scores can be entered as percentages or fractions (e.g., 45/56). The app calculates the current weighted grade and projected final grade in real time using the category weights defined for that course.

4. Grade Simulation & Effort Analysis

The simulator tab lets students set a target grade and instantly see what score they need on remaining assignments. The scenario runner projects final grades across five effort levels (Perfect through Minimum), and the GPA impact calculator shows how the projected final grade will affect their overall GPA. The effort analysis tab ranks incomplete assignments by their grade impact and surfaces a grade recovery card highlighting the highest-value work to prioritize.

5. Canvas Integration

Students paste their Canvas API token in Settings and select their university from a searchable picker (supports any Canvas institution). The app pulls all enrolled courses and their grades via the Canvas REST API. A 5-level fuzzy matching algorithm maps Canvas courses to existing app courses by name, code, and other signals, then auto-creates recurring assignment categories like Homework, Lab, and Participation where applicable.

Challenges & Solutions

Challenge 1: Accurate Syllabus Parsing

Problem: Syllabi come in various formats with inconsistent structures, making it difficult to extract data reliably.

Solution: Developed custom prompt engineering strategies for GPT-4o-mini, providing specific JSON schemas for structured output. Combined OCR with multi-modal processing to handle both text-based PDFs and scanned images.

Challenge 2: Real-Time Grade Calculations

Problem: Complex grading schemes with weighted categories, dropped scores, and custom curves require sophisticated calculation logic.

Solution: Built a flexible GradeCalculator utility that handles various grading scenarios, including percentage-based and point-based systems, with support for dropping lowest scores.

Challenge 3: Canvas Course Matching

Problem: Canvas course names rarely match what a student calls their course in the app — a course might be "CSE 2221.100" in Canvas but "Software I" locally.

Solution: Built a 5-level fuzzy matching algorithm that compares course names, codes, and partial strings in priority order, falling back to progressively looser matches to maximize auto-mapping accuracy.

Challenge 4: API Security

Problem: Storing OpenAI API keys directly in the iOS app would expose them in the app binary.

Solution: Implemented a secure proxy architecture where the iOS app calls a Node.js/Express backend, which handles all OpenAI API communication with environment-protected keys. Canvas tokens are stored in Keychain on-device, never in plaintext.

Impact & Results

Future Enhancements