Eric Nguyen

Honors EligibilityAug 2026 – now

Checks a transcript against 17 honor societies, fully offline

Honors Eligibility

Checks a transcript against 17 honor societies, fully offline

#Desktop app#Data#Automation

Type
Tool for OCC'sGarrison Honors Center
Team
Me
Duration
Aug 2026 – now
Tools
PythonPydanticPySide6BeautifulSoupMicrosoft Access
Link
Private

Seventeen honor societies, seventeen rulebooks, and one registrar checking every transcript against all of them by hand.

Overview

A desktop app that decides which of Orange Coast College's 17 honor societies a student qualifies for. It reads the student's transcript, has a person confirm it, works out eligibility for every society, and writes the result back into the registrar's Access database. It's fully offline and deterministic: the same transcript always gives the same answer.

Transcript fields beside the source document, for review
Transcript fields beside the source document, for review

The problem

Each society has its own rule: a GPA floor, a unit floor, a set of qualifying courses, sometimes a document that must be on file. Two things go wrong when that's done by hand, and the app is built to prevent both.

  • A misread transcript value silently changes the answer.
  • A membership gets written into the wrong column of a twenty-year-old database.

How it works

  • Reads the Banner transcript export with a parser that matches columns by heading, never by position.
  • Shows every extracted value beside the source page, flagged as unverified until a person confirms it.
  • Recomputes GPA and units from the confirmed courses instead of trusting the printed totals.
  • Runs all 17 society rules, including the ones that aren't numbers.
  • Previews every database write as a diff before anything changes.
A finished determination across all 17 societies
A finished determination across all 17 societies

Design decisions

Unverified and confirmed transcripts are separate types, so no calculation can ever read data a person hasn't signed off. A broken society rule fails loudly instead of quietly turning into "doesn't qualify". And an unreadable old record means "ask the registrar", never "not a member", so no student loses a membership they earned.

Every Access column name lives in one file and is checked against the live database at import. 557 tests cover the parser, the confirmation gate, all seventeen rules, the GPA maths and the write planner.

Reflections

[What changed for the honors center, and what you'd do next.]