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. Each step passes its output to the next. Run it instantly, invoke it as a !command, or put it on a schedule. Approval and prompt steps pause the run until someone responds, so human checkpoints are built in.
Key capabilities
- Visual builder canvas plus an AI assistant that generates and refines the graph from natural language
- 17 step types including Tool, AI Prompt, Condition, Transform, Loop, Filter, Delay, Notification, Script, Sub-workflow, Parallel Fork/Join, and Error Handler
- Tool steps wired to any registered AI tool, with data passed from upstream outputs and workflow parameters
- Approval and Prompt steps that pause the run for human approval or input, then resume from where they left off
- Script steps for custom calculations, with AI-assisted drafting and a security review before they run
- Three ways to run: type the
!commandor click Use in Chat, put it on a schedule, or click Run now on a scheduled workflow - 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 mocked outputs for any write operation
- Per-workflow guardrails: a cost cap (USD), max duration, and an error policy (fail / pause / retry / skip)
- Drafts auto-save; Publish snapshots a version, with full version history and one-click revert
- All Workflows, Scheduled, and History tabs, with filters for System, Private, Business, and Firm, plus search and sorting by recent, name, creator, or most used
- Run history with per-step states and background execution that survives disconnects
- Duplicate any workflow as a starting point
How it works
Build the graph (by hand or with the AI assistant), publish it, then trigger it. Each step runs in order and passes its output downstream. When the run reaches an approval or prompt step, execution pauses and saves its state; once a human responds it resumes from that exact step.
flowchart TD
build["Build graph (canvas / AI assistant)"] --> publish["Publish (snapshots a version)"]
publish --> trigger{"Trigger: !command / schedule / Run now"}
trigger --> run["Run steps in order"]
run --> gate{"Approval or prompt step?"}
gate -->|"Yes"| suspend["Pause + save progress"]
suspend --> resume["Human responds -> resume"]
gate -->|"No"| done["Complete + log run"]
resume --> doneHow to use it
- Open Workflows and click New workflow to launch the builder.
- Describe the automation to the AI assistant chat, or drag steps from the library onto the canvas and connect them.
- Configure each step — pick the tool and params for Tool steps, the prompt for AI steps, the expression for Conditions, the approvers for Approval gates.
- Link steps to pass data between them; use auto-fill to let AI infer parameter values from upstream outputs.
- Click Validate to check structure, tool references, and data links, then Test Run to dry-run the graph (writes are mocked) and watch per-step results stream in.
- Give the workflow a name and a unique command name, then Publish. This validates the graph and snapshots a version.
- Run it: type the
!commandin chat or click Use in Chat, or, once published, click Schedule to set a daily, weekday, weekly, or monthly time in your timezone, then Run now from the Scheduled tab whenever you want it immediately. - Track outcomes on the History tab; click Respond on any waiting approval or prompt step to let the run continue.
Pro tips
- Start from a single Tool step and test often — the dry-run uses live read-only tools so you see real data without touching the books.
- Set a realistic Max duration under Safety Limits (the default is 60 seconds; AI-heavy graphs need more or they will be cut off). Each workflow also has a cost cap, $0.50 by default.
- Choose the right error policy: Pause is safest for multi-step financial workflows (it suspends instead of aborting), while Skip keeps best-effort steps from failing the whole run.
- Use Approval steps 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 step over a long Condition/Transform chain for heavy data crunching — it includes accounting helpers like aging buckets and days-sales-outstanding calculations.
In-depth guide
Triggers, branches, and actions
| Concept | Where it lives | Examples |
|---|---|---|
| Trigger | !command, schedule, or Run now |
!month_close, every Monday at 9am, manual run |
| Branch | Condition, Filter, Loop, Parallel Fork/Join | route large items to review, iterate over invoices |
| Action | Tool, Transform, Script, Notification, Sub-workflow | create an entry, send an email, run a custom calculation, call another workflow |
| Human checkpoint | Approval, Prompt | approve a payment, collect a missing date |
Step types at a glance
| Step | Purpose |
|---|---|
| Tool | Call a registered AI tool (read or write) with parameters |
| Prompt | Collect human input via a form, or inject a prompt |
| Approval | Pause 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, up to 500) |
| Filter | Keep items from a collection matching an expression |
| Delay | Pause for a fixed number of seconds (up to an hour) |
| Notification | Send an email, Slack, or webhook message |
| Variable / Template | Set a value or render a text template |
| Script | Run a custom calculation step with accounting helpers |
| Sub-workflow | Invoke another workflow with mapped parameters |
| Parallel Fork / Parallel Join | Run branches concurrently, then merge |
| Note | Canvas annotation (non-executing) |
| Error Handler | Collect errors from upstream steps into one result for alerting or branching |
Schedules and guardrails
- Recurring schedule — pick daily, weekdays, weekly, or monthly, a time, and your timezone (e.g. every Monday at 9am).
- Interval — a fixed cadence between runs (minimum 60 seconds, maximum 24 hours), available through the API.
- After bank sync — through the API, a schedule can run when a bank sync completes, at most once per hour by default.
- Each user gets at most one schedule per workflow; schedules can be private or shared business-wide.
- In a scheduled run, an Approval step waits for a person by default. It can instead be set to skip everything after it, or to apply its timeout decision after a number of hours.
- Every workflow carries a cost cap (default $0.50), a max duration (default 60 seconds, up to an hour), and an error policy: Fail (abort), Pause (suspend for inspection), Retry (re-attempt), or Skip (continue past the failure).
Versioning and testing
- Drafts auto-save as you work; Publish runs strict validation on structure, step configs, and data links between steps.
- Publishing snapshots a version — browse history and revert the draft to any prior version (which un-publishes it until you publish again).
- Test runs mock all write operations, so they never mutate real data — only read-only tools execute for real.
- An empty graph can't be tested or run — add at least one step first.