PLAYBOOK · INTEROPERABILITY
Let your workflows escalate to VDF AI instead of migrating to it.
Your BPM engine, scheduler, or in-house service already runs the process correctly most of the time. What it cannot do is the ambiguous tail. This playbook wires that tail to VDF AI over plain HTTP: pick the right call surface, hand off asynchronously with a run_id, track it, and return a decision your process can act on — with the audit record still intact.
Escalation is a familiar pattern in enterprise software: the automated path handles the routine, and anything it cannot resolve goes to a queue where a person applies judgement. Agentic AI slots into exactly that shape. The interesting design question is not how to call an endpoint — it is where in your process the escalation boundary belongs, and what has to come back across it for the next step to be safe.
The problem
The exception queue is where the cost actually is
Deterministic automation clears the volume and leaves the judgement. What remains is a queue that grows on bad weeks, carries the longest handling times, and is the one part of the process nobody has a plan to automate — because it is the part that needs reasoning.
The VDF AI approach
Escalate a case, get a tracked run back
One HTTP call hands the case over and returns a run identifier immediately. Your process stays in charge of state and SLAs while the run executes, streams events, records every node, and produces evidence you can attach to the case file.
WHY THIS MATTERS NOW
Migration is optional. Reach is not.
Replacing a working orchestration engine to gain AI capability is a trade almost nobody should take. Those engines encode years of exception handling, compensation logic, and compliance sign-off. The rational move is to leave them in place and give them somewhere to send the cases they were never able to finish.
That requires three properties from the AI side, and only three: an addressable entry point, an asynchronous contract so a long reasoning run never blocks a process thread, and an inspectable record so the decision survives an audit. Run records, per-node outputs, live events, and proof endpoints exist precisely so an external caller can satisfy the third one without trusting a black box.
CHOOSE THE CALL SURFACE
Three entry points, matched to how much structure you already have
Bounded judgement
POST /api/agent/execute
One agent, one prompt, one answer, with optional session_id for follow-ups. Use it when the escalation is a classification, an extraction, or a draft. Synchronous, so give the client a generous timeout.
Governed process
POST /networks/{id}/execute
A versioned network you already reviewed and approved. Returns a run_id immediately; nodes, events, and a ledger follow. This is the surface most production escalations should use.
Novel task
POST /intent/decompose
The plan does not exist yet. Send a description and receive a validated NetworkSpec with nodes and edges. Useful for research-shaped escalations — and for authoring the network you will later pin.
WHAT YOU NEED TO START
Prerequisites for an escalation branch
Your side
- A workflow step that can call HTTP and wait
- A durable place to store
run_id - An existing human queue as the fallback
- A measurable trigger condition
VDF AI side
- Network reachability from your engine
- A JWT issuer both sides trust
- A reviewed network, or a chosen agent
- Domain policy set for the case type
Operations
- An escalation budget per period
- Alerting on run failures and timeouts
- A reviewer who reads hints weekly
- Retention agreed for run records
REFERENCE ARCHITECTURE
The escalation branch, end to end
deterministic path
low confidence · exception · no rule
returns run_id
WS events · node outputs
ledger reference
or to the human queue
PLAYBOOK · STEP BY STEP
Wiring the branch without touching the happy path
Draw the line the deterministic path should keep
Write down what your engine will continue to own outright: validation, state transitions, compensation, SLA timers, and every case a rule already resolves. Escalation only makes sense as an exception to a path that stays authoritative — if you find yourself escalating the majority of cases, the rules are the problem, not the reasoning.
Make the trigger explicit and measurable
Name the condition in code, not in a comment. In practice it is one of four: a classifier below a confidence floor, an unmatched rule, a case sitting past an SLA threshold, or a queue depth that a shift cannot clear. Log the trigger on the case so you can later count how often each fired and whether escalation actually helped.
Mint a short-lived token per escalation
Authenticate with an HS256 JWT in the Authorization header. Issue it from a service identity at call time rather than parking a long-lived credential in the workflow engine's connection settings.
curl -sS -X POST "$AGENTHUB/api/agent/health" \
-H "Authorization: Bearer $VDF_JWT"
# 401 { "success": false, "error": "JWT token invalid", "code": "invalid_token" } Verify auth against a health call before wiring the real branch — it separates credential problems from payload problems on day one.
Hand the case over and keep the run identifier
Execution returns immediately with an identifier. Persist it on your case record in the same transaction that marks the case escalated, so a crash between the two never loses the link.
POST $V3/networks/claims_exception_review/execute
Content-Type: application/json
{ "input": { "claim_id": "C-88213", "reason": "no_rule_match", "documents": ["…"] } }
-> { "run_id": "6a2c…" } Track the run instead of blocking on it
Subscribe to the event stream where your engine supports long-lived connections, and fall back to polling the run record where it does not. Both read the same state, so a hybrid — stream when you can, poll on reconnect — is safe.
WS $V3/runs/<run_id>/events # live: type, ts, node_id, payload
GET $V3/runs/<run_id> # run record (poll with backoff)
GET $V3/runs/<run_id>/nodes/<node> # the specific step you care about Poll with backoff rather than a tight loop, and cap total wait with a timeout that maps to your own SLA — an escalation that has run past its usefulness should go to a human, not keep waiting.
Bring back a decision, not a paragraph
Read the node whose output your next step actually consumes and map it onto your own domain vocabulary — an enum your process already understands, plus the supporting text. Store the run identifier and the proof reference alongside it so the case file answers "why" without anyone logging into a second system.
GET $V3/runs/<run_id>/proof # provenance for the case file
GET $V3/runs/<run_id>/related?top_k=5 # comparable prior runs Keep the human queue as a first-class outcome
Route anything the run could not settle to the reviewers who handle it today. When they correct it, capture the correction as hints on that run and apply them to a derived network — the queue stops being pure cost and becomes the training signal for the next version.
GET $V3/runs/<run_id>/hints
POST $V3/runs/<run_id>/apply_hints -d '{ "mode": "new_network" }' Harden the branch like any other dependency
Give the escalation path the same operational treatment as a payment gateway: exponential backoff that honours Retry-After on a 429, a circuit breaker that diverts to the human queue when error rates spike, an idempotency key so a retried workflow step never starts a second run, and a per-period cap so one upstream incident cannot exhaust a month of capacity in an afternoon.

