Workflows and results
Choose between a source cluster and content assembled by AI steps.
Direct mode
With the workflow disabled, the cluster moves directly into Results. No generation steps run, so the result contains the topic and its source material without additional AI-written content.
Use direct mode when:
- you are validating monitoring quality;
- the downstream system performs its own processing;
- you need source data rather than a written article;
- you want to avoid generation cost.
AI workflow
A workflow is a graph of steps assigned to a goal. Steps may branch and merge. SemanticHub executes them in the order implied by their connections, and every step receives the output of the steps that precede it. Each step has its own label, model, prompt, and skills.
Input and Composer
A graph always has two boundary nodes, one of each kind:
- The input is the pill at the top of the canvas. It stands for the cluster that starts a run. The
×Ncounter shows how many articles the goal's latest cluster had. Nothing connects into the input; you can only draw a connection out of it. - The Composer is the dark plate at the bottom of the canvas. It assembles the result and hands it to the receiver. The plate header shows the receiver's name, for example Bez dostawy (no delivery), E-mail, or Wtyczka WordPress (WordPress plugin), and the channel type. Nothing leaves the Composer.
Agent steps sit between them. A graph saves only when it has exactly one input and one Composer. An empty graph is the exception, because it means working without a workflow.
The result body is the text of the step wired into the Composer. The Composer writes the other sections itself. The plate shows this row by row. The body row reads "content:" followed by the name of the step the text comes from. Every other section reads "added by Composer". If several steps are wired into the Composer, the body is built from their texts in order.
The Composer panel
Click the plate, or the payload link in its footer, to open the Composer panel. It contains:
- The receiver, with a link to the goal's delivery settings.
- Final result format, the list of Result elements. This is where you choose the result sections. The agent step panel no longer has a section picker.
- Warnings about what may go wrong. When everything is fine, the panel says "No warnings.".
- Payload v5, a sample package the receiver will get. It is read-only. You change it through the result format and the delivery settings.
Composer warnings cover situations such as:
- no step is wired into the Composer, so the body comes from the last step of the graph;
- several steps are wired into the Composer, so the body is built from several texts;
- a chosen section lies outside the receiver plugin's manifest and will degrade into paragraphs;
- the receiver is the WordPress plugin and the graph has no agent step, so delivery will fail;
- the plugin manifest is older than 30 days.
Set the result format
Open the Composer panel and choose the result elements under Final result format. See below: the goal's contract, the receiver's capabilities, and the default set are three different things.
Add the fewest useful steps
Start with one focused step and wire it into the Composer. Add another step only when it has a distinct responsibility.
Give the step the skills it needs
Skills decide what a step can do while working: web research, vector search over stored articles and clusters, image analysis, MCP tools, and querying the knowledge bases attached to the goal.
Run a test
Click Test run. A test run works on a sample cluster and sends nothing to the receiver. Details are below.
Publish the workflow
Only an enabled, published flow participates in the automatic pipeline.
Test run and test result
Test run opens the console at the bottom of the canvas. It lists the steps of the run: the plan, the agent steps, the Composer step, delivery, and the finish. The counter in the console bar counts agent steps together with the Composer step.
A test run leaves a test result. When it finishes, the console bar shows an Open test result button that leads to that result in Post moderation. In the result list, a test result carries a test badge. The badge tooltip gives the expiry date: a test result expires after 7 days. The Show test results button above the list hides or shows test results.
A test result never reaches the receiver. It is there to check the text and sections before you turn the workflow on.
The Runs panel
When no step is selected, the canvas side panel shows the workflow summary and a Runs section. Each run shows its kind (Test, Production, Regeneration, or Agent check), status, time, cluster, and cost. The Result link leads to the run's result. Open loads the run into the console, including a run that has already finished.
Contract, receiver capabilities, and the default set
These are three separate things, and confusing them causes surprises in production:
- The output contract belongs to the goal, not to the workflow. It records what you agreed with the receiver. You can rebuild the workflow ten times without touching it, and direct mode has a contract too.
- Receiver capabilities are the manifest reported by the WordPress plugin: the sections it renders natively. A contract may name a section the manifest does not confirm. The data is still delivered, and the receiver gets fallback content blocks instead. The Composer panel and goal settings warn about that mismatch.
- The default set is the main body (
body) alone. A goal with no plugin and no declaration of its own gets nothing more.
The set of body, summary, and SEO metadata is not the default. It is a fallback proposal: it applies to a goal whose plugin reported in without naming a single section it can render.
Whatever the source of the contract, the main body cannot be removed: if it is missing from the list, it is added back. Every other section degrades into it.
Section types
| Section | Contents |
|---|---|
| Body | The main prose, as paragraphs. Required in every contract. |
| TL;DR | Two to eight bullet points summarizing the material. |
| FAQ | Questions and answers arising from the material. |
| Table | A tabular comparison: options, figures, parameters. |
| Glossary | Terms from the material with definitions. |
| Timeline | The chronology of the events described. |
| SEO metadata | Title, description, and keywords. Metadata, not readable content. |
| Key takeaways | Three to five points the reader should remember. |
| Infographic | Figures, steps, or a hierarchy, using a closed list of variants and icons. |
| Comparison | Two to four options with pros, cons, and figures. |
| Job offers | Identifiers of the receiver's job listings matching the topic. |
| Related videos | Identifiers of recordings held by the receiver. |
| Scientific publications | Identifiers of publications held by the receiver. |
| Legal reference | The legal act cited in the material and where it was published. |
| X post | A post from X cited in the material. |
Most sections have fallback blocks: when the receiver does not render them natively, the data still reaches the body as a heading, a list, a table, or a quote.
New post
The New post button in the top bar creates an empty post: a cluster with no source articles, with its own result already attached, and takes you straight to the full-screen moderation view of that result. The post starts in the To accept state and has no content at all. You write it yourself or have an agent write it.
Use it when the topic comes from you rather than from monitoring: an announcement, a preview, an editorial piece.
Reviewing results
A result without a configured channel always waits for review. With automatic delivery disabled, approve it before dispatch. A rejected result is not delivered, but it can be restored, which puts it back into the acceptance queue. A result that has already been delivered cannot be rejected, because it is already out.
Enable automatic delivery only after the sources, filter, workflow, receiver, and output contract have all been validated.