Workflows
Build multi-step automations on a drag-and-drop canvas — or describe what you want and let the AI assistant generate the graph for you. A workflow is a DAG of typed nodes (tool calls, AI prompts, conditions, loops, approval gates, sandboxed Python, and more) that passes data node-to-node. Run it instantly, invoke it as a !command, or put it on a schedule. Human-in-the-loop nodes suspend the run until someone responds, so approvals and manual input are first-class.
Key capabilities
- Visual builder canvas plus an AI assistant that generates and refines the graph from natural language (generated live)
- 17 node types including Tool, AI Prompt, Condition, Transform, Loop, Filter, Delay, Notification, Script, Sub-workflow, Parallel Fork/Join, and Error Handler
- Tool nodes wired to any registered AI tool, with
{{ref}}data-passing from upstream node outputs and workflow params - Approval gate and Prompt nodes that suspend the run for human approval or input, then resume from where they left off
- Sandboxed Python Script nodes (pandas, numpy, openpyxl, reportlab) with AI code generation and an automatic security scan
- Three trigger modes: manual
!command, scheduled (cron / interval / event), or "Run now" on demand - Visibility scoping per workflow — private, business-wide, or firm-wide — plus read-only built-in system workflows
- Dry-run test mode using live read-only tools and AI-mocked outputs for any write operation
- Per-workflow guardrails: max cost (USD), max duration, and an error policy (fail / pause / retry / skip)
- Publish-and-version model with full graph version history and one-click revert
- Run history with per-node states and durable execution that survives restarts
- Static graph validation and AI auto-fill of node parameters from upstream context
How it works
Build the graph (by hand or with the AI assistant), publish it, then trigger it. Each node runs in order and passes its output downstream. When the run reaches an approval gate or prompt node, the execution suspends and persists its state; once a human responds it resumes from that exact node.
flowchart TD
build["Build graph (canvas / AI assistant)"] --> publish["Publish (snapshots a version)"]
publish --> trigger{"Trigger: !command / schedule / Run now"}
trigger --> run["Run nodes in DAG order"]
run --> gate{"Approval or prompt node?"}
gate -->|"Yes"| suspend["Suspend + persist state"]
suspend --> resume["Human responds -> resume"]
gate -->|"No"| done["Complete + log run"]
resume --> doneHow to use it
- Open Workflows (the
/workflowspanel) and click New to launch the builder. - Describe the automation to the AI assistant chat, or drag nodes from the library onto the canvas and connect them.
- Configure each node — pick the tool and params for Tool nodes, the prompt for AI nodes, the expression for Conditions, the approvers for Approval gates.
- Wire data between nodes using
{{ref}}references; use auto-fill to let AI infer param values from upstream outputs. - Use Test to dry-run the graph (writes are mocked) and watch per-node results stream in.
- Publish the workflow — this validates the graph, assigns its
!commandname, and snapshots a version. - Trigger it: type the
!commandin chat, click Run now, or open the Schedule modal to set a cron, interval, or event trigger. - Track outcomes in run history; respond to any suspended approval/prompt nodes to let runs continue.
Pro tips
- Start from a single Tool node and test often — the dry-run uses live read-only tools so you see real data without touching the books.
- Set a realistic max cost and max duration per workflow (defaults are $0.50 and 60s); AI-heavy graphs need higher limits or they will be cut off.
- Choose the right error policy:
pauseis safest for multi-step financial workflows (it suspends instead of aborting), whileskipkeeps best-effort steps from failing the whole run. - Use Approval nodes for anything that moves money or posts entries — they create an auditable human checkpoint and the run survives restarts while it waits.
- Set visibility to business or firm only after publishing a tested version;
!commandnames must be unique within each scope. - Prefer a Script node over a long Condition/Transform chain for heavy data crunching — it ships with pandas and accounting helpers like
aging_buckets()andcalc_dso().
In-depth guide
Trigger / condition / action model
A workflow combines triggers (how it starts), control-flow nodes (how it branches), and action nodes (what it does).
| Concept | Where it lives | Examples |
|---|---|---|
| Trigger | !command, schedule, or Run now |
!month_close, cron 0 9 * * MON, manual run |
| Natural-language triggers | trigger phrases on the workflow | phrases that let the assistant suggest the workflow |
| Condition / branch | Condition, Filter, Loop, Parallel Fork/Join nodes | route large items to review, iterate over invoices |
| Action | Tool, Transform, Script, Notification, Sub-workflow | create an entry, send an email, run Python, call another workflow |
| Human-in-the-loop | Approval, Prompt nodes | approve a payment, collect a missing date |
Node types
| Node | Purpose |
|---|---|
| Tool | Call a registered AI tool (read or write) with params |
| Prompt | Collect human input via a form, or inject a prompt |
| Approval | Suspend for an approve / reject / modify / skip decision |
| Condition | Branch true/false on an expression |
| Transform | AI transform of upstream data into an output variable |
| Loop | Iterate over a collection (capped, default 50 items) |
| Filter | Keep items from a collection matching an expression |
| Delay | Pause for a fixed number of seconds |
| Notification | Send an email or webhook message |
| Variable / Template | Set a value or render a text template |
| Script | Run sandboxed Python (pandas, numpy, openpyxl, reportlab) |
| Sub-workflow | Invoke another workflow with mapped params |
| Parallel Fork / Parallel Join | Run branches concurrently, then merge |
| Note | Canvas annotation (non-executing) |
| Error Handler | Catch failures and alert / branch |
The workflow builder
The builder pairs a React Flow canvas with an AI assistant chat:
- AI assistant — shows live progress updates and returns a complete graph you can keep editing; it can also generate a name,
!commandname, and description from the graph. - Auto-save vs. publish — drafts auto-save as you work (lenient validation), while Publish runs strict validation on the graph structure, node configs, tool references, and
{{ref}}wiring. - Node-context panel — shows exactly which upstream outputs, workflow params, and loop variables are available at any node.
- Auto-fill — uses AI to suggest param values from that context.
Durable & suspendable execution
- Durable runs — a run keeps going and finishes cleanly even if your connection drops, so a disconnect never strands a run.
- Scheduled runs — DayZero checks every minute for schedules that are due and runs them automatically, recording each run and updating the schedule's last and next run times.
- Human-in-the-loop — approval and prompt nodes suspend the run and save its progress; the run resumes from the suspended node when someone responds. This is how the AP Approval workflow waits on each gate.
Execution statuses
| Status | Meaning |
|---|---|
| Running | Actively executing nodes |
| Suspended | Paused at an approval/prompt node awaiting human input |
| Completed | Finished successfully |
| Failed | A node failed under a fail policy, or the run errored |
| Cancelled | Stopped by a user or client disconnect |
Schedules
| Type | Config | Notes |
|---|---|---|
| Cron | cron expression + timezone | e.g. 0 9 * * MON for Monday 9am |
| Interval | interval in seconds (60–86,400) | fixed cadence between runs |
| Event | event type | run when a system event fires |
Each user gets at most one schedule per workflow; a schedule can be private (creator only) or shared business-wide, and tracks its run count, last status, and last error.
Guardrails & error policy
Every workflow carries a max cost (default $0.50), a max duration (default 60 seconds), and an error policy. The policy decides what happens when a step fails:
- Fail — aborts the run.
- Pause — suspends it for inspection.
- Retry — re-attempts the step.
- Skip — continues past it.
Tool nodes additionally support a per-node error action and a retry count.
Visibility, versioning & system workflows
- Scoping — workflows are private, business, or firm, and the
!commandname is unique per scope (checked before publish). - Versioning — publishing snapshots a version, so you can browse history and revert the draft to any prior version (which un-publishes it).
- System workflows — superusers can promote a published workflow to a read-only system workflow visible to everyone.
- Access — Workflows requires the AI Pro add-on.
- Privacy — deleted drafts are recoverable, and run history is scoped per user so teammates can't read each other's run inputs or outputs.
Edge cases
- An empty graph can't be tested or run — add at least one node first.
- Reverting to a version overwrites the current draft graph and marks the workflow unpublished until you publish again.
- Test runs mock all write operations with AI-generated outputs, so they never mutate real data — only read-only tools execute for real.
- Generated Script code is scanned for unsafe operations; flagged code is surfaced rather than silently run.
Start free and automate the multi-step work you repeat every week.