Skip to main content

Task Catalog

Every parcel runs through a coordinated agent graph rather than a single call. The Router classifies the incoming parcel and dispatches it to one of the 18 worker specialists below; the Verifier checks the worker's output and can bounce it back; the Exceptions Specialist makes the final call on high-stakes or low-confidence items. See the multi-agent pipeline for how the roles fit together.

Each task's output schema is the single source of truth (the Zod schema in src/tasks/schemas.ts), from which the prompt instruction, the tolerant parser, the grader's field list, and the focus-card rows all derive. This page is generated from that registry + the scenario pool.

The agent rolesโ€‹

RoleStepWhat it does
๐ŸšฆRouterrouteReads the incoming parcel (label photo + manifest line), classifies the exception type and modality, and dispatches to the right worker.
๐Ÿ”งWorkerworkThe specialist task agent โ€” extracts the structured answer (parsed address, damage verdict, HS code, etc.) against the task schema.
๐Ÿ”VerifiercheckIndependently reviews the worker's output against the source โ€” does the parsed address match the label? does declared value match the invoice?
โš ๏ธExceptions SpecialistdecideA heavier second-look agent, invoked only for high-stakes or low-confidence items: customs holds, hazmat, high-value, suspected tamper.
๐ŸงญOrchestratordecideRuns the per-item graph and applies the retry/escalate/accept policy, emitting the final routing decision plus a coordination trace.

Worker specialistsโ€‹

18 task types ยท 111 scenarios, spread across all four modalities.

TaskidModalityDifficultyScenarios
๐Ÿท๏ธLabel Parselabel-parseVision17
๐Ÿ“ฆDamage Assessdamage-assessmentVision26
โ˜ฃ๏ธHazmat Checkhazmat-detectionVision36
๐ŸงพCustoms Invoicecustoms-invoiceDocument26
๐Ÿ”’Seal / Tamperseal-tamperVision35
๐Ÿ“‹Manifest Reconmanifest-reconDocument16
๐ŸŒTariff Classtariff-classificationText27
๐ŸšฆException Routeexception-routingText17
๐Ÿ“Dim/Weightdim-weightVision26
๐ŸงฑPallet Checkpallet-checkVision26
๐Ÿ“Address Checkaddress-validationText16
๐ŸššCarrier Selectcarrier-selectText16
โฑ๏ธSLA / ETAsla-riskText27
โ†ฉ๏ธRMA / Returnrma-dispositionText26
๐Ÿ›‘Restrictedrestricted-screeningText37
๐Ÿ“„Docs Checkdocs-completenessDocument16
โœ๏ธHandwrittenhandwritten-labelVision35
๐ŸŽž๏ธConveyor Camconveyor-incidentVideo36

Task detailsโ€‹

๐Ÿท๏ธ Label Parseโ€‹

label-parse ยท Vision ยท difficulty 1 ยท 7 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
carrierstring
trackingNumberstring
serviceLevelstring
addressstring

Example scenario โ€” lp-7 โš  adversarial (Water-damaged Yodel label (hard).):

{
"carrier": "Yodel",
"trackingNumber": "JD000223344556",
"serviceLevel": "ECONOMY",
"address": "9 Mill Lane Leeds LS1 5PU"
}

๐Ÿ“ฆ Damage Assessโ€‹

damage-assessment ยท Vision ยท difficulty 2 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
damagedboolean
damageTypecrushed | wet | torn | none
severitynumber
actionaccept | repackage | refuse

Example scenario โ€” dm-2 โš  adversarial (Badly crushed corner โ€” refuse.):

{
"damaged": true,
"damageType": "crushed",
"severity": 4,
"action": "refuse"
}

โ˜ฃ๏ธ Hazmat Checkโ€‹

hazmat-detection ยท Vision ยท difficulty 3 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
unClassstring
compliantboolean
labelMissingboolean

Example scenario โ€” hz-2 โš  adversarial (UN class 8 corrosive โ€” required label missing (mislabel).):

{
"unClass": "8",
"compliant": false,
"labelMissing": true
}

๐Ÿงพ Customs Invoiceโ€‹

customs-invoice ยท Document ยท difficulty 2 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
hsCodestring
declaredValuestring
countryOfOriginstring

Example scenario โ€” ci-2 โš  adversarial (Suspected customs undervaluation (adversarial).):

{
"hsCode": "6110.20",
"declaredValue": "USD 180.00",
"countryOfOrigin": "BD"
}

๐Ÿ”’ Seal / Tamperโ€‹

seal-tamper ยท Vision ยท difficulty 3 ยท 5 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
sealIntactboolean
tamperedboolean
flagclear | tamper | unknown

Example scenario โ€” st-2 โš  adversarial (Seal broken / tampered โ€” flag TAMPER.):

{
"sealIntact": false,
"tampered": true,
"flag": "tamper"
}

๐Ÿ“‹ Manifest Reconโ€‹

manifest-recon ยท Document ยท difficulty 1 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
expectednumber
scannednumber
missingnumber

