Skip to content

Quickstart

Build a workflow that takes a support ticket, classifies it with AI, and returns the category and priority. Then run it on your organization’s vault and read the run step by step.

A workflow is an agent: it lives in your Agent Service, is deployed like any agent, and runs on vault data once it is connected to the vault. You can build it in the ROC Workflow Builder or in TypeScript; pick a tab. Both produce the same kind of workflow.

New ticket (trigger) → Classify (AI) → Result { category, priority }

Before you begin

  • A ROC account with an Agent Service you can publish to, and an organization vault your account can write to. See Your Agent Service.
  • For the Code tab, also Node.js 18 or later, pnpm, and the CLI credentials described in Install the CLI: your Agent Service’s bucket id and public key, a DDC access token in CEF_DDC_ACCESS_TOKEN, and a CLI access token from ROC in CEF_ACCESS_TOKEN.

In the Builder, the classifier is an agent you create in place.

1. Create the workflow

  1. In ROC, open your Agent Service and choose Workflows in the side navigation.
  2. Choose New workflow.
  3. Name: ticket-triage. What it does: Classify a support ticket.
  4. Under Start from, choose Blank (“A trigger and one step”).
  5. Choose Create workflow.

The canvas opens on the Editor tab with an Event trigger wired to one Agent step.

2. Describe what starts a run

Select the trigger. Leave Event type as workflow.start, and set Example payload:

{ "ticketId": "T-1", "text": "I was charged twice for my October invoice." }

The Run dialog is prefilled from this example.

3. Create the classifier agent

  1. Select the Agent step and choose Choose an agent…, then New agent.

  2. Fill the form:

    • Name: Ticket classifier
    • What it does: Classifies a support ticket by category and priority.
    • Instructions:
      You triage support tickets.
      Answer as JSON and nothing else:
      {"category": "billing" | "bug" | "question", "priority": "low" | "normal" | "urgent"}
    • Model: keep the default, or pick a language model.
  3. Choose Create agent. The step now uses it.

    The New agent form: name, what it does, instructions, model

  4. On the step, set What to ask it to ={{ $json.text }}, and Answer it should give to:

    { "category": "billing", "priority": "normal" }

    A run fails at this step, naming the missing field, if the agent answers without either key.

4. Return a result

  1. Choose Add a node on the canvas side rail, open Outputs, and add Result.
  2. Wire the Agent step’s output to the Result step.
  3. In Where each field comes from, add category from ={{ $json.category }} and priority from ={{ $json.priority }}.

5. Deploy

Choose Deploy 0.1.0 in the toolbar. Deploy publishes the workflow as an agent of your Agent Service, makes this version live, and connects the workflow and its agent to your organization’s vault. If ROC asks you to approve the connection, approve it.

When it is done, the button reads Deployed 0.1.0. A finished workflow on the canvas looks like this one, which also branches on priority and pages Slack:

A deployed ticket-triage workflow on the Editor tab

6. Run it

  1. Open the Executions tab. The chip beside Run shows where runs go: Runs in {organization} · {scope}.
  2. Choose Run. What starts it holds your example payload; edit the text if you like.
  3. Choose Run in the dialog.

The run appears in the list and on the canvas. Each step turns Success as it finishes.

The Executions tab with done, waiting, and failed runs

7. Read the run

Open the run and select each step:

  • the trigger Produced your payload;
  • the Agent step Received the ticket and Produced category and priority merged into the item;
  • the Result step shows the run’s output, with category and priority.

One run: the canvas, its summary, and the execution log with step timings

The run summary shows how long it took, the tokens used, and the cost. If a step failed, its error names the reason; see Monitor runs.

What you built

A deployed workflow, connected to your organization’s vault, that classifies a ticket and returns a typed result. Every run is recorded as a Job you can open step by step, re-run, or add to a dataset.

Next steps