Skip to main content

What are Flows?

Flows is Connie’s product name for the combined Tables + Workflows system. Tables hold your structured data; Workflows orchestrate logic and AI on top of that data. Together they let you build anything from a one-off enrichment pipeline to a long-running multi-agent system — without writing infrastructure code. If you’ve used Airtable or Notion databases, Tables will feel familiar. If you’ve used n8n, Zapier, or LangGraph, Workflows will feel familiar. Connie folds both into one product so you don’t have to wire two systems together.

Tables

A Table is a typed grid of rows. Columns are called properties; rows are called items.

Typed columns

Text, number, select, date, relation, formula, JSON, and more. Each property has a type that determines how cells render and validate.

Filtering & sorting

Client-side filters, sorts, column visibility, and pagination powered by TanStack Table. Save filter sets as views.

Relations

Link rows across tables — a contact belongs to a company, a deal belongs to an account. Relations render as clickable chips.

Formulas

prop("Column Name")-style expressions with math, string, and logic operators. Includes an AI formula assistant that writes formulas from a prompt.

Importing data

Tables ship with first-class importers:
  • CSV upload — drag-and-drop with auto-detected column types, a mapping step, and dedup modes (skip / overwrite / allow duplicates)
  • Apollo — pull contacts directly from an Apollo search
  • Pipe0 — connect a Pipe0 pipeline as a source
  • People — bring Apollo contacts into a Contacts-shaped table

Transforms

Once data is in, the column menu surfaces transforms that would normally require SQL:
  • Text to columns — split a single column into multiple by delimiter
  • Split name — turn Full Name into first_name + last_name
  • Run formula — evaluate a formula across the whole column
  • Duplicate column — copy a property with all its data
  • Bulk delete / bulk duplicate / bulk empty — apply across thousands of rows

Workflows

A Workflow is a directed acyclic graph (DAG) of nodes. You build it visually in the Flow Builder — drag nodes onto a canvas, wire them with edges, configure each node inline.

Node types


Triggers

Three ways a workflow starts:
  1. Manual — hit the Run button in the Flow Builder
  2. Scheduled — cron expression on a trigger node, evaluated server-side
  3. Data event — when a row is created or updated in a watched table, Supabase Realtime fires the workflow with the row payload
Triggers are disarmable without deletion — flip the is_trigger_enabled toggle to pause a flow while you debug it, then re-enable.

The Flow Builder

The builder is a Reactflow-powered visual editor:
  • Drag-drop nodes from the side panel onto the canvas
  • Inline config — click a node, edit its inputs in a side panel
  • Live test — run a single node with mocked input to verify its config before wiring it in
  • Live execution status — when the workflow runs, each node lights up (running / completed / error) in real time as state streams via Supabase Realtime

Live runs

When a workflow runs — whether triggered manually, by data, or by a schedule — its state streams back to every open tab.
  • Per-node status badges update as nodes start and finish
  • Run history is browsable: pick any past run and replay its state, inputs, and outputs node-by-node
Everything is broadcast over Supabase Realtime, so multiple teammates can watch the same run unfold simultaneously.

Tables ↔ Workflows

The two halves connect at the trigger and write layers:
  • Data triggers — table_row_created / table_row_updated triggers fire a workflow when rows change. Used for “on add, enrich” or “on update, sync to CRM”-style automations.
  • Write-back — the spreadsheet_write node persists a row back into a table. Closes the loop on enrichment, scoring, and tagging flows.
  • Query nodes — read rows from a table mid-flow to make routing decisions or feed AI nodes.

Common workflows

Enrich every new contact

  1. Add a workflow with a table_row_created trigger watching the Contacts table
  2. Add a LinkedIn-enrich node, wired from the trigger
  3. Add a spreadsheet_write node to update the row with enriched fields
  4. Save and arm — every new contact gets enriched within seconds

Outbound sequence

  1. Build a list table with one row per prospect
  2. Create a workflow with a manual trigger that iterates over the list
  3. Per-prospect: draft a personalised email with an LLM node, send it via an email action, wait N days, send a follow-up
  4. Run once — Connie processes the whole list in parallel batches

Inbound triage

  1. Build a workflow with a table_row_created trigger watching your Inbox messages table
  2. Add a router node that classifies inbound messages by content
  3. Branch into per-category sub-flows — sales, support, partnerships — each handling its own response or routing logic

API reference

Tables

CRUD tables, properties, items, and cells.

Workflows

Create, run, and inspect workflow definitions.

Workflow Builder

Configure and test individual nodes from your own client.

Jobs

Inspect and manage workflow runs.