Connector status. 80 connector types are registered, but only
four can currently move data in a pipeline: Amazon S3, Google Cloud
Storage, Azure Blob Storage, and SFTP. Those four are the union of the
only paths that exist — the pipeline source enum, and campaign file
delivery. Every other type is shown greyed as Coming soon in the
New Connector picker and cannot be selected, because storing
credentials for a connector nothing can read is a liability rather
than a feature.The connectors documented on this page describe the registry entry and
its configuration form. The remaining coming-soon types are the W16
expansion entries documented on
Connectors Expanded. Coming-soon
connectors are visibly badged and disabled in the connector picker.
Overview
The Data module is the foundation of KaireonAI. Everything the platform decides on — offers, scores, journeys — runs on clean, structured data flowing in from your systems. There is one workflow you’ll repeat for every entity you bring in:
Navigate to Data in the sidebar to access Connectors, Schemas, Pipelines, Pipeline Runs, Sources, Segments, and Aggregates (Customer Viewer + Interaction History).
Pipeline node behavior — current build. The standalone
join node is
functional: it performs a real in-memory relational join (inner / left /
right / full) of its two upstreams and materializes the merged rows. A
validate node carrying row-level rules now actually rejects failing
rows from the load — only the passing rows reach the target (failing rows are
dropped, and optionally quarantined to the DLQ table). The pipeline enrich
node, however, is not yet wired: its providers (llm_tag, geocode,
ml_score) need tenant credentials that aren’t implemented in this build, so
the node now errors at run time instead of silently passing rows through.
Remove the enrich node from a pipeline before running it. (This pipeline
enrich node is distinct from the Decision Flow Enrich stage described
under Schemas & Enrichment below, which is wired.)Connectors
Connectors define how KaireonAI reaches your external data. 80 connector types are registered across 8 categories; four of them (S3, GCS, Azure Blob, SFTP) can currently be used in a pipeline, and the rest are shown as Coming soon. Each connector has its own dynamic configuration form with typed fields, multiple authentication methods, and a Test Connection button to verify connectivity before saving.“Registered” vs. “runnable as a pipeline source.” A connector being
registered (and connection-testable) is distinct from being wired as a
pipeline source node. Today the flow runtime’s source executor ingests
from file / object-store connectors — Amazon S3, Google Cloud Storage,
Azure Blob Storage, SFTP, HTTP Pull, and Local Filesystem. The other
registered connectors (warehouses, databases, CRM, CDP, messaging,
streaming, and most API connectors) are usable for connectivity and, in
several cases, for outbound/delivery flows, but their pipeline-source
ingestion is not yet wired in this build. The Status column in each
table below reflects the connector registry, not source-executor coverage.
Object Storage
All five cloud backends and
local_fs share a common object-store
abstraction shipped in Phase 6.2, so a pipeline written against one
backend behaves the same way against any of the others. Object storage
connectors support file format selection: CSV, JSON, JSON Lines,
Parquet, Avro, ORC, TSV, and XML — read end-to-end through the same
format-parser layer regardless of source backend.
Streaming
Data Warehouses
Snowflake and BigQuery row limits. Both connectors require a
sourceTable and accept an optional rowLimit (default 100,000 rows —
demo-safe). Set rowLimit to 0 to remove the cap entirely; only do this
once you have sized the target database and pipeline run budget for a
full-table read. The executor reads from the configured source table and
caps the row count at rowLimit (or returns every row when rowLimit is 0).Databases
CRM
Customer Data Platforms
Messaging
APIs and Direct Upload
Coming-soon connectors (
amazon_kinesis, braze) are visibly badged
and disabled in the connector picker. You can still view the form
definitions in the registry, but creating a pipeline against them will
no-op at run time until ingestion is implemented. Connection Test
works today for Amazon Kinesis.Security
Connector credentials are encrypted at rest using the platform encryption layer. TheauthConfig field is never returned in API responses — the GET endpoint explicitly excludes it from the select clause. Only the connection metadata (name, type, status, last tested timestamp) is exposed.
Schemas
Schemas define your entity structures. Unlike metadata-only schema systems, KaireonAI schemas are backed by real PostgreSQL tables. Creating a schema executes acreate table statement. Adding a field runs alter table add column. Deleting a schema drops the table along with its dependent objects.
Entity Types
Each schema is assigned an entity type that describes what it models:Field Types and PostgreSQL Mapping
Every field you define maps to a concrete PostgreSQL column type:DDL Behavior
When you create a schema through the API or UI, the following happens:- Metadata record is created in the platform’s data-schema registry with field definitions.
- A safe
create table if not existsstatement is executed against PostgreSQL with an auto-generated table name prefixed withds_(e.g., schema “customers” becomes tableds_customers). - Every table automatically gets
created_at(timestamptz) andupdated_at(timestamptz) columns. - Primary key handling: when no field is marked
isPrimaryKey, an auto-generatedid BIGSERIAL PRIMARY KEYcolumn is added. When any field is markedisPrimaryKey: true(e.g. via the schema-create form’s “Custom primary key column” pane, or by passingisPrimaryKey: truein the APIfields[]payload), the auto-id column is skipped and your column becomes the table’s PK. - Your defined fields are added as additional columns with their mapped PostgreSQL types, nullability, uniqueness constraints, and default values.
Field Constraints
Each field supports the following constraints:
Default values are validated to prevent SQL injection — only literals (
'text', 123, null, true, false), the current-timestamp function, and current_timestamp are permitted.
CSV Column Inference
When uploading CSV files, the platform can automatically infer column types from sample data:Entity Types & Relationships
A schema’s kind is set by a single field,entityType, which determines how it participates in decisioning:
Related-entity data via Schema Joins: To bring a related entity (orders, addresses, accounts) into a decision, create a Schema Join (Data → Schema Joins): the customer schema is the primary side, the related schema is the foreign side, and
aggregations (sum/count/avg/min/max/any/all/first) roll one-to-many rows up to the customer level at decision time. Joins with autoEnrich: true are included in the decision context automatically — see Schema Joins.
Schema References
Schemas are referenced throughout the platform:- Enrichment stages in Decision Flows load customer data from schema tables at decision time
- Computed values reference schema data via the
customer.*namespace in formulas - Pipelines use schemas as target destinations for ETL workflows
- Segments define customer cohorts using schema field conditions with SQL-like filters
Pipelines
Pipelines are visual ETL workflows built with a drag-and-drop flow editor powered by React Flow. Each pipeline connects a source connector to a target schema through a chain of transform nodes.Pipeline Structure
A pipeline consists of:- Connector — The source data connection (one of the four selectable types: S3, GCS, Azure Blob, SFTP)
- Schema — The target destination table
- Nodes — Visual nodes in the flow editor. The IR supports eight node kinds:
source,transform,validate,branch,join,enrich,target, andoutcomes(the inbound response-file sink — see the pipeline-node behavior note above for which are runnable today) - Edges — Connections between nodes defining data flow direction
Transform Types
KaireonAI provides 19 built-in transform types. Sixteen are implemented in the runtime executor and transform your data row-by-row. Three — vector embedding, geo resolution, and summarize — are IR-validated but currently pass rows through unchanged (they need tenant-supplied provider credentials / a materialization job that is not wired in this build). Sentiment scoring and language detection run in the built-in rule-based mode; sentiment scoring’s LLM mode is also passthrough until an LLM provider is wired. The most commonly used ops are detailed below:Rename Field
Rename Field
Rename columns to standardize naming conventions across data sources. Configure the source field name and the desired target field name.Config:
sourceField, targetFieldCast Type
Cast Type
Convert a field to a different data type. Supported target types:
string, integer, bigint, float, numeric, boolean, date, timestamp, json, uuid.Config: field, targetTypeExpression
Expression
Compute a new field using SQL-like expressions. Includes a function picker with 50+ built-in functions across 5 categories:
Config:
outputField, expressionRuntime coverage. The editor’s function picker lists the full SQL
surface, but the in-process runtime currently evaluates a subset:
the single-column string functions
LOWER / UPPER / TRIM /
LENGTH, plus the safe formula engine’s arithmetic, comparison,
ternary, and built-ins (min, max, round, abs, coalesce,
concat). Expressions the runtime can’t evaluate leave the row
unchanged (no error), so validate the output of complex expressions
before relying on them.Filter Rows
Filter Rows
Keep only rows matching specified conditions. Supports a visual condition builder with operators:
Config:
field, operator, valueRuntime coverage. The in-process runtime evaluates the
comparison operators (
=, !=, >, <, >=, <=) against a
single column and literal. Set-membership, pattern, null, and
between predicates are accepted by the builder but are not yet
enforced at run time — a predicate the runtime can’t parse
conservatively keeps the row rather than dropping it.Drop Field
Drop Field
Remove unwanted columns from the data flow. Select one or more fields to exclude from downstream processing.Config:
fields (array)Add Field
Add Field
Add a new column with a name, data type, and default value or computed expression.Config:
fieldName, fieldType, defaultValueMap Values
Map Values
Replace field values using a JSON lookup table. Useful for code-to-label mapping.Example:
{"M": "Male", "F": "Female", "O": "Other"}Config: field, mappings (JSON object), defaultValue (for unmatched values)Split Field
Split Field
Split a single field into multiple output fields by a separator character. For example, split a full name into first and last name fields.Config:
sourceField, separator, outputFields (array)Merge Fields
Merge Fields
Concatenate multiple columns into a single field with an optional separator string.Config:
sourceFields (array), separator, outputFieldDeduplicate
Deduplicate
Remove duplicate rows based on one or more key columns. Keeps the first occurrence when duplicates are found.Config:
keyFields (array)Aggregate
Aggregate
Group by one or more columns and apply aggregate functions:
sum, count, avg, min, max.Config: groupByFields (array), aggregations (array of {field, function, alias})Lookup / Join
Lookup / Join
LEFT JOIN with another schema table to enrich data. Specify the lookup schema, join key, and which fields to pull from the lookup table.Config:
lookupSchema, joinField, lookupField, selectFields (array)Hash
Hash
Apply cryptographic hashing to field values. Supports SHA-256 and MD5 algorithms. Used for anonymization or generating deduplication keys.Config:
field, algorithm (sha256 or md5), outputFieldMask PII
Mask PII
Detect and mask personally identifiable information. Supports partial masking patterns:
- SSN:
***-**-1234 - Email:
j***@example.com - Phone:
***-***-5678 - Credit card:
****-****-****-1234
field, maskType, preserveLengthSummarize
Summarize
Intended to aggregate related-entity data into a customer-level summary table at pipeline time (not decision time), so it does not add latency to the Recommend API.Config:
customerKey, windowDaysKeyboard Shortcuts
Undo/redo buttons are also available in the editor toolbar.
Execution Config
Pipelines support the following execution modes with configurable resource allocation:Streaming mode spawns a long-lived consumer per pipeline and is gated
behind the
FLOW_STREAMING_ENABLED=true environment variable on the worker
service. The gate exists because a streaming consumer requires a persistent
worker container (separate from the request-driven API) that is part of the
self-hosted deployment topology, not the hosted playground. Selecting
Streaming on the playground returns a clear error pointing to
streaming-runtime. For near-real-time
ingestion on the hosted playground, use Batch or Micro-Batch with a
short cron cadence against a batch-polling connector (e.g., Kafka).Configuration Options
Loading Strategies
When a pipeline writes to a target schema, you choose how incoming data merges with existing rows. The loading strategy is configured per pipeline and applies at execution time. The target executor supports six load modes:Blue-Green Swap is the safest strategy for production data. The atomic rename means readers see either the old table or the new table — never a partially loaded state.
Row Validation
Every pipeline run validates incoming rows before writing to the target table. Validation catches type mismatches, null violations, and length overflows before they hit the database.
Validation checks include:
- Type checking — Does the value match the target column’s data type?
- Null validation — Is a
NOT NULLcolumn receiving a null value? - Length limits — Does a
VARCHAR(n)value exceed its maximum length?
Progress Tracking
Pipeline executions display real-time progress in the UI:- Progress bar with percentage complete based on rows processed vs. estimated total
- Row counters showing loaded, failed, and skipped counts updated in real time
- Validation error accordion that expands to show individual row-level errors with field and reason
- Run history table showing each execution’s loading strategy, duration, row counts, and error summary
Run History
Each pipeline tracks its execution history. A run’sstatus moves through pending → running and settles on completed, completed_with_errors, or failed, alongside timestamps and error details. The pipeline list view shows the last run status and timing at a glance.
Supported File Formats
When reading from file-based sources (local_fs, s3, gcs, azure_blob, sftp, http_pull — all share the same format-parser layer via the common object-store abstraction shipped in Phase 6.2):
Field Reference
Connector Fields
Schema Fields
Pipeline Fields
Worked Example
This example walks through creating a customer data pipeline end-to-end: define a schema, connect to S3, build a pipeline with transforms, and execute.Step 1: Create a Customer Schema
ds_customers with the following DDL:
Step 2: Create an S3 Connector
Step 3: Build a Pipeline with Transforms
Create a pipeline that reads customer CSVs from S3, filters out zero-balance records, renames a field, and masks PII before loading into the schema: The create endpoint is IR-native: the body carries{ irVersion: "1.0", ir: <Pipeline IR> } alongside name, connectorId, and schemaId. The ir document holds the full node graph (a legacy nodes/edges body is rejected). The transform node chains its ops in a single node’s ops array:
- Reads CSV files from the
customers/daily/prefix in S3 - Filters to rows where
balance > 0(the runtime evaluates a single<column> <op> <literal>comparison perfilterop) - Renames
email_addresstoemailto match the schema field name - Masks the
ssnfield, keeping only the last four digits - Appends the transformed rows into the
ds_customerstable
API Quick Reference
Connectors
Schemas
Pipelines
All endpoints require authentication and tenant context. Responses use cursor-based pagination with
limit and cursor parameters.
For complete API request/response schemas, see the Connectors API, Schemas API, and Pipelines API.
Related
Decision Flows
Use Enrich stages to load schema data at decision time for real-time personalization.
Computed Values
Write formulas that reference
customer.* fields from your schema tables.Core Concepts
Understand how data connects to decisioning and delivery across the platform.