Example scenario โ€” mr-4 โš  adversarial (Over-delivery โ€” 7 extra (adversarial).):

{
"expected": 64,
"scanned": 71,
"missing": 0
}

๐ŸŒ Tariff Classโ€‹

tariff-classification ยท Text ยท difficulty 2 ยท 7 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
hsCodestring
dutyCategoryduty-free | low-duty | standard | high-duty

Example scenario โ€” tf-5 โš  adversarial (Whisky โ€” high duty (adversarial).):

{
"hsCode": "2208.30",
"dutyCategory": "high-duty"
}

๐Ÿšฆ Exception Routeโ€‹

exception-routing ยท Text ยท difficulty 1 ยท 7 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
categorystring
queuestring
priorityP1 | P2 | P3

Example scenario โ€” er-4 โš  adversarial (Hazmat safety hold, P1 (adversarial).):

{
"category": "safety-hold",
"queue": "hazmat-specialist",
"priority": "P1"
}

๐Ÿ“ Dim/Weightโ€‹

dim-weight ยท Vision ยท difficulty 2 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
declaredLengthCmnumber
declaredWidthCmnumber
declaredHeightCmnumber
declaredWeightKgnumber
mismatchboolean

Example scenario โ€” dw-2 โš  adversarial (Large box, tiny declared weight โ€” mismatch.):

{
"declaredLengthCm": 50,
"declaredWidthCm": 40,
"declaredHeightCm": 40,
"declaredWeightKg": 1,
"mismatch": true
}

๐Ÿงฑ Pallet Checkโ€‹

pallet-check ยท Vision ยท difficulty 2 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
cartonCountnumber
overhangboolean
stackingViolationboolean

Example scenario โ€” pc-2 โš  adversarial (Cartons overhanging edge.):

{
"cartonCount": 18,
"overhang": true,
"stackingViolation": false
}

๐Ÿ“ Address Checkโ€‹

address-validation ยท Text ยท difficulty 1 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
canonicalstring
deliverableboolean
zonestring

Example scenario โ€” av-2 โš  adversarial (Missing postcode, undeliverable.):

{
"canonical": "42 Wallaby Way, Sydney",
"deliverable": false,
"zone": "INT-AU"
}

๐Ÿšš Carrier Selectโ€‹

carrier-select ยท Text ยท difficulty 1 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
carrierstring
servicestring
coststring

Example scenario โ€” cs-4 โš  adversarial (Hazmat constraint excludes cheap option.):

{
"carrier": "DHL",
"service": "HAZMAT",
"cost": "GBP 15.00"
}

โฑ๏ธ SLA / ETAโ€‹

sla-risk ยท Text ยท difficulty 2 ยท 7 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
statuson-time | at-risk | breached
etaHoursnumber
causestring

Example scenario โ€” sr-2 โš  adversarial (Customs hold โ€” breached.):

{
"status": "breached",
"etaHours": 50,
"cause": "customs"
}

โ†ฉ๏ธ RMA / Returnโ€‹

rma-disposition ยท Text ยท difficulty 2 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
dispositionrestock | refurbish | scrap
reasonstring

Example scenario โ€” rma-3 โš  adversarial (Liquid damage โ€” scrap (adversarial).):

{
"disposition": "scrap",
"reason": "liquid-damage-unrepairable"
}

๐Ÿ›‘ Restrictedโ€‹

restricted-screening ยท Text ยท difficulty 3 ยท 7 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
statusallowed | restricted | prohibited
reasonstring

Example scenario โ€” rs-2 โš  adversarial (Counterfeit โ€” prohibited.):

{
"status": "prohibited",
"reason": "counterfeit-goods"
}

๐Ÿ“„ Docs Checkโ€‹

docs-completeness ยท Document ยท difficulty 1 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
bolPresentboolean
cooPresentboolean
packingListPresentboolean
completeboolean

Example scenario โ€” dc-2 โš  adversarial (Missing COO โ€” incomplete.):

{
"bolPresent": true,
"cooPresent": false,
"packingListPresent": true,
"complete": false
}

โœ๏ธ Handwrittenโ€‹

handwritten-label ยท Vision ยท difficulty 3 ยท 5 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
namestring
addressLinestring
postcodestring

Example scenario โ€” hw-3 โš  adversarial (Handwritten โ€” hard (adversarial).):

{
"name": "K. Patel",
"addressLine": "33 Bridge Lane",
"postcode": "B16 4QP"
}

๐ŸŽž๏ธ Conveyor Camโ€‹

conveyor-incident ยท Video ยท difficulty 3 ยท 6 scenarios

Output schema (the structured object the worker must emit, graded against ground truth):

FieldType
eventclear | jam | fall | crush
actionaccept | reroute | refuse

Example scenario โ€” cv-4 โš  adversarial (Trailing tote rams it into the scan post โ€” crushed.):

{
"event": "crush",
"action": "refuse"
}

Adding a task #18+ is one config plus a grader โ€” see Add a Task and Authoring scenario data. Re-run npm run gen:docs to refresh this page.