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 with 202 Accepted.At this point the upload is in queued/processing 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. The whole upload then becomes a single academic credential.Webhook: case.classification.completed / case.classification.failed3
Extraction
Structured fields are pulled from each education credential:
Extracted data is normalized into a consistent schema regardless of the source document’s format or language.Webhook:
case.extraction.completed / case.extraction.failed4
Evaluation (operator review)
An operator reviews the extracted data, grade and credit scales, and qualification
equivalency in the UI, then completes evaluation. You can retrieve evaluated results
and download PDF or XLSX reports through the API. Evaluation is separate from upload
features and document processing status. See Evaluation.Webhook:
case.evaluation.completed, a best-effort notification. Poll evaluation
JSON as a fallback. Combined report readiness is separate from credential completion.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.failed6
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, on each credential: after classification when classify: true (default), or as soon as the upload becomes its single credential when classify: false.Webhook: case.translation.completed / case.translation.failedCase status
A case moves through these states: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.