User manual

WorkflowHub, explained properly.

Everything from "what is a workflow" to the complete routing-rule reference. Written for the person who has to actually build and run this — not a brochure.

1. Core concepts

Five nouns. Learn these and the rest of the product reads itself.

ConceptWhat it isAnalogy
WorkflowThe design: the queues work passes through, the form it carries, the rules that govern it.The blueprint
Work itemOne unit of work moving through a workflow. Carries field values, notes, attachments, and a full history.The ticket / the file folder
QueueA step. Work waits here until someone (or an agent) works it and routes it onward.The in-tray on a desk
FieldOne piece of structured data on the work item's form.A box on the form
RuleLogic the platform enforces: block a move, set a value, require a field, route automatically.The policy in the binder

The mental model that matters: a work item is a form that travels through queues. Each queue is a step. At each step, a person or an agent fills in that step's outputs as fields, and the workflow's rules read those fields to decide whether the item is allowed to advance. If you remember nothing else, remember that: structured fields are what let the process govern itself. A note saying "looks good" cannot be enforced. A field ReviewOutcome = Approved can.

2. Workflows

A workflow is a design object containing queues, one or more work-item types, the fields on those types, routes between queues, rules, and permissions. You build it on a visual canvas (Workflows in the menu) or by asking an AI to build it for you over MCP.

2.1 Anatomy

  • Start point — where new items enter.
  • Queues — the steps. See §3.
  • Routes — the legal moves between queues. If there is no route, the move is impossible — this is the single most common cause of "my item won't move."
  • Junctions — a decision node that picks the next queue by evaluating criteria, instead of asking a person to choose.
  • End point — routing here finishes the item (current queue becomes null, status Finished).
  • Work-item types — the form definitions. A workflow can carry more than one.
  • Variables — named workflow-level values (thresholds, endpoints, feature switches) that rules and external apps both read. Managed under the workflow; permission-gated separately (§8).

2.2 Designing one: the order that works

  1. List the steps first. Write the real ones on paper. "Intake → Triage → Work → Review → Done" is a workflow; "stuff we do" is not.
  2. Name what each step PRODUCES. This becomes a field. Review produces a verdict. Testing produces a result. Deployment produces an outcome.
  3. Create the queues, then the routes between them. Only draw a route where the work legitimately flows. Extra routes are how work escapes your process.
  4. Add the fields — one per step output, typed (§4.2), not free prose.
  5. Add the rules that gate the moves (§5). "You may not leave Review until ReviewOutcome is set."
  6. Set permissions (§8), then publish.

The failure mode we see most: a beautifully drawn workflow with no rules. Nothing is enforced, so people (and agents) move work whenever they feel like it, and the process exists only in folklore. The rules are the process. The canvas is just its picture.

3. Queues

A queue is a step where work waits. Its configuration decides who sees the work and how they get it.

3.1 Queue types

TypeBehaviourUse when
Queue onlyShared pool. Anyone permitted pulls the next item.Any team-shared step — the default for real throughput.
Inbox onlyWork is assigned to a specific person and appears in their inbox.Named-owner steps: an approval by one manager.
Inbox and queueBoth — assignable, but unassigned work is still pullable.Teams that mostly self-serve but sometimes hand-assign.
Determined by junctionThe junction's criteria decide the destination.Automatic branching with no human choice.

3.2 The settings that actually change behaviour

  • Requires human approval — a hard gate. An agent cannot advance work out of this queue; only an interactive human can. This is the Golden Rule made mechanical, and it is enforced at the API, not in the UI, so it holds for every caller.
  • Queue context / instructions — the human-facing "what do I do here?" text, shown on the work item's Instructions tab.
  • Bound skills — operating guides delivered to whoever (or whatever) works this queue. See §9.3.
  • Lease trigger — when work lands here, enqueue a task so an external worker (like the edge agent) can claim it.
  • Enrichment (query queues) — on arrival, run a configured query and write the results into the item's fields. This is how you attach "everything we know about this customer" without a human looking it up.
  • Subscriptions — users can watch a queue and be notified on arrival.

3.3 Pull, don't assign

