> ## Documentation Index
> Fetch the complete documentation index at: https://felix.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Steps

> A step is a single unit of work in a workflow.

Each step takes an input, does something with it, and produces an output. Steps run in sequence. The output of one step can be used as the input to the next.

## How steps work

You define a step by describing what you want it to do in plain language. Felix generates the code to execute it.

A step can:

* Fetch data from a connector or uploaded file
* Process or transform data — extract, filter, summarise, classify
* Call an AI model via a connector like `@OpenAI` or `@Anthropic`
* Write data to a connector — a spreadsheet, database, or document
* Send a notification via `@Slack`, `@Gmail`, or another connector
* Pause for human review via a **Human Checkpoint**
* Generate a file — a PDF, CSV, or document

## Writing a step

Describe what you want the step to do. Be specific about what data the step works with, what it should do with that data, and what the output should look like.

| Too vague               | Specific enough                                                                                                                                    |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Summarise the documents | Summarise each contract in one paragraph covering the key obligations, payment terms, and termination conditions. Output one summary per contract. |

If your description is unclear or incomplete, Felix will ask a follow-up question before generating the step.

## Referencing connectors

Use `@mentions` to tell a step which connector to use.

```
Fetch the latest insolvency filings from @CompaniesHouse added
in the last 7 days. Extract the company name, filing date, and
director names.
```

## Passing data between steps

Each step can reference the output of previous steps. Felix wires the data flow automatically based on your descriptions.

```
For each company in the insolvency filings from the previous step,
search @LinkedIn for current and former directors and return their
profile URLs.
```

## Adding and editing steps

* **Add a step** — continue the conversation in [Chat](/docs/building/chat) or click **Add step** in [Preview](/docs/building/preview)
* **Edit a step** — click the step and update its description. Felix regenerates the code automatically.
* **Delete a step** — click the step and select **Delete step**
* **Reorder steps** — drag steps into the order you need in Preview

## Tips

* **One action per step.** If a step is doing two things, split it.
* **Describe the output explicitly.** Tell Felix what format you need and what to call the output variable.
* **Test steps individually.** You can run a single step before running the full workflow — useful when building something complex.

<CardGroup cols={3}>
  <Card title="Descriptions" icon="pencil" href="/docs/workflows/descriptions">
    Write accurate step descriptions
  </Card>

  <Card title="Outputs" icon="file-export" href="/docs/workflows/outputs">
    How outputs flow between steps
  </Card>

  <Card title="Human Checkpoints" icon="hand" href="/docs/workflows/human-checkpoints">
    Add a pause for human review
  </Card>
</CardGroup>
