Transcript intelligence for admissions

Transcripts in.
Decisions out.

Certract reads academic transcripts from any education system, converts every mark to your own scale, and hands your team clean, reviewable data — with an API for everything downstream.

  • Scanned PDFs welcome
  • Any grading scale
  • Every edit on the record
Live extraction Universiteit Utrecht · 10-point scale → 4.0

Universiteit Utrecht

Cijferlijst — Bachelor Informatica

CodeVakECCijfer
INFOB1PICTProgrammeren7,58,5
INFOB2SDSDatastructuren7,57,0
WISB134Lineaire algebra7,59,0
INFOB3CCComputernetwerken7,56,5
INFOMAIAMachinaal leren7,58,0
INFOB1SCHSoftware testen7,57,5

Uitgegeven 12-06-2026

Studieadviseur · Faculteit Bètawetenschappen

structured_record verified
institution
Universiteit Utrecht
level
Bachelor
field
Computer Science
INFOB1PICT8,5A−3.7
INFOB2SDS7,0B3.0
WISB1349,0A4.0
INFOB3CC6,5C+2.3
INFOMAIA8,0A−3.7
INFOB1SCH7,5B+3.3
GPA converted 3.33 6 courses · 45 EC · your rubric
Any formatScans, exports, photos of a printout. If a person can read it, so can Certract.
Any scale10-point, percentage, UK classification, CGPA. You define the bands once.
Human in the loopStaff correct anything the model gets wrong. Corrections stick.
Built to plug inREST API, signed webhooks, and a typed SDK from day one.

The pile

One transcript takes twenty minutes.
You have four hundred of them.

Someone opens the PDF. Squints at a scan. Types course codes into a spreadsheet. Opens a browser tab to work out what an 8,5 from Utrecht means on a 4.0 scale, or whether a Second Class Upper clears the bar.

Then they do it again. And again. The backlog looks like a staffing problem, but it's a data-entry problem wearing a staffing problem's coat — and it's the reason good applicants wait three weeks for an answer.

The path a document takes

Five stages, and you only staff one.

  1. 01

    Upload

    Applicants upload their own documents through your branded portal. Staff drop a whole cohort at once. Either way it lands in the same queue.

  2. 02

    Extract

    The document is read against a schema you control — institution, level, field, and every course with its code, credits and local mark.

  3. 03

    Convert

    Your grade rubric turns local marks into your scale. First matching band wins. Set it up once and every transcript that follows obeys it.

  4. 04

    Review

    Your team checks the record and fixes anything that's off. Every change is attributed, timestamped, and kept — this is the one stage with a person in it.

  5. 05

    Use it

    Ask questions across the whole cohort, export CSV, JSON or PDF, or pull everything into your SIS through the API.

Grade conversion

Your scale is the only scale that matters.

Every institution grades differently, and every admissions office converts differently. Certract doesn't guess at a universal standard — you write the bands, and they become the single source of truth for every transcript your office touches.

  • Ordered bands, first match wins — no ambiguity about which rule applied
  • Separate rubrics per source system, all live at the same time
  • Change a band and recompute; the audit trail shows exactly what moved
Rubric · NL 10-pointactive
9,0 – 10,0A4.0
8,0 – 8,9A−3.7
7,5 – 7,9B+3.3
6,8 – 7,4B3.0
6,0 – 6,7C+2.3
5,5 – 5,9C2.0
Input 7,5 matched band 3 → B+ · 3.3

Ask your cohort

The spreadsheet can't answer questions. This can.

Once transcripts are structured, the whole cohort becomes something you can just ask about. Certract retrieves the relevant records itself, reads them, and answers — with the applicants it used shown alongside.

  • Scoped to your organisation at the query layer, never by prompt
  • Ask about one applicant or the entire intake
  • Same retrieval available over the API
Ask · Autumn intake1,284 records

Who studied machine learning and clears a 3.4?

find_prospects field: "Computer Science", minGpa: 3.4
load_transcripts 28 matched

28 applicants clear 3.4 with machine-learning coursework. The strongest three are from Utrecht, TU Delft and KU Leuven — all with a graded ML course above 8,0 local.

Review & accountability

Nothing changes without a name on it.

Admissions decisions get challenged. Certract keeps an append-only record of every edit — who changed which field, from what, to what, and when — so the answer to "why does this say 3.3?" takes ten seconds, not a week.

  • Four staff roles, from full admin down to read-only
  • API-key changes are attributed to the key that made them
  • Filter the ledger by person, applicant, or action
Activityappend-only
j.okafor@ record.updated 6,57,0 14:22
j.okafor@ record.matched CS 340 14:21
key_live_·7f2 transcript.updated BachelorMaster 09:04
system document.processed 42 records created 08:57

Also in the box

The unglamorous parts, already built.

Applicant portal

Your applicants get their own space: what they've uploaded, what's still needed, and a direct line to your team.

Bulk cohort upload

Drop a folder of PDFs, match each to an email. Unknown applicants are created and invited automatically.

Course matching

Incoming courses map to your own subject catalogue — automatically where it's obvious, with a person where it isn't.

More than transcripts

Define any document type with its own extraction schema: language certificates, diplomas, references.

Custom domains

Run the applicant portal on your own hostname with a certificate issued and renewed for you.

Exports

One applicant or a filtered cohort, as CSV, JSON, or a formatted PDF summary sheet.

Security & privacy

You're holding other people's records.

Transcripts are among the most sensitive documents a person owns. The architecture treats them that way — not as a policy page, but as things the system actually does.

Tenant isolation

Every query is scoped to one organisation at the data layer. There is no cross-tenant read path to misconfigure.

Right to erasure

An erasure request removes the files, the database rows, the conversation history and the sign-in account. Not a flag — the data is gone.

Retention windows

Set how long documents live. A nightly sweep erases anything past the line without anyone remembering to.

Hashed API keys

Keys are stored as hashes and shown once. Each carries only the scopes you grant it.

Signed webhooks

Every delivery is HMAC-signed with a timestamp, so your endpoint can prove the payload came from us and isn't a replay.

Least privilege

Reviewers can edit but not administer. Viewers can read but never write — including through the API.

Developers

A real API, not an export button.

Everything the panel does is available over a documented REST API with a published OpenAPI spec, a typed TypeScript client, and signed webhooks for the events you care about.

  • document_processed and transcript_edited webhooks with retries
  • Scoped keys — read, write, chat, webhooks
  • Usage metered per key so you can attribute spend
find-candidates.ts
import { createClient } from '@certract/sdk'

const certract = createClient({ apiKey: process.env.CERTRACT_API_KEY })

// Everyone from a given system, above your line
const { prospects } = await certract.listProspects({
  institution: 'Utrecht',
  educationLevel: 'Bachelor',
  minGpa: 3.4,
})

// One transcript, already on your scale
const transcript = await certract.getTranscript(id)

Clear the backlog.

Bring a handful of real transcripts to the call — the messier the better. We'll run them through live and you can judge the output yourself.

or write to contact@certract.com