The default working pattern is Pull Next: the platform hands the worker the highest-priority eligible item and locks it to them. This beats assignment for throughput because idle capacity finds work instead of waiting for a dispatcher. Assignment still exists for genuine named-owner steps.

4. Work items & fields

4.1 What a work item carries

  • Ticket ID — human-facing, e.g. OPS-482. Paste one into the top bar to open it.
  • Field values — the structured form data, grouped onto tabs.
  • Description — the markdown body.
  • Notes — commentary; can be marked internal.
  • Attachments — files (with inline preview) or reference links.
  • History — every action, who took it, and what kind of actor they were: human, ai, or app. Stamped server-side from the authentication path; never client-supplied, never editable.
  • Time entries — active-work timers with actor and source (human / agent), started and ended. This is how "how long did it take" becomes a fact rather than a guess.
  • Links & dependencies — relationships to other items, including blocking dependencies.

4.2 Field types

Pick the type by what the value is for. If a rule will test it, it must be discrete and comparable — a combo box, not a paragraph.

#TypeUse for
0TextboxShort single-line text: titles, identifiers, a name.
1MultiLineTextboxLong free text: a summary, review comments.
2CheckboxA boolean gate/flag. Values are "true" / "false".
3ComboBoxSingle choice from a fixed list — the workhorse for gate-checkable outcomes.
4CheckedListboxMulti-select from a fixed list: affected components, a sign-off checklist.
5AttachmentFile upload on the form itself (versioned per field).
6DateFieldA date: target release, verified-on.
7LabelStatic text on the form — instructions, section headers.
8SubWorkItemChild items on the parent's form.
9RadioButtonSmall mutually-exclusive choice shown expanded.
10UserListPick a user — approvers, owners.
11DataGridViewTabular data, often filled from a query.
12ButtonFires an OnButtonClick rule.
13 / 14TextboxWithSpellCheck / MultiLineTextboxWithSpellCheckAs above, with spell check — customer-facing prose.

Design the field a gate will check. Before creating a field, ask: "does advancing past this step require this to be set?" If yes, that field is the subject of a BeforeWorkItemRouted rule — so give it a discrete, comparable value (= "Approved", = "Pass", = "true"), never a sentence.

5. Routing rules — technical reference

A rule is: trigger (when it evaluates) + scenarios (what must be true) + actions (what happens). Scenarios combine with AllScenariosAreTrue (AND) or AnyScenarioIsTrue (OR).

5.1 Triggers — when a rule fires

#TriggerFiresTypical use
0BeforeWorkItemSaveBefore field values are persistedDefault or derive a value; validate; block the save.
1AfterWorkItemSaveImmediately after a successful saveAuto-routing on completion (§6.1) and automatic notes.
2OnFieldUpdateWhen a specific field changesShow/hide dependent fields; cascade a list.
3OnWorkItemOpenWhen the item is openedSet read-only state by who's looking.
4BeforeWorkItemCreatedBefore creation completesStamp defaults from context.
5BeforeWorkItemFinishedBefore an item is finishedFinal completeness checks.
6BeforeWorkItemRoutedBefore any move between queuesThe gate. Pair with CancelAction to refuse a move (§6.2).
7AfterWorkItemCreatedAfter creationNotify; enqueue downstream work.
8AfterWorkItemFinishedAfter finishingFire a completion side-effect.
9AfterWorkItemRoutedAfter a successful moveAnnounce arrival; stamp an entry time.
10OnButtonClickA Button field is clickedOperator-initiated actions.

5.2 Criteria — what a scenario can test

Each criterion compares something to a value using an operator: IsEqualTo, IsNotEqualTo, IsGreaterThan, IsGreaterThanOrEqualTo, IsLessThan, IsLessThanOrEqualTo, MatchesPattern, DoesNotMatchPattern.

