Key takeaways
- The Information node holds your refund policy text on the canvas for editors to see. It does not affect execution, but its content should match the system prompt you give the AI agent so the two stay in sync.
- The Routing node is logic-only: it evaluates the refund amount field and sends routine requests one way and large or exception amounts to the owner, without creating a task or calling an AI.
- Every refund decision passes through a Human Review node. The manager sees the request details and the AI-drafted reply in the task payload, then clicks Approve, Reject, or Request Changes. That decision is logged with their identity and a timestamp.
- Only users with the Admin or Curate role can open the Workflow Editor. Only users with the Admin or Use role can see and complete tasks in the Task Inbox. Dave by voolama has six default roles: Admin, Create, Curate, Use, Reporting, and Financial.
- Dave by voolama is managed SaaS: voolama LLC operates and hosts the platform. You install nothing and provision no servers. You bring your own AI provider API key.
Summary
The steps
Create the refund reply agent
Before you build the workflow canvas, create the AI agent that will draft refund replies. In Dave by voolama (hellodave.ai), navigate to Agents in the sidebar. You need the Admin or Create role to see this section. Click New Agent, give it a descriptive name such as "Refund Reply Drafter", and click Create Agent.
On the agent detail page, click Create Version. In the Config JSON editor, write a system prompt that instructs the agent to draft a polite, factual refund reply based on your refund policy. Set a model name that matches one you have configured under your AI provider. A minimal starting config looks like this:
{"systemPrompt": "You are a customer service agent for a small business. Draft a clear, polite reply to the customer's refund request. Follow the refund policy exactly as stated below. Do not approve or deny the refund yourself. Present the relevant policy clause and the facts so the manager can make the decision. Policy: [paste your policy here]", "model": "gpt-4o", "temperature": 0.3, "maxTokens": 512}The Config JSON fields that Dave by voolama agents accept are:
systemPrompt,model,temperature(0.0 to 1.0, where 0.0 is deterministic and 1.0 is most varied),maxTokens, andtopP. Click Create Version. The agent is now available to reference in workflows. Note the version number (v1) for use in Step 4.Do this- Go to Agents in the sidebar (Admin or Create role required).
- Click New Agent, name it "Refund Reply Drafter", click Create Agent.
- On the agent detail page, click Create Version.
- Paste your Config JSON with a systemPrompt that includes your refund policy text, a model name, temperature (0.3 recommended for refund replies), and maxTokens.
- Click Create Version to save. Note the version number assigned (v1 for the first version).
ExampleA hypothetical gift shop might set the system prompt to: "You are a customer service agent. Draft a reply to the refund request below. Policy: full refund within 14 days of purchase for wrong or damaged items; store credit only for change-of-mind returns after 14 days; no refund on sale items. Do not approve or deny the refund. Present the relevant policy clause and the facts so the manager can decide." That policy text is identical to what you will paste into the Information node on the canvas in Step 3, so both stay in sync.
Best practice- Keep the system prompt factual and policy-specific. The agent's job is to draft a reply that gives the manager the information they need, not to make the decision.
- Set temperature to 0.2 to 0.4 for refund replies. Low temperature produces consistent, predictable output rather than creative variation.
- Name the agent after its function, not its model. "Refund Reply Drafter" is easier to find in a workflow than "GPT-4o Agent".
- If you update your refund policy, create a new agent version with the updated system prompt and retire the old one. Existing running instances continue using the old version until they complete. Retiring is a one-way action in Dave by voolama: you cannot un-retire a version.
Create the workflow and open the Workflow Editor
Navigate to Workflows in the sidebar. You need the Admin or Curate role to see this section. If the section is not visible, your account does not hold either role. See Why Can't I See Agents, Workflows, or Other Sections in Dave by voolama? for how to diagnose and fix your role assignment.
Click New Workflow, give it a name such as "Refund Request Approval", and save. The workflow opens in the Workflow Editor: a three-panel canvas with the Node Palette on the left, the canvas in the center, and the Properties Panel on the right. A node and edge counter in the top-right corner of the canvas shows the current count as you build. Dave by voolama's Workflow Editor uses ReactFlow as its canvas engine.
Each time you click Save Version, the editor creates a new immutable snapshot of the graph stored as
graphJson. Previous versions are preserved, so you can iterate without losing earlier designs.Do this- Go to Workflows in the sidebar (Admin or Curate role required).
- Click New Workflow, name it "Refund Request Approval", save.
- The Workflow Editor opens with the Node Palette on the left.
- Drag a Start node from the palette onto the canvas. Every workflow requires exactly one Start node.
- Click Save Version to create your first snapshot before building further.
ExampleA hypothetical three-person retail business might name the workflow "Customer Refund Requests" and add a description: "Collects refund requests from staff, drafts a reply using the refund policy, routes large amounts to the owner, and requires manager approval before any refund is processed." That description appears in the workflow list and helps other team members understand what the workflow does without opening the editor.
Best practice- Name your workflow after the business process, not the technology. "Refund Request Approval" is clearer than "Human Review Workflow 3".
- Add a description before you start building. It takes 30 seconds and saves confusion later when the workflow list grows.
- Save a version after every meaningful change. Each save is non-destructive: the previous version is always available if you need to roll back.
Place the User Interaction and Information nodes
The first two nodes after Start collect the refund request and make your refund policy visible on the canvas.
User Interaction node (code:
user_interaction, color: blue): Drag a User Interaction node from the Node Palette and drop it below the Start node. Click the node to open the Properties Panel. Change the label to "Collect Refund Request". Under the Fields section in the Properties Panel, configure the fields the staff member will fill in: customer name, order number, refund amount (number), and reason (text). When a staff member submits this task from the Task Inbox, the workflow resumes with those values in its context. The User Interaction node creates a task of typeuser_interactionin the Task Inbox.Information node (code:
information, color: indigo): Drag an Information node onto the canvas and place it beside the User Interaction node, not in the execution path. Change its label to "Refund Policy". Paste your full refund policy text into the node's config field. The Information node does not affect execution and does not create a task. It is a documentation node that keeps the policy visible to anyone editing the workflow. The same policy text belongs in the agent's system prompt from Step 1, so both stay in sync.Connect the Start node's source handle (bottom circle) to the User Interaction node's target handle (top circle) by dragging between them.
Do this- Drag a User Interaction node onto the canvas below Start. In the Properties Panel, change the label to "Collect Refund Request".
- Under Fields in the Properties Panel, configure: customer name (text), order number (text), refund amount (number), reason (text).
- Drag an Information node onto the canvas beside (not below) the User Interaction node. Label it "Refund Policy". Paste your policy text into its config.
- Connect Start to User Interaction by dragging from the bottom handle of Start to the top handle of User Interaction.
- Click Save Version.
ExampleA hypothetical online clothing store might configure the User Interaction node with four fields: Order Number, Customer Email, Refund Amount (number), and Reason (with options: wrong item, damaged, changed mind, other). The Information node beside it holds the policy verbatim: "Full refund within 30 days of purchase for wrong or damaged items. Store credit only for change-of-mind returns. No refund on sale items." That text is identical to the policy clause in the agent's system prompt, so the AI's draft always reflects the current rules.
Best practice- Keep the User Interaction fields to what the manager actually needs to make a decision: order number, amount, reason. Do not collect information you will not use.
- Use the Information node to keep the policy text on the canvas. When you update your policy, update both the Information node and the agent's system prompt at the same time so they stay in sync.
- The Information node does not affect execution. Place it beside the flow, not in it, so the graph remains easy to read.
Add the Agent Interaction and Routing nodes
After the staff member submits the refund request, the workflow passes the details to the AI agent to draft a reply, then routes the request based on the amount.
Agent Interaction node (code:
agent_interaction, color: purple): Drag an Agent Interaction node onto the canvas below the User Interaction node. Label it "Draft Refund Reply". Click the node to open the Properties Panel. Under Agent Assignment, select the "Refund Reply Drafter" agent you created in Step 1 and choose version v1. Connect the User Interaction node's source handle to this node's target handle. The agent receives the workflow context, including the fields the staff member submitted, and produces a draft reply that becomes part of the workflow context passed to the next node. The Agent Interaction node does not create a task: it runs automatically.Routing node (code:
routing, color: purple): Drag a Routing node below the Agent Interaction node. Label it "Route by Amount". The Routing node is logic-only: it evaluates the refund amount field against a threshold you set and sends the request down one of two paths. No task is created and no AI is called. Connect the Agent Interaction node's source handle to this node's target handle.In the Properties Panel under Routing Configuration, set up two output ports: one for amounts below your threshold (standard path) and one for amounts at or above that threshold, or for exception reasons such as "other" (escalation path). The field name in the condition must match exactly the field name you used in the User Interaction node.
Do this- Drag an Agent Interaction node below User Interaction. Label it "Draft Refund Reply".
- In the Properties Panel under Agent Assignment, select "Refund Reply Drafter" and version v1.
- Connect User Interaction to Agent Interaction.
- Drag a Routing node below Agent Interaction. Label it "Route by Amount".
- Connect Agent Interaction to Routing.
- In the Routing node's Properties Panel under Routing Configuration, configure two output ports: standard path (amount below threshold) and escalation path (amount at or above threshold, or reason equals "other").
- Click Save Version.
ExampleA hypothetical bookshop might set the Routing node to send requests where the refund amount is below a set threshold down the standard path (to a customer service team member) and requests at or above that threshold, or where the reason is "other", down the escalation path (to the owner). The Routing node evaluates those conditions and routes without any human or AI involvement.
Best practice- Label your Routing node's output ports clearly in the Routing Configuration: "Standard" and "Escalation" is clearer than "Port 1" and "Port 2".
- Keep routing logic simple. One threshold and one exception reason is easier to maintain than five nested conditions.
- The Routing node does not create a task or call an AI. It only evaluates conditions and directs the flow.
- The field name in the Routing condition must match exactly the field name you set in the User Interaction node's Fields configuration. A mismatch causes the condition to evaluate as false and all requests go down the default path.
Add Human Review nodes and End nodes for each path
Both the standard path and the escalation path require a manager to approve the refund before it is processed. Each path gets its own Human Review node, which can be assigned to different people.
Standard path Human Review node (code:
human_review, color: amber): Drag a Human Review node onto the canvas and connect it to the standard output port of the Routing node. Label it "Manager Approval". In the Properties Panel under User Assignment, assign it to the user or role responsible for routine refund approvals. The task payload will contain the refund request fields and the AI-drafted reply. The Human Review node creates a task of typehuman_reviewin the Task Inbox.Escalation path Human Review: Drag a second Human Review node and connect it to the escalation output port of the Routing node. Label it "Owner Approval". Assign it to the owner or senior manager.
Each Human Review node generates a task in the Task Inbox when the workflow reaches it. The assignee opens the task, reads the Payload section (customer details, refund amount, reason, and AI-drafted reply), and clicks Approve, Reject, or Request Changes. That decision determines which outgoing edge the workflow follows. Task status values are: pending (amber), in_progress (blue), completed (green), failed (red), cancelled (gray).
End nodes: Connect an Approve edge from each Human Review node to an End node labeled "Refund Approved". Connect a Reject edge to an End node labeled "Refund Declined". Connect a Request Changes edge back to the User Interaction node so staff can update the details and resubmit. A workflow can have multiple End nodes for different outcomes. Every path must end at an End node: dangling paths cause instances to hang at runtime.
Click Save Version when the graph is complete.
Do this- Drag a Human Review node and connect it to the standard output port of the Routing node. Label it "Manager Approval". Assign to the appropriate user or role in the Properties Panel under User Assignment.
- Drag a second Human Review node and connect it to the escalation output port. Label it "Owner Approval". Assign to the owner or senior manager.
- Drag End nodes for each outcome: "Refund Approved" (connected from the Approve edge of each Human Review node) and "Refund Declined" (connected from the Reject edge).
- Connect the Request Changes edge from each Human Review node back to the User Interaction node so staff can update and resubmit.
- Confirm every path leads to an End node. Check the node and edge counter in the canvas top-right to verify the graph is complete.
- Click Save Version.
ExampleA hypothetical e-commerce shop with three staff members might assign the standard Human Review node to a customer service team member (Use role) and the escalation Human Review node to the store owner (Admin role). When a routine refund request arrives, the team member sees it in their Task Inbox, reads the AI-drafted reply in the Payload section, and clicks Approve. When a large or unusual request arrives, it goes to the owner's Task Inbox instead. Both decisions are logged in the audit trail with the user's identity and a timestamp.
Best practice- Assign Human Review tasks to roles rather than individual users where possible. If the assigned user is unavailable, a task assigned to a role can be picked up by anyone holding that role.
- Add a comment when rejecting or requesting changes. The comment is stored in the audit log and helps the staff member understand what to correct.
- For the Request Changes path, connect back to the User Interaction node rather than the Start node. This lets staff update only the fields that need changing, not restart the whole process.
- For a detailed walkthrough of what the manager will see and how to complete a task, share How Do I Complete a Human Review Task in Dave by voolama? with your team before go-live.
Activate the workflow and brief your team
A workflow in Dave by voolama starts in Draft status. It cannot be run by staff until you set it to Active. In the Workflows list, open the workflow and change its status to Active.
Before you activate, run test instances in Draft status to confirm the routing logic works and the agent produces sensible drafts. Submit a hypothetical refund request with a low amount to test the standard path and a high amount to test the escalation path. Confirm each lands in the correct person's Task Inbox.
Once active, brief the two groups of people who will use the workflow:
- Staff who collect requests: They will see a User Interaction task in their Task Inbox when a refund request needs to be logged. They fill in the fields and click Approve to submit. They do not need to understand the rest of the workflow.
- Managers and the owner who approve: They will see a Human Review task in their Task Inbox. The Payload section contains the customer's details, the refund amount, the reason, and the AI-drafted reply. They read all of it, optionally add a comment, and click Approve, Reject, or Request Changes.
Every decision is recorded in the audit log with the user's identity and a timestamp. The audit log is per-tenant and encrypted with AES-256-GCM authenticated encryption. When SOC 2 or GDPR compliance mode is active, these records support SOC 2 CC6.1 (logical access controls) and GDPR Article 30 (records of processing activities). For more on how the audit trail works across approval workflows, see AI Agent Audit Trails and Approval Workflows: How DAVE Keeps Every Action Accountable.
For guidance on keeping the approval step fast without skipping it, see How to Review AI Output Without Becoming the Bottleneck.
Disclosure: Dave by voolama is the product described in this guide, published by its maker, voolama LLC. This is vendor documentation, not independent legal or compliance advice.
Do this- In the Workflows list, open the workflow and set status to Active.
- Run a test instance with a low refund amount (standard path) and a high amount (escalation path) before going live.
- Confirm each test task lands in the correct person's Task Inbox.
- Brief staff who collect requests: they complete User Interaction tasks in the Task Inbox.
- Brief managers and the owner: they complete Human Review tasks. Share the link to the Human Review task guide.
- Confirm all approvers have the Admin or Use role so they can see and complete tasks in the Task Inbox.
ExampleA hypothetical three-person retail business might run two test instances before telling customers the new process is live. The owner tests the escalation path by submitting a high-amount hypothetical request and confirming it lands in their Task Inbox. A team member tests the standard path with a low-amount request. Both confirm the AI-drafted reply in the Payload section looks correct and the graph shows the correct End node reached. They then activate the workflow.
Best practice- Test both paths before activating. A Routing node misconfiguration that sends all requests down the standard path will not be obvious until a large refund slips through without owner review.
- Check that every approver has the Admin or Use role. Users with other roles cannot see the Task Inbox. See Why Can't I See Agents, Workflows, or Other Sections in Dave by voolama? if someone reports they cannot find their tasks.
- Keep the manager's approval step genuinely human. The AI drafts the reply; the manager decides the outcome. Do not configure the workflow to auto-approve based on the agent's output.
What makes this guide different from the general approval workflow articles
Dave by voolama (hellodave.ai) is a managed AI workflow platform where you build workflows by placing nodes on a visual canvas and connecting them with edges. If you are new to Dave workflows, start with How Do I Set Up My First AI Workflow for My Small Business? for the fundamentals. AI Workflows for Structured Approvals explains the general pattern of automating approval processes while keeping humans in control.
This guide covers three things those articles do not: (1) the refund-specific node sequence, including the Information node (information type, indigo color) that holds your written refund policy on the canvas and keeps it in sync with the agent's system prompt; (2) the two-tier Routing node configuration that sends routine refunds to a team member and large or exception amounts to the owner; and (3) the exact Config JSON fields for a refund reply agent, including the system prompt structure that instructs the agent to present policy clauses rather than make decisions.
For a refund request workflow, you need these node types from the ten available in Dave by voolama:
- Start (
start, green): the entry point. Every workflow has exactly one. - User Interaction (
user_interaction, blue): pauses the workflow and creates a task so a staff member can enter the customer's refund details: order number, amount, and reason. - Information (
information, indigo): holds your refund policy text on the canvas. Does not affect execution. Keeps the policy visible to editors and should match the agent's system prompt exactly. - Agent Interaction (
agent_interaction, purple): calls your AI agent to draft a refund reply based on the policy and the submitted details. Runs automatically, no task created. - Routing (
routing, purple): logic-only branching. Evaluates the refund amount and sends routine requests one way and large or exception amounts to the owner. No task, no AI. - Human Review (
human_review, amber): creates a task in the Task Inbox where a manager reads the request, the AI draft, and the amount, then clicks Approve, Reject, or Request Changes. Every decision is logged. - End (
end, red): one for each outcome: approved, declined, and returned for changes.
What this guide does not cover
This guide covers only the workflow canvas build for refund request approval in Dave by voolama. It does not cover the following:
- Connecting an AI provider: Before any Agent Interaction node can run, you must configure at least one AI provider under Admin in your workspace. Dave by voolama supports seven AI provider types: OpenAI, Anthropic, Azure OpenAI, Google, OpenAI-compatible, local (Ollama), and custom. This guide assumes provider setup is already done.
- Processing the refund in a payment system: This workflow captures the manager's approval decision and logs it. It does not connect to a payment processor. Connecting to an external system requires an API Call node, which is outside the scope of this guide.
- Writing your refund policy: The guide assumes you have a written refund policy to paste into the Information node and the agent's system prompt. What your policy should say is a business and legal question, not a workflow question.
- Compliance with consumer protection law: A workflow that logs manager approvals supports your internal records. It does not guarantee compliance with the FTC's Mail, Internet, or Telephone Order Merchandise Rule (16 CFR Part 435) or state-level consumer protection statutes, which set their own requirements for refund timelines and disclosures. Check those requirements separately with a qualified adviser.
- Multi-currency refunds: The Routing node in this guide evaluates a single numeric amount field. If your business processes refunds in multiple currencies, you will need to account for currency conversion before the routing condition runs, which is a more advanced workflow design not covered here.
Disclosure: Dave by voolama is the product described in this guide, published by its maker, voolama LLC. This is vendor documentation, not independent legal or compliance advice.
Who needs which role before you start
Dave by voolama has six default roles: Admin, Create, Curate, Use, Reporting, and Financial. Roles are editable. Before you build this workflow, confirm the right people hold the right roles:
| What they do | Role needed |
|---|---|
| Build and edit the workflow in the Workflow Editor | Admin or Curate |
| Create and version the refund reply agent | Admin or Create |
| Complete User Interaction tasks (log refund requests) | Admin or Use |
| Complete Human Review tasks (approve or reject refunds) | Admin or Use |
| View the Workflows section in the sidebar | Admin or Curate |
| View the Agents section in the sidebar | Admin, Create, or Curate |
| View the Task Inbox in the sidebar | Admin or Use |
If a team member cannot see the Workflows, Agents, or Tasks section in the sidebar, their role does not include the required permission. See Why Can't I See Agents, Workflows, or Other Sections in Dave by voolama? for how to diagnose and fix this before you start building.
Frequently asked questions
Which roles can build this refund workflow in Dave by voolama?
Only users with the Admin or Curate role can open the Workflow Editor and place or connect nodes. Users with the Create role can create and edit agents but cannot open the Workflow Editor. Users with the Use role can complete tasks in the Task Inbox but cannot edit workflows. Dave by voolama has six default roles: Admin, Create, Curate, Use, Reporting, and Financial. If you cannot see the Workflows section in the sidebar, your account does not hold the Admin or Curate role. Ask your Admin to check your role assignment.
What does the Information node do in this refund workflow?
The Information node is a documentation node on the canvas. It does not affect execution and does not create a task or call an AI. Its purpose is to hold your refund policy text in a visible, editable place on the graph. You copy that same policy text into the agent's system prompt so the AI always drafts replies that match your current rules. The node also helps anyone editing the workflow later understand what policy the agent is working from.
What does the manager see when a refund task arrives in the Task Inbox?
The manager opens the Task Inbox from the sidebar and clicks the Human Review task. The task detail page shows a Payload section containing the JSON data passed from the workflow: the customer's refund request details, the refund amount, the reason given, and the AI-drafted reply. The manager reads all of this, optionally adds a comment, then clicks Approve, Reject, or Request Changes. That decision is recorded in the audit log with the manager's identity and a timestamp, supporting SOC 2 CC6.1 and GDPR Article 30.
Can the Routing node send large refunds to a different person than standard refunds?
Yes. The Routing node evaluates the refund amount field against the threshold you set in its Routing Configuration in the Properties Panel. Requests below the threshold follow the standard Human Review path, assigned to a team member with the Use role. Requests at or above the threshold follow the escalation path, connected to a second Human Review node assigned to the owner or a senior manager. Both paths end at an End node after the decision is made.
Is every refund decision recorded for compliance purposes?
Yes. Every Human Review task completion is logged in the audit trail with the acting user's identity, the decision made (Approve, Reject, or Request Changes), any comment they added, and a timestamp. When SOC 2 or GDPR compliance mode is active in Dave by voolama, these events support SOC 2 CC6.1 (logical access controls) and GDPR Article 30 (records of processing activities). The audit log is per-tenant, encrypted with AES-256-GCM authenticated encryption, and is not shared with other customers.
Sources
- AI Workflows for Structured Approvals: How to Automate an Approval Process Without Losing Human Control (hellodave.ai)
- AI Agent Audit Trails and Approval Workflows: How DAVE Keeps Every Action Accountable (hellodave.ai)
- GDPR Article 30: Records of Processing Activities (gdpr-info.eu)
- FTC Mail, Internet, or Telephone Order Merchandise Rule (16 CFR Part 435)
Last reviewed