Skip to content

Savant Conversion Matrix

PlaidCloud converts Savant Labs analyses into native Advanced workflows. The importer maps each Savant agent to a workflow step, project variable, or canvas object, so a converted workflow runs cloud-native.

Each agent has a mapping tier:

  • Full — every option of the agent has a valid mapping to a PlaidCloud step.
  • Partial — the agent converts, and the option named in its row has no mapping: it becomes a named placeholder that refuses at run time, is refused by name, or is replaced by a stated fallback.

External-system connectors are connected, not converted — see Connecting to External Systems.

Across the 33 agents: 33 Full, 0 Partial.

Agent Tier PlaidCloud Equivalent Converts Option without a mapping
Adapter Agent (adapter) Full Select and schema projection step Renames, retypes, and orders fields. —
API / Infer Agent (legacy service) (service) Full Same as the API or Infer Agent, by serviceType An LLMService converts as the Infer Agent and an APIService as the API Agent; a missing or misspelled serviceType is read from the node’s keys with a warning. —
API Agent (apiService) Full Table Extract, REST Request, and a left join back One GET, POST, PUT, PATCH or DELETE request per input row; the raw response body lands in a text column, HTTP errors stay as rows, every input row is kept, and a quota per period becomes a fractional requests-per-second. A relative URL joins its api_bindings base URL or REST connection host; a host, port or path from a row field is substituted per row; next-URL, Link-header, offset and page paging are followed. —
Blend Agent (blend) Full Inner Join, Outer Join, Anti Join Inner, left, right, full, anti and outer-excluding-inner blends, OR-joined, contains and is-part-of conditions, with matched and unmatched streams; columns a pivot or parse names only at run time are carried through. —
Dedupe Agent (deduplicate) Full Table Extract with distinct rows Keeps the first record per key, within Group By groups, and routes duplicates to a second stream or flags them. —
Destination Agent (destination) Full Export: CSV, Export: Excel, Export: Parquet, JSON, Avro or XML, Export to PDF, Export: Tableau Hyper with Publish to Tableau, Export: External Database Tables, Export to Google Spreadsheet, Notify via Slack, or email Writes through destination_bindings to a document account (CSV, TSV, TXT, Excel, Parquet, JSON, Avro, XML, PDF or a Tableau .hyper, in any Java charset, a character it lacks written as ?), a connection table, a Google Sheet, a Tableau data source or a Slack channel, or email recipients. Append, upsert, update and groupReplace merge on the match keys (a file or table is read back and rewritten; Tableau updates its rows in place). —
Explode Agent (explode) Full Cross Join Cross-joins a small side against the main stream. —
Filter Agent (filter) Full Table Extract with a filter expression Splits records by wizard or expression into true and false paths. —
Filter Pushdown (pdfilter) Full Table Extract with a filter expression Database-side filter, converted the same as Filter. —
Format Agent (format) Full Table Extract with column renames, or Promote Header Hides, retypes, renames and fills fields matched by name (contains, starts with, ends with) or by being empty; header-row promotion and is-empty matching run at run time in the Promote Header step. —
Fuse Agent (fuzzy_match) Full Fuzzy Match, between a Union All and two joins Stacks both inputs, matches records on the key fields with the deterministic Jaro/TF-IDF matcher at threshold 80, and joins both sides back with a Confidence Score. —
Group (group) Full Canvas container Preserved as workflow organization. —
Infer Agent (gen_ai) Full AI/NLP prompt task The prompt runs per row over the input fields on the visible LLM connection matching Savant’s provider and model; the answer lands in an AI Answer column beside every input column, and rowLimit caps the rows answered. —
JSON Agent (json) Full JSON Parse Flattens a JSON field into dotted-key columns, or explodes an array into one row per element; the keys are read from the data at run time. —
Notes Agent (notes) Full Canvas annotation Preserved as workflow context. —
Pivot Agent (pivot) Full Pivot Pivots rows to columns with aggregation. —
Recursion Agent (hierarchy) Full Hierarchy Closure, Table Extract, and Multi-Table Join Walks a parent/child tree to any depth, aggregating each node over the ids on its path to the root, itself included, and writing Depth and Path; a loop stops at the repeated node. —
Sample Agent (sample) Full Table Extract with a row limit Keeps the first N rows, optionally per group, a random percent or N rows, or one row in every N. —
Search and Replace (search_replace) Full Table Extract with nested replace expressions, split across stages Find/replace rules (contains or matches; replace or append), case-sensitive or not, whole word or not, applied in order over the chosen text fields, or every text field when none is named. —
Source Agent (source) Full Import steps bound through source_bindings (Import: CSV, Import: Excel, Import: SQL) or an existing table Reads the bound table or document; an unbound source creates an empty import and a warning. —
Spatial Match Agent (spatial_match) Full Spatial Match (executor), Cross Join, or Find Nearest Intersects, within, contains, touches, crosses, overlaps, equals, disjoint and and/or multi-rule matches, geodesic within distance, nearest N with a maximum distance and a Distance column (combined with other rules as nearest-then-filter: AND joins, OR unions), and Cross, with matched and unmatched streams. —
Spatial Summarize Agent (spatial_summarize) Full Spatial Combine, Spatial Centroid, and point-to-line steps Union, intersect, bounding box, one or several geometric centers, and polyline or polygon builds, per group with an optional sort. —
Split Agent (split) Full Split Text, or Table Extract with split_part columns Splits a text field on a literal separator of any length into rows or columns, with trim and keep-original; the number of columns is read from the data at run time. —
Split Output (outlet) Full Workflow edge Routes a named output to its consumers. —
Stack Agent (multi_stack) Full Union All Stacks any number of inputs by name or position. —
Summarize Agent (summarize) Full Table Extract with aggregation Groups and aggregates, including first/last by a deterministic sort and per-row window aggregates (useWindow). —
Summarize Pushdown (pdsummarize) Full Table Extract with aggregation Database-side aggregation, converted the same as Summarize. —
Text (text) Full Canvas annotation Preserved as workflow context. —
Time Series Agent (rollup) Full Table Extract aggregation over a period-bucket expression, Period Spine, Anti Join and Union All Rolls records up to day, week, month, quarter, year or decade periods between optional start and end dates, per group, excluding NULL dates and zero-filling empty periods. —
Transform Agent (edit) Full Table Extract with column expressions Calculated columns, type changes, and window calculations (lag, lead, cumulative sum, row number, forward and backward fill), evaluated in order. —
Unpivot Agent (unpivot) Full Melt Converts columns to rows as a name/value pair. —
Vision Agent (vision) Full Image OCR, then the AI/NLP prompt task Each document goes to the provider as an image or PDF when it accepts that type and size, else its PDF text layer or OCR text is sent; the prompt’s answer lands in an AI Answer column. —
XML Agent (xml) Full XML Parse Selects elements, extracts child values and attributes into columns, or converts XML to JSON; a simple //a/b path converts as before and any other XPath 1.0 path (predicates, attribute tests, wildcards, functions such as count(), name() and contains()) is evaluated as XPath, namespace-aware or as written. —