#CriterionTests
0FieldA field's value. The one you'll use most.
1UserIsAMemberOfPermissionGroupThe acting user's group membership.
20UserIsNotAMemberOfPermissionGroupThe inverse.
2CurrentTimestampClock time — business-hours logic.
3 / 4 / 5WorkItemReceivedDate / CreatedDate / FinishedDateItem dates — ageing and SLA logic.
6WorkItemStatusCurrent status.
7WorkItemIsInQueueWhere the item is now. Essential for queue-scoping a rule (§6.3).
8WorkItemIsNotInQueueThe inverse — build directional gates with it.
9 / 10WorkItemHasBeenThroughQueue / HasNotBeenThroughQueueHistory: "has this been reviewed at all?"
12NextWorkItemStatusThe status the move would produce.
13 / 14NextQueueIs / NextQueueIsNotWhere it's trying to go. Makes a gate apply to one destination only.
15StaticValueA constant — used to build always-true/false scenarios.
16 / 17 / 18WorkItemStartingStatus / StartingQueueIs / StartingQueueIsNotState at the start of the operation.
19WorkItemHasNewNotesWhether new notes were added.
21 / 22WorkItemPreviousQueueIs / PreviousQueueIsNotWhere it came from — "returning from Review" logic.
23WorkflowVariableA workflow variable's value — thresholds without redeploying rules.
24FieldJsonPathA nested value inside a field's JSON blob (e.g. result.items[0].status).

5.3 Actions — what a rule does

Field & form control

#ActionEffect
0 / 1MakeFieldRequired / MakeFieldNotRequiredConditional requirement — "if Type = Refund, Amount is required."
2SetFieldValueWrite a value into a field.
35SetFieldFromJsonPathExtract a nested JSON value from one field into another.
3SetListValueDatasourceRepoint a list's options (cascading dropdowns).
4 / 5MakeFieldInvisible / MakeFieldVisibleShow fields only when relevant.
6 / 7MakeFieldReadOnly / MakeFieldReadWriteLock a value after a step signs off.
15SetPriorityEscalate automatically.
18 / 19MakeNewEntryRequired / NotRequiredRequire a new note/entry.

Flow control — the ones that govern process

#ActionEffect
10CancelActionRefuse the operation. On BeforeWorkItemRouted this is your gate; the item does not move and the caller is told why.
36RouteWorkItemMove the item to the queue in the action's component key. Pair with AfterWorkItemSave so completing the work is what advances it. An auto-route still passes every gate — it stops a move being forgotten, it does not grant permission for a refused one.
33 / 34EnableRoutingOption / DisableRoutingOptionShow or hide a destination for this item.
8 / 9DisplayMessage / DisplayConfirmationMessageTell or ask the operator.
13AddAutomaticNoteWrite a visible note — make automated decisions observable.

Integration & data

#ActionEffect
12 / 20ExecuteQuery / ExecuteQueryGN2DBRun a configured query.
17 / 22SetFieldValuesToQueryResults (+GN2DB)Fill fields from a query — auto-enrichment.
11 / 21RunConfirmationQuery (+GN2DB)Query, then ask the operator to confirm.
26 / 27SetDataGridViewDataSource (+GN2DB)Populate a grid field.
16SendAnEmailSend from a template.
24 / 25CreateProcessedTriggerRecord / CreateUnprocessedTriggerRecordEnqueue a task for an external worker — the hand-off to your own services.
28LaunchUriOpen a URL.
14RunScriptRun a configured script.
29–32Enable/DisableNewSubWorkItemEntry, Enable/DisableEditSubWorkItemEntryControl child-item entry.

6. Rule recipes

Patterns worth copying, with the exact trigger/criteria/action combination.

6.1 Advance on completion (the engine moves work, not the worker)

Problem: people finish a step and forget to route. Work rots in a queue looking active.

Trigger:   AfterWorkItemSave
Scenario:  Field "TestResult"       IsEqualTo   "Pass"
       AND WorkItemIsInQueue        IsEqualTo   "Test"
Action:    RouteWorkItem -> queue "Verify"
           (Value = "Auto-routed by the Test queue contract")

Now completing the work is the move. The note explains why it moved, so the history reads honestly.

6.2 The gate (nothing leaves without its evidence)

Problem: items advance out of Review with no recorded verdict.

Trigger:   BeforeWorkItemRouted
Scenario:  WorkItemIsInQueue        IsEqualTo    "Code Review"
       AND Field "ReviewOutcome"    IsEqualTo    ""            (unset)
Action:    CancelAction  ("Set ReviewOutcome before leaving Code Review.")

