Skip to main content
Every case submitted to TruEnroll travels through the same pipeline. A case can contain multiple uploads, each with one or more files. Stages run asynchronously and emit events as they complete, so you learn about each result as soon as it’s ready.

Pipeline overview

Forensics and translation run in parallel with extraction, not after it. A case reaches terminal state only when every expected result — for every credential and every enabled feature — has completed or failed.

Stage by stage

1

Ingestion

Files are validated (format, size, count limits) and stored. A case is created (or an upload is added to an existing case if the externalId already exists) and processing is queued. The API responds immediately.At this point the upload is in queued status.
2

Classification

TruEnroll analyses the uploaded files and splits them into credentials — one per education qualification identified. A single file can produce multiple credentials (for example, a transcript spanning two degrees). Non-education documents such as ID cards or cover letters are identified and excluded from further processing.Can be skipped by setting classify: false when submitting a case.Webhook: case.classification.completed / case.classification.failed
3

Extraction

Structured fields are pulled from each education credential:
Field groupExamples
Candidate identityFull name, first/last name, date of birth
InstitutionName, country, state, accreditation status
QualificationDegree name, level, major, year of admission, year of completion
CoursesCourse number, title, credits, grade, grade point, marks
CGPA / totalsCGPA, total credits or marks
Extracted data is normalized into a consistent schema regardless of the source document’s format or language.Webhook: case.extraction.completed / case.extraction.failed
4

Grade normalization & equivalence

Extracted grades are interpreted against the issuing institution’s grading scale (using TruEnroll’s built-in scale library or a custom scale) and converted to target scales. Courses are mapped to CIP/SCED codes for domestic equivalence matching.
5

Forensics (parallel)

Running concurrently with extraction, the forensics engine checks the document for signs of tampering, manipulation, and internal inconsistency. See Forensics & verification for what’s checked.Webhook: case.forensics.completed / case.forensics.failed
6

Translation (if enabled)

When the translation feature is requested, TruEnroll produces a page-structured, readable representation of the document in English. Each source file gets its own translation output, preserving page order and file identity.Translation runs in parallel with forensics and extraction — triggered after classification when classify: true (default), or immediately at upload time when classify: false.Webhook: case.translation.completed / case.translation.failed

Case status

A case moves through these states:
StatusMeaning
queuedCase created, waiting for pipeline to start
processingAt least one result is still being processed
completedEvery expected result finished successfully
failedAll results are terminal and at least one failed
A failed extraction does not necessarily make the whole case failed — if forensics and translation both succeed, and extraction is the only failure, the overall status depends on which features were requested. Every expected resource must reach a terminal state.

Partner API event timeline

This is what the lifecycle looks like from a partner integration’s perspective.

Webhook reference

Every event name, when it fires, and how to handle duplicates safely.