From there RevDesk decides what to do next after every interaction, on whichever channel is most likely to get an answer, until the objective is met or the guardrails stop it.
How a job differs from a sequence
A drip sequence sends step 3 on day 4 whether or not anyone replied. A job re-decides every time something happens.- It reasons between engagements. She replied on iMessage but never picks up the phone, so the next touch is a text. She has gone quiet through six touches, so the job stops rather than becoming the reason she opts out.
- It remembers across conversations. What a customer said in March is context for the call in July. Memory is per-contact and outlives the job that learned it.
- It terminates in an outcome, not in a step count.
Decisions are deterministic
Whether to make contact, on which channel, and when are decided by a policy layer, not by a language model, and every decision is written down with its reason. The model is used for one thing: wording the message once the policy layer has already decided to send one. This matters because “why did you contact my customer at 9pm” has to be answerable from a rule rather than from a sampled token. In lending and healthcare, that is something buyers audit.Long horizon is not long running
A 45-day loan origination is long-horizon because it spans dozens of decision points, not because a process runs for 45 days. A job is a durable record; the planner that advances it is a short task woken by a signal or a timer. Cost scales with the number of decisions, not with elapsed time.Statuses
A job isOPEN while it is being worked, and PAUSED if you halt it by hand. Three statuses are terminal and close the job:
Outcomes
Every job ends in an outcome, and every outcome links to the exact calls and messages that produced it.APPOINTMENT_SET · APPOINTMENT_KEPT · QUALIFIED_LEAD · UNIT_SOLD · PRIOR_AUTH_OBTAINED · RETAINER_SIGNED · VISIT_BOOKED · DEMO_HELD · APPLICATION_SUBMITTED · LOAN_FUNDED · ENROLLED · LEASE_SIGNED
An outcome cannot be recorded without evidence. That is deliberate: a charge you cannot trace back to the interactions behind it is one you cannot defend when a customer disputes the invoice. Every outcome is visible in the product, exportable, and disputable in one click. Opening a dispute removes it from billing immediately.
The timeline
Every job keeps an append-only record of what happened, in order:
This is the same view your team opens in the product, not a separate report. The left column is the label the product shows you; the middle column is the
row_type the API returns. Note that the decision band reads RevDesk on screen and REASONING over the wire.
Headless
You do not need to open RevDesk to use it.Fields
GET /v1/jobs/{id} returns the job with its full events timeline and any outcomes, each with the evidence behind it.
Webhooks
Progress and the terminal outcome arrive on webhooks. Subscribe withPOST /v1/webhook_subscriptions:
Because
job_progressed carries the rationale for each action, an API-only integration can audit decisions without opening the app.
Requires the jobs:read and jobs:write scopes. The same job also appears in the product on the timeline above. Headless and hands-on are the same engine, not two products.