veilSense / Feature Deep Dive
Workflow Engine

Chain your assistants.
Keep a human in control.

A visual canvas for wiring assistants and prompts into a real DAG — with conditions, loops, and aggregation. And when a step shouldn't run unsupervised, a Human-in-the-Loop node pauses the run and waits for someone to actually look at it.

veilsense.company.local / workflows / weekly-report
START
→
Research Assistant
→
Summarize (Prompt)
→
👤 HITL Review
→
PowerPoint Generator
→
END
Step types

Not just a chatbot chain. A real control-flow engine.

Built on a Drawflow visual canvas — drag, drop, and wire steps together.

Assistant / Prompt Call

Any assistant, any prompt

Attach any assistant or workspace prompt as a node, with input/output variable mapping and an optional model override.

Condition

Branch on a value

=, ≠, >, ≥, <, ≤, contains, starts with, is empty, is not empty.

Decision Table

Multi-rule branching

Route to different paths based on a table of rule combinations, not a single condition.

Calculate

Inline expressions

=, +, -, *, /, concat, and parse-JSON-array, without a round trip to an LLM.

Aggregate

Roll up loop results

MAX, MIN, SUM, AVG, COUNT — with optional group-by and de-duplication.

Loop

Nested sub-canvas

Run a full mini-workflow per item in a list, arbitrarily nested, collecting one output per iteration — optionally on up to 16 parallel threads.

HITL

Human approval gate

Pauses the run and waits for a person — see below.

END

Land the result

Write a Brain/Wiki entry, or offer a generated .docx/.pdf for download.

Check Email / Email Send

Start from an inbox, reply from one

A START step polls a configured mailbox for new messages to kick off a run; an Email Send step replies or notifies from the same mailbox mid-workflow.

Check Calendar / Create Event

Start from a meeting, write one back

A START step seeds each upcoming or just-ended calendar event as a loop item — de-duplicated so a meeting is never processed twice. A Create Event step adds a prep slot back to the calendar.

Human-in-the-Loop

Automation that stops and asks, when it should.

A HITL step pauses the run — the workflow literally sits in an "awaiting review" state until a person acts. The reviewer sees the instructions the admin configured, can edit whichever context variables were made editable, and chooses to approve or reject.

  • ✓
    Run pauses in a real "awaiting review" state — nothing continues silently
  • ✓
    Reviewer instructions and an editable set of variables, admin-configured per step
  • ✓
    Approve resumes past the step, optionally with edited values
  • ✓
    Reject rewinds to a chosen earlier step and re-runs from there, with the rejection reason available to every re-run step
  • ✓
    Works inside nested loops, with per-iteration checkpointing
👤 Awaiting Human Review
Check the summary is accurate before it reaches the deck.
Q3 revenue grew 12% driven by...
✓ Approve
✕ Reject
Loops & aggregation

Run a sub-workflow per item, then roll it up.

A Loop step contains its own mini-canvas — its own START and END — executed once per item in a list. Loops can nest arbitrarily, and an Aggregate step afterward rolls the per-iteration outputs into a single number or list.

  • ✓
    Each loop body is a self-contained sub-workflow, editable on its own canvas
  • ✓
    Arbitrary nesting — a loop inside a loop inside a loop
  • ✓
    One collected output list per loop, ready for the next step or an Aggregate
  • ✓
    Parallel rounds (1–16): work through a long list on several threads at once, results still in list order
↻ LOOP — for each candidate
Assistant: CV Matcher
Calculate: fit_score = base * weight
→ collects [fit_score] across all candidates
Runs on a schedule, an email, a calendar event, or on demand

Set it once. Let it run every week — or every time mail arrives.

A START step can fire on a cron schedule, be triggered manually, poll a configured mailbox and kick off a run for each new message, or watch the workspace calendar and run for each upcoming or just-ended event — no separate integration needed to turn "someone emailed us" or "the meeting just ended" into a workflow run. Every run keeps a full execution history with a context snapshot at each step — so when something looks off, you can see exactly what each step received and produced.

  • ✓
    Cron-scheduled, manual, inbound-email, or calendar-event triggered runs
  • ✓
    Calendar and email starts are de-duplicated — the same message or meeting is never processed twice
  • ✓
    Execution history with per-step context snapshots
  • ✓
    AI-assisted test data synthesis for a workflow's input variables, for dry runs
⏰ Every Mon 08:00
→
Aggregate: SUM
→
END → Brain entry
How it works

From individual assistants to a pipeline.

You already have assistants doing useful work. Chain them together.

1

Drag steps onto the canvas

Assistants, prompts, conditions, loops, and a HITL checkpoint wherever a human should look before continuing.

2

Map variables between steps

Wire each step's outputs into the next step's inputs. Add a schedule or leave it manual.

3

Run it, review it, trust it

Every run is logged with full context. Reject a HITL step and the workflow rewinds and re-runs — nothing silently continues on bad data.

Automate the pipeline. Not the judgment.

Chain your assistants into a real workflow — with a human checkpoint exactly where you want one.