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

# Nodes

> The building blocks of every workflow: what each node does, what it returns, and what it costs.

A [workflow](/concepts/workflows) is a graph of **nodes**. Each node does one job on the document: read it, pull fields out of it, sort it, split it, check it, fill it in, or tell someone about it. You connect nodes on the [Studio](/concepts/studio) canvas, or send the same graph to the API as `nodes` and `edges`.

Most workflows are two nodes: **Parse** then **Extract**. The rest exist for documents that are more complicated, or for when you want something other than data back.

```
[ Parse ] → [ Extract ]
```

## The palette

The Studio palette groups nodes the same way this table does.

| Section      | Node                                                     | What it does                                                                          | Returns             | Credits                  |
| ------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------- | ------------------------ |
| Intelligence | [Parse](/guides/nodes/parse)                             | Reads the document into text, tables and layout. Always first.                        | `parse`             | 7 to 100 / page by tier  |
| Intelligence | [Extract](/guides/nodes/extract)                         | Pulls out the fields you define, with confidence and evidence.                        | `extractions[]`     | 17 to 150 / page by tier |
| Intelligence | [Classify](/guides/nodes/classify)                       | Labels the document as one of your categories and routes it.                          | `classifications[]` | 10 / page                |
| Intelligence | [Split](/guides/nodes/split)                             | Breaks one file that holds several documents into pieces.                             | `splits[]`          | 25 / page                |
| Intelligence | [Knowledge](/guides/nodes/knowledge) <sup>Alpha</sup>    | Indexes every parsed document into a searchable, askable corpus.                      | knowledge base      | 2 / page indexed         |
| Intelligence | [Edit](/guides/nodes/edit) <sup>Alpha</sup>              | Fills the blank form it was given and returns the completed PDF.                      | `edits[]`           | 35 / page                |
| Logic        | [Validate](/guides/nodes/validate)                       | Checks extracted values against rules and flags failures.                             | validation results  | 5 / AI rule              |
| Logic        | [If/Else](/guides/nodes/if-else) <sup>Beta</sup>         | Routes the document down a True or a False branch on its data.                        | branch              | free                     |
| Alerts       | [Slack alert](/guides/nodes/slack-alert) <sup>Beta</sup> | Posts a message to a Slack channel when a document reaches it.                        | message             | free                     |
| Alerts       | [Email alert](/guides/nodes/email-alert) <sup>Soon</sup> | Will send an email when a document reaches it. Shown in the palette, not yet enabled. | message             | free                     |

Knowledge and Edit appear in the palette once the feature is enabled for your organization.

## Three shapes you will build

**Read only.** Parse alone. You get the document as markup, for search, your own model, or an archive.

```
[ Parse ]
```

**Read, then pull out.** The default: "read this document and give me these fields".

```
[ Parse ] → [ Extract ]
```

**Sort first, then pull out.** Classify decides the kind of document, then sends it to an Extract tailored to that kind. Split works the same way for files that hold several documents.

```
                          ┌──> [ Extract: invoice ]
[ Parse ] → [ Classify ] ─┤
                          └──> [ Extract: receipt ]
```

Add [Validate](/guides/nodes/validate) after an Extract to check the values, [If/Else](/guides/nodes/if-else) to branch on them, and an [alert](/guides/nodes/slack-alert) at the end of a branch to tell someone.

## Every node page reads the same way

1. What the node does and where it sits in the palette.
2. The node as code: API JSON, then the Python and TypeScript SDK call.
3. The Studio panel.
4. Every option, its type, default and what it does.
5. What can feed it and what it can feed.
6. What it costs.
7. Examples that use it.

Start with [Parse](/guides/nodes/parse).