The refusal message is what the caller sees — write it as an instruction, not an error code.

6.3 Always queue-scope a field rule

The classic bug. "If TestResult = Pass then route to Verify" — without WorkItemIsInQueue = Test — keeps firing after the item reaches Verify, because the field is still Pass. The item bounces or refuses to settle. Any rule that reads a field and moves an item must also assert where the item is.

6.4 Directional gate (block one direction only)

Trigger:   BeforeWorkItemRouted
Scenario:  NextQueueIs              IsEqualTo    "Deploy"
       AND Field "DeployApproved"   IsNotEqualTo "true"
Action:    CancelAction  ("Deployment requires sign-off.")

Using NextQueueIs keeps the gate on entry to Deploy without freezing every other move.

6.5 Escalate by age

Trigger:   BeforeWorkItemSave
Scenario:  WorkItemCreatedDate      IsLessThan   {threshold}
       AND Field "Priority"         IsNotEqualTo "Critical"
Action:    SetPriority(Critical)  +  AddAutomaticNote("Auto-escalated on age.")

Store the threshold as a workflow variable so ops can tune it without editing rules.

6.6 Conditional requirement

Trigger:   OnFieldUpdate (RequestType)
Scenario:  Field "RequestType"      IsEqualTo    "Refund"
Action:    MakeFieldRequired(RefundAmount) + MakeFieldVisible(RefundAmount)

7. Projects

A workflow answers how work is done. A project answers what we're trying to accomplish — and it can span workflows.

  • Membership — items from any workflow can belong to one project. Every item should belong to one; orphaned work is invisible to project reporting.
  • Streams & board — group work into lanes and order it; the board is drag-to-reorder with execution order preserved.
  • Stages — project-level phases, advanced independently of any single work item.
  • Dependencies & critical path — declare that item B waits on item A. A blocked item is visibly blocked, and the critical path is computed.
  • Templates — a reusable project shape (stages + transitions) instantiated for each new engagement.
  • Priority & status — set at project level, visible on the item.

When to use which: if the answer to "what step is this at?" is the same set of steps every time, that's a workflow. If you're tracking "are we going to finish the Acme migration by Q3?", that's a project — spanning several workflows and a fixed end state.

8. Security model

8.1 How access is decided

Permissions are granted to groups and scoped to a component — usually a queue, sometimes a work-item type or the workflow itself. Users get permissions by group membership. A workflow's owner holds every permission on their own workflow by construction; that seat can't be edited away.

Two identity-shaped rules worth knowing: a permission check that fails on a lookup returns 404, never 403 — the platform does not confirm that something exists to someone not entitled to see it. And every action records actor kind (human, ai, app), stamped from the authentication path.

8.2 Permission reference

#PermissionGrants
0WorkItemsFromQueuePull/work items from this queue.
1ViewDetailsOnQueueSee item details in this queue.
2CreateWorkItemsCreate work in this queue. Also gates API/ingest creation.
3ViewWorkItemsView items.
4SearchForWorkItemsUse search — and run reports, which are search wearing a different hat.
5ReopenWorkItemsReopen a finished item.
6OverrideWorkflowDirectionForWorkItemsRoute against the drawn direction. Grant sparingly — it is the escape hatch from your own process.
7OverrideFieldRequirementsForWorkItemsSave despite unmet field requirements.
8EditFinishedWorkItemsEdit fields on a finished item.
9DeleteWorkItemsDelete items.
10EditWorkItemsAssignedToSomeoneElseAct on another person's assigned work.
12EditWorkItemInAnyQueueEdit regardless of which queue holds it.
13ViewDashboardViewSee a dashboard view.
14UnlockWorkItemsBreak another user's edit lock.
15 / 16ViewSummaryOnQueue / ViewSummaryOnWorkflowSee aggregate counts without item access.
17ImportWorkItemsBulk import (CSV).
18FilterWorkItemsFromQueueFilter rather than take strict next.
19 / 20 / 21 / 25BatchRoute / BatchFinish / BatchNote / BatchFieldWorkItemsBulk operations — separately granted, because bulk mistakes are bulk-sized.
22DisplayTimerOnWorkItemShow the active-work timer.
23 / 24ViewWorkflowVariables / EditWorkflowVariablesRead / change workflow variables (scoped to the workflow).

