Examples
These patterns are starting points—swap table names, thresholds, Slack channels, and connection IDs for your workspace. Each example lists the intent, trigger, and shape of the graph; paste fragments into the canvas or provide them to an assistant following Vibe coding.
Natural-language version: “Build me the Incremental ETL pattern from the docs using dataset processed_tickets.” Point the assistant at this page plus the flow authoring guide.
1. Account health alert (schedule + Slack)
Intent: Every weekday morning, find accounts whose health score is below a threshold and post a compact list to Slack.
Trigger: schedule (cron) with timezone.
Graph sketch:
CALLsemantic.query→@.at_riskCONDITIONonlen(results) > 0(derive boolean in a smallTRANSFORMif needed)CALLslack.send_messagewith interpolated summary text
MCP-style prompt: “Create a scheduled agent weekdays 9am PT. Query accounts with health_score < 40 and churned = 0, limit 50. Post account_id, name, health_score as bullets to Slack channel C0123 using connection <slack_connection_id>.”
2. Ticket analysis pipeline (conversation trigger)
Intent: When a ticket conversation is ingested, classify sentiment and topics, then store JSON in a dataset for dashboards.
Trigger: conversation with types: ["ticket"].
The conversation trigger payload provides key, metadata, and timestamp — not the full ticket text. To load the full content, use a semantic.query step early in the flow.
Graph sketch:
CALLsemantic.queryto fetch the full ticket using identifiers from$.trigger.conversation.key(e.g. jointicketson the id found in the key object).AGENTsmallwith JSON-only system prompt →@.classificationCALLdataset.record.upsertkeyed by ticket id.
3. Renewal risk summary (query trigger + email)
Intent: Once per UTC day, select accounts renewing in N days with risk signals, summarize with a large model, email the owning CSM list.
Trigger: query SQL returning account_id, csm_email, name, … with LIMIT.
Graph sketch:
CALLsemantic.queryfor core renewal rows →@.renewals- Optional second
CALLfor needle movers / metrics. AGENTlargeto craft per-account or batched summaries depending on volume.CALLemail.sendwith bothbodyand optionalhtml.
Remember query-trigger cadence and idempotency (Triggers).
4. CRM sync (interval + update)
Intent: Every few hours, select accounts whose derived fields changed in FunnelStory and push properties to HubSpot or Salesforce.
Trigger: interval such as "6h".
Graph sketch:
CALLsemantic.queryfor the change set.LOOPover rows callinghubspot.update_recordorsalesforce.update_recordwith mapped fields, orsalesforce.create_recordwhen you need a new Salesforce record (for example a Task or Note on an Account).
Respect API rate limits—keep SQL selective and batches small.
5. Chat agent (manual + tools)
Intent: A user opens Chat, asks questions, and the LLM may call semantic.query or create tasks.
Trigger: manual (plus chat entrypoint).
Graph sketch:
- Final
AGENTmust write user-visible text to@.response. - Attach tools for
semantic.queryandtasks.createas needed.
6. Incremental ETL (query + dataset dedupe)
Intent: Process only rows not yet present in a dataset of finished keys.
Trigger: query SQL using LEFT JOIN dataset_records('processed') pattern (see flow authoring guide).
Graph sketch:
CALLsemantic.queryreturning pending rows.LOOPwith innerAGENTorCALLprocessing.CALLdataset.record.upsertmarking completion keys.
7. Parallel notify (BRANCH + JOIN)
Intent: When a condition hits, notify Slack and email in parallel, then continue cleanup only after both succeed.
Graph sketch:
CONDITIONon severity predicate.BRANCHintopath_slackandpath_email, each ending atJOIN.- After
JOIN, mark a dataset row or calltasks.create.
This pattern avoids serial delays when integrations are independent.