OUTCOMES
What changes for the process owner
your orchestration keeps state, SLAs, and compensation logic exactly as designed.
escalations: every case carries a run identifier and a retrievable per-node record.
by design — turn the branch off and the deterministic path behaves as it did before.
SEEMR REFERENCE
The escalation path gets cheaper the more you use it
Every escalated run is an observation. SEEMR uses those outcomes to improve model and tool selection within the policy your domain permits, so the same branch trends toward lower cost and better fit over time — without a change in the calling workflow.
FREQUENTLY ASKED QUESTIONS
What integration teams ask before opening the branch
Do we have to move our process into VDF AI to use it?
No, and for most estates you should not. Your BPM engine, scheduler, or in-house service keeps ownership of the process, its state, and its SLAs. VDF AI is called at specific points where the deterministic path runs out of answers.
Which endpoint should an external workflow call?
Three surfaces cover almost everything. POST /api/agent/execute for a single bounded judgement, POST /networks/{network_id}/execute for a governed multi-step process that returns a run_id, and POST /intent/decompose when the task is novel enough that the plan itself has to be generated first.
Should the escalation call be synchronous?
Only for short single-agent calls, and even then set a generous client timeout. Network execution is asynchronous by design: you receive a run_id immediately, then either subscribe to the run's WebSocket event stream or poll the run record. Blocking a workflow thread on a multi-step run is the most common integration mistake.
How do we authenticate from an external system?
Send a VDF-issued HS256 JWT as Authorization: Bearer <token>. Service integrations typically mint a short-lived token per escalation from a service identity rather than holding a long-lived credential in the workflow engine.
What do we store back on our own record?
The run_id at minimum, plus the decision and the node output you acted on. That makes any later question — why did this case get routed this way — answerable from your own system, with the full per-node record and proof available on the platform side.
What happens when the agent is not confident enough to act?
Treat low confidence as a routing outcome, not a failure. Send the case to your existing human queue and use the run's hints to capture what the reviewer changed, then apply those hints to produce an improved derived network rather than editing the live one.
How do we stop a bad day upstream from becoming a bad day here?
Budget the escalation path like any other dependency: a cap on escalations per period, exponential backoff that honours Retry-After on a 429, a circuit breaker that falls back to the human queue, and an idempotency key on your side so a retried workflow step does not start a second run.
RELATED PLAYBOOKS
Continue with related VDF AI patterns
GET IN TOUCH
You Have Questions
Tell us what you’re trying to achieve—governed AI Networks, enterprise RAG, deep integrations, or on‑premise deployment. We’ll help you map the right architecture, security posture, and rollout path. If you’re moving beyond AI pilots and need scalable, auditable execution, reach out—our team is ready to help.