8.3 The Golden Rule, mechanically

Mark a queue requires human approval and an agent cannot advance work out of it — not through the UI, not through the API, not by finishing the item instead of routing it (finishing is routing to the end point, and the same gate applies). An interactive human passes. This is architectural, not a setting someone remembers to check per workflow.

8.4 Secrets

Credentials for external systems live with the edge agent on your hardware. The cloud coordinates work and never holds plaintext. Organizations may opt into admin-recoverable secrets explicitly; the default is zero-knowledge.

9. Setting up the agent

The edge agent is a single self-contained binary (Windows, macOS, Linux). No database, no server — it holds your credentials and does the work that touches your systems.

9.1 Install

  1. Download it from the Download Agent page in the app.
  2. Create an API key on the API Keys page. The key acts as you — its actions are attributed to your identity in history.
  3. Put the key in the agent's config, along with your API base URL.
  4. Bind the agent to the queue(s) it should work.
  5. Start it. Its dashboard shows what it's doing, what it's spent, and what it has claimed.

9.2 What the agent needs to succeed

  • A queue with clear outputs. If a step's result isn't a field, the agent can't record it and the engine can't gate on it.
  • A bound skill telling it how to do this step and the standard it's judged by (§9.3).
  • Gates on the queues that matter. Don't rely on the agent's good judgement — encode the rule.
  • A budget. The agent tracks spend per item; set the ceiling deliberately.

9.3 Skills — how you teach it

A skill is a markdown operating guide stored in the product and bound to a workflow, queue, or project. When work arrives, the skill travels with it. Write skills as you'd brief a competent new hire: what this step is for, what "done" means, what to do when the input is ambiguous, and what never to do.

Documents are the other kind of knowledge: reference material listed in the item's manifest and fetched on demand rather than pushed in full. Use skills for procedure, documents for reference.

10. What to expect on day one

Honest expectations, because a disappointed pilot is worse than a slow one.

10.1 Works well immediately

  • Structured intake & triage — classify an incoming request, fill the form, route it by rule.
  • Document extraction into fields — attach a PDF/scan, extract to structured data, hand a human a quick check rather than a retype.
  • Enrichment — on arrival, query a system and attach the answer to the item.
  • Drafting — replies, summaries, first-pass write-ups, held at a human approval gate.
  • Governed hand-offs — moving work between teams with the evidence attached and the audit trail intact.

10.2 Needs a couple of iterations

  • Judgement-heavy steps — the first version of a skill is rarely right. Expect to revise it after watching real items.
  • Anything with an unwritten standard. If your team can't articulate what "good" means, the agent can't meet it. Writing the skill is often the first time the standard gets written down at all — that's a feature, but budget for it.

10.3 Don't start here

  • Irreversible actions without a gate. Payments, external sends, deletions — put a human queue in front, always.
  • Processes nobody agrees on. Automating a disputed process just makes the dispute faster.

A good first workflow: 3–5 queues, one AI-worked step, one human approval gate, two or three typed fields, and one gate rule. Run fifty real items through it before you build the second one. You'll learn more from that than from a quarter of design.

11. Measurement & reporting

Everything the platform records is designed to answer four questions about work that has already happened.

QuestionWhere it comes fromWhere you see it
Who did it?History events stamped with actor and actor-kind (human/ai/app)Item history; Report Builder grouped by assignee or created-by
How long did it take?Time entries (actor, source, start/end) and queue-transition eventsReports → Stage times (p50/p85/max per queue)
How much work was done?Finished events over timeDashboard trend; Reports → Flow (throughput per week)
Where is it stuck?Time in current stage vs that stage's own historical p85Reports → Aging, with stuck flags
What did it cost?Agent spend recorded per executionReports → Cost (per stage, per finished item)

Build your own views in Reports → Builder: filter, group by queue / status / priority / assignee / created-by / project / month, split by a second dimension, chart it, add workflow fields as columns, export CSV. Save it, and the report becomes a URL your BI tool can refresh — see the integration guide.

Questions this manual didn't answer?

Ask a human. During early access you're talking to the people who built it.