Documentation / Data

Columns

One typed action per row — with the domino rule, waterfall enrichment and reusable templates.

A Column is a typed action that runs on every row of a table — not just a label. Creating a new column is a data entry, not a migration.

Column kinds

KindWhat it does
manualEditable by hand only
sourceMapped from an import
formulaComputed from other cells, at no cost
aiA prompt against a model, with typed output
toolCalls an integration through its category
enrichmentEnrichment/validation via an integration category, waterfall included (below)
relationReference to a row in another table
systemPassed-through field of a bound lead/company, read-only

The domino rule

Every column can carry a condition (“only if ICP score ≥ 60”, “only if email is empty”). Rows that don’t meet it skip the column automatically — a row scoring 45 produces nothing for the enrichment and sending columns behind it. Your process emerges from configuration, not from program code.

Waterfall on enrichment columns

An enrichment column can list several providers of the same category in order: the next provider only runs if the previous one delivered no acceptable result (an email that fails validation, for example). Every attempt stays traceable in the cell (provider, result, cost); only the attempt that actually delivered is charged. The order is adapter-agnostic — it references categories, never a specific vendor; a default order applies per category in the workspace, with a per-column override.

Reuse: templates

Proven column chains (prompt, output schema, conditions) are available as templates — the standard enrichment, for instance: research → ICP score → email → email status → copy → send. You instantiate a template through Command or the web app; every row still generates individually, a template does not replace the actual generating.

See also: Cells for what each column execution leaves behind per row.