Skip to main content
Run an asynchronous workflow on an existing dataset. Trigger commands return a workflow_run_id; use workflow wait or workflow status to inspect the run and continue with its output_dataset_id. Every workflow creates a child dataset rather than modifying its input in place.

Subcommands

workflow onboard

Normalize an uploaded file into the Landbase schema. Use the returned output_dataset_id for matching and later workflows.

workflow match

Fuzzy-match each row to Landbase company and person records. Run this before enrichment, qualification, CRM suppression, or message generation when those workflows require match identifiers.

workflow enrich

Add company and person attributes to matched rows. AI qualification and research flags are not accepted here. Run workflow qualify or workflow research as a separate step after enrichment.

workflow contact-enrich

Find contact email and phone data through the dataset workflow. Rows need a LinkedIn URL or a name plus company anchor. The workflow creates an enriched child dataset and a contact-enrichment report. A run may succeed with pending rows when the provider time limit is reached. Use the run status and report dataset to inspect pending or skipped rows. Publish the output before downloading it.

workflow qualify

Use AI to evaluate each row against one or more yes/no prompts. Run it on an enriched dataset. Qualification is quote-gated. Without --yes, interactive runs ask for approval and non-interactive runs return CONFIRMATION_REQUIRED.

workflow research

Run structured per-row research with citations. Each task requires a unique research_task_name, non-empty context_cols, and a prompt; optional fields include enable_web_search, data_schema, and model_override.

workflow publish

Prepare a dataset for download. The output is a published child dataset; use datasets download with that child ID.

workflow transform

Run a DuckDB SQL transform. The input dataset is available as input_dataset. Exactly one SQL source is required. Use datasets fields and datasets peek to validate a single-dataset query before creating a workflow run.

workflow union

Union 2–1000 datasets. Without dedupe keys, every input row is kept; use this mode to recombine disjoint row slices. union-dedupe remains a compatibility alias, but union with opt-in --dedupe-keys is the current command.

workflow relaxed-join

Join 2–6 datasets on shared key columns. Empty and null keys never match.

workflow similar-company-expansion

Find companies similar to those in the input dataset. The result includes rank, website, similarity score, and source company. Publish the output before downloading it.

workflow crm-suppress

Remove rows matched to the connected CRM’s Do-not-contact rule, and optionally its Customers rule. The CRM connection must have approved field mappings and a completed sync.

workflow crm-push

Create dataset rows as records in the connected CRM. This is insert-only and requires explicit --yes confirmation. Run crm-suppress before contact enrichment and CRM push when suppression rules apply.

workflow generate-messages

Generate a personalized email sequence for each row. The output adds subject_1..N, body_1..N, message_generation_status, and error details.

workflow instantly-push

Create an Instantly campaign from a generate-messages output. This command is beta and creates a draft unless --activate is passed. Use integrations list --provider=instantly and integrations senders <integration-id> to find connection and sender IDs.

workflow status

Read one workflow-run snapshot. Terminal statuses are SUCCEEDED, FAILED, and CANCELLED. The preferred new form takes a run ID. The legacy dataset form remains available for compatibility.

workflow wait

Poll until the workflow reaches a terminal state. The wait budget is 120 polls at 15 seconds; expiry stops waiting but does not cancel server-side work. Progress goes to stderr and the final JSON envelope goes to stdout.

workflow cancel

Request best-effort cancellation of a running workflow. Cancellation does not roll back rows already written or external CRM records.

Compatibility notes

Trigger commands still accept --wait for one release. New scripts should capture .operation.workflow_run_id and use workflow wait. Use datasets lineage when a workflow has multiple outputs or the output dataset ID is not present in the immediate response.