meerko

Concepts

Tables & AI columns

A table is a list of leads: one row per person or company, one column per field. Columns appear as you add data, and an AI column is a question your agent answers for every row.

Docs menu

Rows and columns

Rows are stored as they come: any field you send becomes a column. Column keys are lowercase snake_case, so a CSV header "First Name" becomes the key first_name and keeps "First Name" as its label. Each column has a type, inferred from the values when it's created:

TypeValues
textAnything. Also the type of a column that's empty so far.
numberNumbers, e.g. headcount.
emailEmail addresses.
urlLinks, e.g. LinkedIn profiles.
booleantrue or false.
jsonObjects and lists.

Every row also has a pipeline stage, starting at new: see Pipeline.

Importing

import_rows takes up to 10,000 rows per call; unknown keys become new columns. From the terminal, the CLI reads a CSV with a header row or a JSON array:

bash
$ pnpm meerko tables create "Fintech CTOs Spain"
$ pnpm meerko tables import <tableId> leads.csv

Or skip the CSV and search for leads straight into a table.

AI columns

An AI column has a prompt: an instruction with {{column_key}} placeholders, like Score ICP fit 1-5 for {{company}}: {{description}}. Meerko doesn't run the prompt itself. Your agent does, with its own model and reasoning, so there are no AI credits to buy:

  1. add_column creates the column with its prompt.
  2. get_pending_cells returns rows where that column is still empty (25 by default, up to 200), each with the prompt already filled in from the row.
  3. Your agent answers each one and writes the answers back with update_rows (up to 1,000 rows per call). It writes N/A when it can't answer, so the row isn't returned again.

In Claude Code

› Add a column "opener" to the Fintech CTOs table: a one-line, specific opener for each lead. Fill it for every row.

Columns as variables

Any column can be used in a sequence as {{column_key}}, e.g. {{first_name}} or the {{opener}} your agent just wrote. Use the key, not the label. A lead whose row is missing a variable the sequence uses is skipped when you enroll, so nobody gets an email with a gap in it.

Reading rows

Filter

Exact match

e.g. {"country": "ES"}, plus a pipeline stage.

Page size

50

By default, up to 1,000 per call, with an offset to page through.

Order

As added

Rows come back in the order they were inserted.