GPA & Report Cards

IC Insight provides two separate GPA calculations: a Current Year GPA based entirely on cached courses, and a Cumulative GPA that combines current-year courses with manually entered past report cards.


Grade Scale

All GPA calculations start by mapping a percentage to a letter grade using the configured grade scale. The default scale is:

Grade Min % GPA Points
A+ 97 4.4
A 93 4.0
A- 90 3.7
B+ 87 3.4
B 83 3.0
B- 80 2.7
C+ 77 2.4
C 73 2.0
C- 70 1.7
D+ 67 1.4
D 65 1.0
F 0 0.0

The scale is fully editable in Options → Grade Scale. A small epsilon tolerance (0.005) prevents floating-point precision issues when a grade falls exactly on a boundary.


Current Year GPA

Displayed at the top of the Dashboard. Computed by looping through all cached courses:

  1. Load the course's overall grade percentage.
  2. Apply permanent score overrides (PE_ / PA_ keys) before computing the grade.
  3. Look up the letter grade using the scale.
  4. Look up the GPA point value for that letter.
  5. Multiply by the course's credit weight (default: 1.0, configured per-course in Options → Course Weights).
  6. Accumulate: sum(weight × gpaPoints) and sum(weights).
  7. currentYearGPA = sum(weight × gpaPoints) / sum(weights).

Courses with a weight of 0 (or negative/invalid) are excluded from both numerator and denominator.

Note: This is a simple credit-weighted average of GPA points, not the full quality-points model used for cumulative GPA.


Cumulative GPA

Displayed alongside the Current Year GPA. Uses GPAEngine.calculateCumulativeGPA() which processes a combined list of current-year courses and past report card courses.

Quality Points Model

For each course:

  1. Convert the final mark (percent or letter) to base GPA points using the scale.
  2. Apply a weighting bump based on course type:
    • AP: +1.0 (default)
    • IB: +1.0 (default)
    • Honors: +0.5 (default)
    • Regular: +0.0
    • Bumps are configurable in Options → GPA Settings. Additive mode (default): weightedGPA = baseGPA + bump. Multiplicative mode: weightedGPA = baseGPA × (1 + bump).
  3. Compute qualityPoints = weightedGPA × credits.
  4. Sum quality points and credits across all courses.
  5. cumulativeGPA = totalQualityPoints / totalCredits, rounded to the configured number of decimal places (default: nearest 3).

A+ Special Case

By default, A+ maps to 4.4 GPA points. In Options → GPA Settings, you can switch A+ to map to 4.33 instead.


Course Weights (Credits)

In Options → Course Weights, each cached course has a numeric weight field (default: 1.0). This represents the course's credit value:

  • Set to 0.5 for half-credit courses.
  • Set to 1.5 for weighted/double-credit courses.
  • Set to 0 to exclude a course from GPA entirely.

For current-year GPA, the weight is used directly as a credit multiplier. For cumulative GPA, the same weight is used as the credits value passed to GPAEngine.


Past Report Cards

Report cards let you include previous years' grades in the cumulative GPA.

Adding a Report Card

Click Add Report Card on the Dashboard. A form asks for:

  • Title (e.g. "2023-24 Final")
  • School year (e.g. "2023-2024")
  • Marking period (e.g. "Full Year")
  • Issued date
  • Courses - each with: name, teacher (optional), final mark (percent or letter), credits, and weight type (Regular / Honors / AP / IB)

Storage

Report cards are stored in ICI_PAST_REPORT_CARDS (an array in chrome.storage.local). Each card has a unique ID generated as rc_${year}_mp${mp}_${timestamp}_${random}.

Editing and Deleting

Expand a report card card to view its courses. Click Edit to modify any field. Click Delete to permanently remove it.


Data Export and Import

The full GPA data (grade scale, GPA settings, past report cards, course weights) can be exported as a JSON file from Options → Data Management. The same file can be imported (merge or replace mode) on any device to restore the full configuration.