Handle a delinquency case
Work a Harbor delinquency with the full roster: open the case, brief with Cookie, dispatch Nova on a compliant call, record the promise she negotiated, and export exam-ready evidence.
On May 1, 2027, Harbor is past due — the April 12 installment of $517.14 never arrived. This recipe runs the matter from signal to evidence with the roster doing what it’s for: Cookie briefs, Nova calls, and every boundary applies current-fact policy.
Open or deduplicate the matter
Exact dedupcurl -X POST "$BASE/v1/servicing/cases" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender" \
-H "Idempotency-Key: harbor-collections-2027-05-01" \
-H "Content-Type: application/json" \
-d '{
"customerRef": "412",
"caseTypeCode": "COLLECTIONS",
"reasonCode": "DELINQUENCY_SIGNAL",
"priority": "HIGH",
"loanRefs": ["7204"],
"sourceType": "LMS_EVENT",
"sourceRef": "signal-2027-05-01-HBR"
}'{
"caseId": 1001,
"externalCaseRef": "LE-CASE-1001",
"status": "OPEN",
"deduplicated": false,
"resourceId": 1001
}Exact-source deduplication means tomorrow’s delinquency signal returns this case instead of creating a daily duplicate.
Reserve and accept the work
Atomiccurl -X POST "$BASE/v1/servicing/tasks/reserve-next" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender" \
-H "Content-Type: application/json" \
-d '{ "queueCodes": ["COLLECTIONS"] }'{ "taskId": 2001, "taskTypeCode": "COLLECTIONS_OUTREACH", "queueCode": "COLLECTIONS", "status": "RESERVED", "reservationExpiresAt": "2027-05-01T17:10:00Z" }Reservation is atomic — two workers can never reserve the same task. POST /v1/servicing/tasks/2001/accept confirms it; releasing or letting the reservation lapse returns the work to the queue.
Brief with Cookie
Groundedcurl -X POST "$BASE/v1/servicing/cases/1001/cookie/turns" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender" \
-H "Idempotency-Key: brief-1001-2027-05-01" \
-H "Content-Type: application/json" \
-d '{ "question": "Brief me on this case." }'Cookie answers with the label AI analysis, citations to the delinquency facts and contact history, and the next safe step — voice outreach is permitted, no restriction or budget blocks it, and the last successful payment was $517.14 on March 12. The brief costs one turn; the payoff and last-payment facts inside it are deterministic reads that never touched a model.
Dispatch Nova
Pre-dial re-checkcurl -X POST "$BASE/v1/servicing/voice-dispatches" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender" \
-H "Idempotency-Key: dispatch-2001-2027-05-01" \
-H "Content-Type: application/json" \
-d '{ "taskId": 2001 }'{ "dispatchId": 6001, "taskId": 2001, "workerCode": "COLLECTIONS_VOICE_PRIMARY", "status": "CREATED" }Nova redeems her dial authorization at the moment of dial — consent, local time, contact budget, and debt state re-checked against current facts — then works the call inside her packet. On this one, Maya agrees to a two-part commitment: $260.00 by May 8 and $257.14 by May 22. The disposition maps that conversation to typed records: interaction 3001, a promise proposal, and the follow-up work. See Dispatch Nova on a call for the connector detail.
Record the promise
No money movementcurl -X POST "$BASE/v1/servicing/cases/1001/promises" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender" \
-H "Idempotency-Key: promise-1001-2027-05-01" \
-H "Content-Type: application/json" \
-d '{
"loanRef": "7204",
"commitments": [
{ "amount": { "amount": 260.00, "currency": "USD" }, "dueDate": "2027-05-08" },
{ "amount": { "amount": 257.14, "currency": "USD" }, "dueDate": "2027-05-22" }
],
"sourceInteractionId": 3001,
"borrowerConfirmedAt": "2027-05-01T10:18:42-07:00"
}'{
"promiseId": 5001,
"caseId": 1001,
"status": "ACTIVE",
"guardrailDecision": "WITHIN_POLICY",
"version": 1
}An in-guardrail promise records immediately. Out-of-policy terms return an explainable approval requirement — the borrower’s words are never silently clipped to fit policy.
Export the evidence
Exam-readycurl "$BASE/v1/servicing/cases/1001/evidence-export" \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: demo-lender"The audited bundle carries the whole chain: the signal, the case, the reservation, Cookie’s cited brief, the pre-dial compliance decision, Nova’s disclosure and script versions, the disposition, and the promise — each edge explicit, none inferred from timestamps.
$517.14 in the portal on May 6, event-driven evaluation marks the promise kept from posted facts — see Record a promise-to-pay and Take a payment in the portal.