Gap analysis of the current tool against "Transcript Parser: Translating Academic Records into Skills and Opportunities" (CE + AACRAO + Anthropic write-up), and a phased plan to close it.
| Write-up requirement | Status |
|---|---|
| Read any transcript (PDF incl. scanned, varied layouts) | ✅ Claude extraction, one code path; validated on 39 real samples |
| Identify courses' globally unique CTIDs | ✅ Course → CTID matching via org catalog (code + title similarity) |
| Credits, grades, terms, institutions, degrees | ✅ Extracted with structured schema |
| Confidence scoring / communicating certainty | ✅ high/medium/low/none bands + runner-up candidates in report |
| Traceability | ✅ Every match links to the registry resource URI/CTID |
| Uses existing Registry course-catalog data | ✅ Search API (subClassOf LOP, dual owned/offered queries) |
| Return skills/competencies for matched courses | ✅ Milestone (2026-07-17): full run produced a transcript-level skills profile from a real transcript whose matched courses carry ceterms:teaches competencies — the transcripts → skills promise demonstrated end-to-end |
Skills are the point — and we don't return them yet.DONE (2026-07-17). Matched courses now return theirceterms:teaches/ceterms:assessescompetencies (inline alignments plus resolution of URI-only references), aggregated into a deduplicated per-transcript skills profile with source-course traceability — verified on a live run against a transcript with Registry competency coverage.- PII posture is inverted. Current design deliberately strips learner PII. The vision requires learner identity + transcript-only data (semester GPA, cumulative GPA, milestones) in a normative structure for downstream processing.
- Academic summary data is not captured. Term/cumulative GPA, academic
standing, honors/dean's list milestones exist in
parsing_notesprose at best, not as structured fields. - Input formats. No image (photographed transcript) or plain-text input; no PESC XML / EDI (SPEEDE) — the machine-readable formats AACRAO institutions actually exchange.
- No conversational access. The vision is "AI-enabled natural language conversations"; today it's a batch CLI.
- No gap analysis. "How close am I to a credential?" requires comparing
matched courses against
ceterms:requirescondition profiles on registry credentials. - No trust/verification layer. Nothing checks PDF digital signatures, issuer authenticity against the registry, or verifiable-credential packaging.
- Confidence is heuristic, not calibrated. Bands are hand-tuned thresholds; registrar-grade transfer-credit decisions need measured precision on a labeled golden set.
The minimum needed for the write-up's headline story to be true.
- ✅ Skills retrieval (done, live-verified 2026-07-17): matched
courses/credentials return linked competencies (inline
ceterms:teachesalignments + public-fetch resolution of URI-only references); per-courseskillslists and an aggregated per-transcript skills profile with source-course traceability, in report.html, results.json, and skills.csv. - Extraction schema additions: per-term GPA and credit totals, cumulative GPA, academic standing, honors/dean's list/milestones, enrollment status, catalog year if printed.
- PII mode:
--pii include|exclude(default exclude, preserving current FERPA-safe behavior). When included, learner name/DOB/student ID go into a clearly separatedlearnerblock. - Normative output structure: define the JSON schema for the full result (learner block + registry-matched data + transcript-only data). Candidate anchors: CTDL JSON-LD for registry entities; review AACRAO/PESC field naming for the transcript-only block. (Write-up marks this TBD — needs a working session with Deb/Mike/Mark.)
- Image + text input: accept JPG/PNG (Claude vision) and .txt.
- Golden dataset & calibration: hand-label correct matches for the 39 sample transcripts (org/course/credential level). Add an eval script that reports precision/recall per confidence band; tune thresholds against it. This is the substance behind the write-up's "expert guidance for confidence scoring" ask.
- Review workflow: report flags low/medium matches for human confirmation; accept/reject feeds back into the golden set.
- PESC XML / EDI SPEEDE ingestion: deterministic parsers (no LLM cost, no extraction uncertainty) for institutions that can supply them.
- Registry coverage report: per-institution counts of courses/credentials found vs. transcript needs — doubles as an internal CE data-quality tool showing exactly where Registry course coverage is missing.
- Collections traversal: follow
ceterms:Collectionmembership where orgs publish courses inside collections.
- MCP server wrapping the pipeline (
parse_transcript,match_to_registry,get_skills_profile,credential_gap_analysis) so Claude (claude.ai, Claude Code, or a custom app) can converse over any transcript. This is the shortest path to "natural language conversations." - Credential gap analysis: compare a learner's matched courses/credits
against
ceterms:requirescondition profiles of candidate credentials at matched institutions → "you appear to be N credits from X" (with the caveat language registrars require). - Batch mode at scale: Anthropic Batches API (~50% cost reduction) for bulk institutional runs; per-run token/cost reporting.
- Document authenticity: detect and validate PDF digital signatures (Parchment/NSC-style signed transcripts); surface signer identity.
- Issuer verification: cross-check the signing/issuing institution against its Registry record — CE as trust registry (write-up's PKI question). Scope investigation first; this is research, not a feature yet.
- Verifiable credential packaging: optional W3C VC output of the parsed
- matched result for downstream wallets/CLRs.
- Privacy/FERPA framing: document the data path (PDF → Anthropic API, no training on API data; local caching; retention). Decide whether zero-data-retention or a BAA-style arrangement is needed before non-redacted production use — aligns with the write-up's privacy ask.
- Known registry data realities to communicate, not code around: many institutions have no published course data (the tool now reports this explicitly); learning opportunities are inconsistently typed (handled via subClassOf); some orgs exist only at district or campus level (handled via name-variant search, verify on next full run).