---
title: "Steps and dependencies"
url: https://developers.dagio.ai/steps/
---

# Steps and dependencies

   
                               
                                                                
             
              
          
   

## Give each step a responsibility

A step receives information, performs work and exposes a result. Its title should describe business intent, such as **Check requirements**, rather than an internal function. Dependencies identify results needed before execution.

| Configuration | Expected values | Description |
| --- | --- | --- |
| Key and title | Stable identity and business label | References and readable tracking |
| Required inputs | Declared Fields and sources | Preparation conditions |
| Dependencies | Existing steps | Execution prerequisites |
| Mode | Human intervention, AI or admitted operation | Nature of the work |
| Result | Surface and expected criteria | Evidence of completion |

## Ordering and parallelism

Steps without mutual dependencies can progress in parallel when constraints allow. Checking client needs and consulting rates can precede drafting. Review waits for a draft; finalization waits for a valid decision.

## Make completion verifiable

Define what makes work complete. Nonempty output is not necessarily a correct proposal. Criteria can require information, relations, results or a human decision. Progress exposes missing conditions and produced results.

The [FlowBlueprint reference](https://developers.dagio.ai/reference/managed-flow-blueprint/) and [Flow composition](https://developers.dagio.ai/reference/flow-composition/) give exact properties and variants.

<!-- surface-examples:start -->

## Applied examples : Connect a step to its result

The step prepares the proposal; the Flow output references that step’s declared result.

### Configuration

Fragment placed in `flowBlueprints[].composition.steps[]`. [Properties and accepted values](https://developers.dagio.ai/reference/flow-composition/).

```json
{
  "key": "prepare",
  "kind": "task",
  "workNodeKey": "prepare",
  "actionKey": "prepare",
  "inputs": {},
  "outputs": [
    {
      "key": "proposal",
      "type": "result-reference",
      "provenance": "canonical",
      "minimum": 1,
      "maximum": 1,
      "result": "reference"
    }
  ],
  "reservedCostUnits": 1,
  "maximumAttempts": 3
}
```

### Variation and connection

Fragment placed in `flowBlueprints[].composition.outputs`. [Properties and accepted values](https://developers.dagio.ai/reference/flow-composition/).

```json
[
  {
    "key": "proposal",
    "type": "result-reference",
    "provenance": "canonical",
    "minimum": 1,
    "maximum": 1,
    "source": {
      "kind": "step-output",
      "stepKey": "prepare",
      "outputKey": "proposal"
    },
    "reduction": "first"
  }
]
```

### UI layout example

The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.

1. Qualify need
2. Prepare proposal
3. Wait for decision
4. Retain result

<!-- surface-examples:end -->