Wiring, canvas, and pushdown variants (Split Output, Group, Text, Filter Pushdown, Summarize Pushdown) are Savant node types without a help-center agent article of their own; each converts as the agent it mirrors.

A credential in an API Agent request is never copied into a workflow step. Over https it moves into a REST connection; over http, without permission to write connections, or in a conversion made through MCP it is withheld with a warning. This is by design and does not lower the tier.

Two constructs are refused by name rather than converted. Neither lowers an agent’s tier.

Construct Why It Is Refused
An aggregate or window function in a plain expression Savant itself fails on it at run time, so there is no result to reproduce. Inside a Transform calculation or a Summarize it converts.
An API Agent request that carries a credential and takes its host from an input field Each row could send the credential to a host the data chooses. The request becomes a named placeholder. A request without a credential, and a credential on a fixed host, convert.

A relative API URL converts when you bind a base URL or REST connection with api_bindings; see Convert-Time Bindings.

Savant expression functions and operators convert to PlaidCloud expressions. Tier: Full. Functions and operators convert to PlaidCloud expressions, GEO_* functions anywhere in an expression run in companion Spatial steps, TO_TEXT/date formats (numeric DecimalFormat patterns, per-row formats, S fraction, MMMMM, week tokens) run in Text Function steps, and a function with no equivalent is flagged by name.

Every function and format converts, including TO_TEXT with a numeric pattern, a format that is only known per row, fractional-second tokens, and week-based date tokens. The one exception is an aggregate or window function in a plain expression. It fails in Savant itself, so the converter flags it by name; inside a calculation or a Summarize it converts.

The loader accepts every observed export shape — flat, model-wrapped, server-record, recipe envelope, array-wrapped, BOM-prefixed, and legacy type aliases — and normalizes them into one model. Tier: Full.

Savant analysis parameters convert to project variables, and references to them inside node configs are rewritten to the PlaidCloud variable syntax. List, dictionary, and aliased parameter shapes all load.

Savant connectors are source and destination targets, not steps, and an export carries no datasets or credentials. PlaidCloud reaches these systems through a connection rather than through a node on the canvas.

Savant Where It Goes in PlaidCloud
Source connector source_bindings maps the Savant node or dataset to a PlaidCloud table or a Document file, read through the matching import step; an unbound source warns and processes nothing
Destination: CSV, Excel and other file formats An export step (Export: CSV, Export: Excel, Export to PDF)
Destination: Google Sheets, Tableau, Slack Export to Google Spreadsheet, Publish to Tableau, or Notify via Slack, through a connection you bind with destination_bindings
Destination: other connectors A CSV or table destination with a warning naming the original target

Conversion never contacts the source or destination system.

Validation is by oracle, and the evidence label travels with every result.

  • Parity is claimed only against a real golden — output from the customer’s own system of record, compared row by row.
  • Alteryx-equivalence is the strongest evidence available for a Savant analysis without a golden: the analysis is migrated from an Alteryx workflow with a real golden through Savant’s own migration, converted, run, and diffed. A match proves the output is Alteryx-equivalent for that flow, not that it matches the Savant runtime.
  • Expected output derived from the spec shows consistency with the documented behavior and is never reported as parity.
  • Semantics Savant does not document are implemented as the Alteryx reading and reported as unverified against Savant.

Comparison checks schema, row count, and row values, and ignores row order unless the workflow depends on it.