Product scope: The calculator imports its own JSON course-row format. It does not import CSV, parse arbitrary transcripts, synchronize spreadsheets, or discover school policy.
Accepted contract
The importer accepts export versions 1.0 and 2.0. Validation checks the structure, supported grade and course-weight values, credit bounds, row count, and unique course IDs. The maximum file size is 1 MiB (1,048,576 bytes), and an import can contain at most 500 course rows.
Accepted rows are recalculated under the current site's fixed grade and optional bonus tables. Stored totals are not trusted as an official result.
Route-by-route loss matrix
| Route | What JSON exports | What import restores | What is not restored |
|---|---|---|---|
| Main calculator | Flat course rows, including optional semester labels | Validated rows in the calculator | Institution-specific policy not represented by the fields |
| Cumulative calculator | Courses flattened from all visible terms | All accepted rows inside one term named Imported | Original term grouping and workspace layout |
| High-school calculator | Courses flattened from its terms | All accepted rows inside one term named Imported | Original term grouping and school-specific weighting policy |
Standalone calculator variants do not all expose this workflow. CSV is export-only.
Safe import procedure
1. Preserve the current state
Export JSON before replacing local rows. Store it with a date and route name. If the page contains multiple terms, separately record the term labels and row counts because those groups do not round-trip.
2. Inspect the incoming file
Confirm:
- it came from this calculator or deliberately follows its schema;
- the version is supported;
- every ID is unique;
- each grade, credit, and weight value is expected;
- semester labels, if present, mean what you think they mean;
- the row count matches the source record.
Do not edit a JSON file with spreadsheet software unless you verify the resulting syntax and values.
3. Import once
Choose the correct route and import the file. The operation replaces the relevant local course set after confirmation; it is not a merge or cloud synchronization.
4. Verify after import
Compare the pre-import and post-import record:
| Check | Expected evidence |
|---|---|
| Row count | Same number of intended course rows |
| Course identity | Names or codes match the source |
| Grades and credits | No missing, clamped, or changed values |
| Weight type | Matches the displayed site option |
| Semester placement | Rebuild grouping where the route flattened it |
| GPA | Recomputed from accepted rows under the displayed site model |
An accepted file can still contain an omitted course, wrong grade, inaccurate label, or policy-incompatible input. Schema validation is not transcript verification.
Formula and policy boundary
For compatible rows, the site computes grade points times credits and divides total quality points by total credits. Notre Dame publishes this structure for its own GPA, but institutions can differ on the grade table, included attempts, repeats, transfers, and special marks.
The importer cannot select the last 60 credits, apply Dean's List rules, decide repeat forgiveness, or reconstruct an official transcript. Those are separate policy questions.
Privacy and storage
Imported course data stays in the browser's local storage under the calculator's existing storage design. There is no account or cloud sync. Anyone with access to the browser profile may be able to view local data, so use an appropriate device and remove data when needed.
Bottom line
Treat JSON as a validated course-row transfer format, not a lossless multi-semester backup. Preserve a copy, import on the intended route, rebuild lost grouping, and compare every row before relying on the planning result.
