Documents
Tables, docs and slides that belong to a workflow. Neurons read tables in GET and write to them from SEND.
Documents are the tables, docs and slides that belong to a workflow, and the files you upload to it. They live in the Docs section of the canvas's left rail. Neurons can read a table in GET and work on a table, doc or slides from SEND, so one table can carry data from neuron to neuron and from run to run.
Create a document
- Open Docs in the canvas's left rail.
- Click New document.
- Choose Table, Doc or Slides.
The new document appears in the Docs list, for example as "Untitled table", and opens in its editor in a new browser tab: a spreadsheet for a table, a page for a doc, or a slide deck for slides.
Once the workflow has a template, New document also offers From a template…. To make a document a template, choose Use as a template in its Document options menu.
Upload a file
- Open Docs in the canvas's left rail.
- Click Upload.
- Pick a file. The original is kept under FILES. A spreadsheet (Excel or CSV) also becomes a table, one per sheet, a Word file becomes a doc, and a PowerPoint file becomes slides. A message says what was made from it. If a file can't be converted, its row in the list says why.
Open, duplicate or delete a document
In the Docs section, open a document's Document options menu (the three dots). For a table, doc or slides it has Open, History, Export as … (Excel or CSV for a table, Word or Markdown for a doc, PowerPoint for slides), Use as a template, Duplicate and Delete. For an uploaded file it has Download original, Add to memory and Delete. Delete asks you to confirm with Delete again.
Undo your edits: History
History opens the document with the list of your own edits, newest first. Click Revert to undo just one change, or Restore to here to undo every change after it. Changes a run makes can't be undone: the list marks the last change a run made, and nothing before it can be undone. Changes are kept for 7 days, then removed.
Read a table in a neuron
- In the neuron's GET, add an input and set its type to Table.
- Under Table document, choose the table, or click Upload a CSV or Excel file to create a new table. An Excel file with several sheets makes one table per sheet, and the input uses the first. On the neuron card, Pick a table offers the same tables and Upload a CSV.
On each run, the AI reads the table's rows along with the neuron's other inputs. A table in GET is only read: to change it, add it in SEND instead.
Run once per row
With Run once per row on for a table input, the neuron runs once for each row of the table, from Start at row for Number of rows, instead of reading the table in one go.
- A run carries on if the server restarts. A row that was cut off by a restart is undone and run again once.
- Rows run a few at a time. The run bar shows how many rows have finished.
- A row that fails doesn't stop the others. When the run ends, a message tells you which rows ran and how many were done or failed.
- The next step starts once, when all the rows are done. Neurons connected after this one don't start for each row.
- Click Stop to end the run. Rows already in progress finish and no new row starts.
- If the account runs out of credits, the neuron shows the error "Stopped: not enough credits" and no new row starts.
- A table with no rows has nothing to run. The neuron finishes as done, the message says "Nothing to run. The table has no rows.", and the next step starts once. It is not an error. A Start at row past the end of a table that has rows is still refused.
- A table with rows where no row runs ends differently. The neuron stops without running anything, keeps its previous result, and the next step does not start. A scheduled run does the same and keeps the last output.
- With AI and a table as the output, each row is one model call. The row is written as soon as the model adds it. A row where the model wrote nothing counts as failed, so it is reported and tried again like any failed row.
While rows are running, starting the neuron again is refused, with a message saying that it is still running.
Resume a run that stopped
When Stop or running out of credits ends a run after at least one row is done, the rows that are done are kept for 72 hours. The neuron shows a notice that says "Out of credits" or "Stopped" and how many rows are done, with two buttons:
- Resume runs only the rows that didn't run. Rows that are done are not run again and are not charged again. Resume shows no questions, because it reuses the answers the run started with.
- Discard drops the kept rows. If you do nothing, they are dropped after 72 hours.
If you click Play instead, you choose between Resume and Start over. The question shows how many rows are done, how many are left, and about how many credits the rest will cost. If your balance may not cover that, it says so: the run starts anyway and pauses again when credits run out, and the rows that are done stay kept. Resume is refused only when your balance is below the cost of one row.
Start over drops the kept rows and runs every row again. If you changed the neuron's instructions, model or input table since the run stopped, Resume is refused and offers Start over, because the rows left would otherwise run with different instructions than the rows already done. A run started by a schedule or a webhook resumes by itself when nothing changed, and starts over when something did.
A failed row is not run again by Resume, except a row that failed because credits ran out. A neuron that sends email or messages doesn't run a row again if credits ran out in the middle of it, in case part of it was already sent.
The next step after this neuron starts once, when the run finally ends with all its rows run. A run that stopped for lack of credits still triggers the neuron's On error step once.
A neuron that is not a per-row run, or a Test this neuron only run, keeps nothing.
Work on a document from a neuron
- In the neuron's SEND, turn on Document. A Works on row appears.
- Choose the table, doc or slides of this workflow, or a new one: New table (made on the first run), which is then kept, or New table every run (the same for a doc or slides). With a template, New from the template “…” every run makes a copy each run; fill in its placeholders under Fill in.
- For a new document, type its Name.
- Under This neuron may, tick what the neuron may do: Read (always on), Edit content, Change structure and Delete. Delete starts unticked. A document the run makes is the run's to shape, so everything is ticked.
- To work on more than one, click Add another document.
DO says what to do with the document (or Steps do it without AI). Changes a run makes can't be undone from History.
Replace the rows on every run
By default each run adds its rows to the ones already in the table, so a table that is filled on a schedule keeps growing. To keep only the latest result, set Write mode to Replace all rows on the table's Works on row in SEND. Write mode shows for a table you pick or one that is made on the first run, not for a table made new on every run.
- When the run finishes, the table's rows are swapped for the rows the run wrote. The table's columns stay, and any column the run adds is kept.
- A failed run leaves the table as it was. A run that wrote no rows leaves it as it was too, unless you tick If the run writes no rows, empty the table and the run clearly meant to write none (see below).
- With Run once per row, the swap happens when the whole pass ends, and it uses the rows written by the rows that succeeded. If none succeeded, the table is left as it was.
- With Run once per row, a run that stops because you clicked Stop or ran out of credits does not change the table. The rows that are done are kept (see "Resume a run that stopped"), and the table swaps once the rows that were left have run. If you click Discard or the three days pass, the table stays as it was.
- A neuron that replaces rows can only add rows. Changing or deleting existing rows, or changing, deleting or moving columns in that table, is refused with a message. To do those, set Write mode to Append.
- The old rows aren't kept anywhere, so they can't be brought back afterwards.
Empty the table when a run writes no rows
Under Replace all rows, tick If the run writes no rows, empty the table when "nothing to write" should mean "nothing in the table", for example a queue that must be empty when there is no work. It is off by default.
- It applies only when the run finishes successfully and clearly meant to write no rows. A run that fails or is stopped leaves the table as it was.
- Steps: every step ran without an error and left no rows (for example a filter matched nothing).
- Code: the code wrote an empty list with
neuron.rows.write([])or returned[]. Code that never wrote rows (for example when its input was empty) leaves the table as it was. - AI: the AI added zero rows to the table. An AI that only answered in text, or did not use the table, leaves the table as it was.
- Run once per row: every row finished, none failed or was skipped, and the rows wrote nothing. If any row failed or was skipped, the table is left as it was. A table with no rows has nothing to run, so it is emptied.
- A table that is already empty is left alone.
- A run that wrote rows replaces the table as always.
- The emptied rows can't be brought back.
Fixed table columns
When SEND writes to a table you made, the result uses that table's column names, so a later neuron or your own systems can read the columns by a known name. Set up the table first: create it in Docs, name its columns, then pick it under Works on. With New table (made on the first run), the run adds the columns it needs and the AI chooses their names.
Column names and lists in a table result
A table result shows its column names and cells exactly as the neuron produced them. The app doesn't rename columns or reformat cells, so total_amount stays total_amount, and a cell that holds a list shows as a list in brackets, for example ["Pasta","Broccoli"].
To make a table easier to read:
- Name the columns yourself. Create a table in Docs with the column names you want people to see, such as "Total Amount", and pick it under Works on. Every run then uses those names, and so does every User of your Agent.
- Or ask in DO. With a new table, say in the DO instructions which column names to use and how to write each cell, for example "one ingredient list per cell, separated by commas".
Users of your Agent can't change the column names. They see the names you set up.
Documents and Memory
Docs hold tables, docs, slides and uploaded files. A PDF, image or audio file that several runs should read belongs in Memory: use Add document in the Memory section, or upload it in Docs and choose Add to memory in its Document options menu. A table, doc or slides can also be added to Memory with From Documents, and stays in sync. See Memory.
Storage
The Storage used bar in the Docs section shows how much of this workflow's storage is in use, as a percentage. It counts the workflow's documents and files, its dashboards, and its versions and your memory changes in Versions. A document's own revision history doesn't count.
Limits
- Storage: up to 50 MB per workflow, and 500 MB across all your workflows. When it is full, new documents and files are refused, a version you save is refused, and automatic versions pause until you free space.
- Upload: up to 25 MB per file.
- Rows the AI reads: the first 500 rows of a table on each run.
- Rows kept after a stopped run: 72 hours.
Common problems
Only CSV files can be imported as a table
Upload a CSV in a neuron card's Pick a table menu takes CSV files only, and an Excel file there says "Excel files aren't supported: save as CSV first." Use Upload in Docs, or the upload under Table document in the neuron's GET, which take Excel files too.
Save the workflow before uploading a table
A CSV upload in GET needs a saved workflow. Wait for the top bar to show Saved, then upload again.
The AI ignores rows at the end of a large table
The AI reads only the first rows of a large table on each run (see Limits). Split the table, or filter it down before the neuron reads it.