icp-sequencer-workflow

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ICP Sequencer Workflow

ICP Sequencer 工作流

Build three connected artifacts: a native search-and-enrichment workflow, a saved people audience segment, and an audience-fed draft campaign with outreach copy and sender settings.
The workflow saves qualified, verified contacts to Audiences; the segment selects them; the campaign handles enrollment from that segment. Do not add an Enroll in Campaign node. Production searching and enrichment belong inside the saved workflow, not local scripts or standalone batches followed by a CSV import. Local configuration files and bounded diagnostic previews are fine.
Keep this skill self-contained in one
SKILL.md
.
构建三个相互连接的构件:原生搜索与富化工作流、已保存的人员受众分群,以及一个由受众驱动、包含外呼文案和发件人设置的草稿 Campaign。
工作流将符合资格且邮箱验证通过的联系人保存到 Audiences;分群负责筛选这些联系人;Campaign 负责从该分群完成注册。不要添加 Enroll in Campaign 节点。生产环境的搜索和富化必须位于已保存的工作流内,而不是先通过本地脚本或独立批次运行,再进行 CSV 导入。可以使用本地配置文件和有边界限制的诊断预览。
保持此 skill 自包含于一个
SKILL.md
中。

Declared inputs

声明的输入项

Reuse anything the user or session already supplied and ask only for genuine gaps, one focused question at a time. Zero, false, and "no personalization" are real answers, not missing inputs.
InputWhat the installer suppliesIf it is missing
Buyer roles and senioritythe target function(s) and seniority the ICP is built aroundask first — the search query cannot be compiled without it
Company criteria and signalssize, industry, growth, technographic or other account filtersbuild a person-level query and disclose that no company criteria were applied
Person vs. company geographywhether location means the person or the company HQ, and which regionsapply no geographic filter and say so; do not infer one
Exclusionsexplicit inclusion/exclusion lists and any accounts to leave outapply none; never infer exclusions or broaden targeting to hit a count
Seller, offer and CTAwho is selling, the offer, the call to action, and substantiated proof for any claimbuild the search and enrichment; hold campaign copy until supplied
Optional personalizationwhich facts to enrich and how recent they must beskip personalization — a valid choice — and connect the email gate straight to writeback
Workspacethe intended Clay workspace with Workflows, Audiences and campaignsstop before creating anything if the target is ambiguous
Email verification functionthe installed waterfall/verify function to use, if a specific one is requireddiscover a suitable one in the workspace; if none exists, report the blocker rather than guessing emails
Membership designa dedicated boolean marker field per campaign, or an explicitly identified existing membership designcreate a dedicated boolean field for this campaign so other campaigns' membership is not overwritten
Sender accountwhich connected sending identity the campaign should useask only when materially different senders are ambiguous; leave the campaign in draft
Run scope (at execution)the whole search or a result limit, and any per-run or per-company capsrun on demand and resolve scope at run time with supported controls; disclose any cap that cannot be enforced
复用用户或会话已提供的所有内容,仅针对真正缺失的信息提问,每次只问一个聚焦的问题。零、false 和“无需个性化”都是有效答案,而不是缺失输入。
输入安装程序提供的内容缺失时
买家角色和职级构建 ICP 所依据的目标职能和职级首先询问——没有该信息就无法编译搜索查询
公司条件与信号规模、行业、增长、技术特征或其他账户筛选条件构建人员级别查询,并说明未应用任何公司条件
人员还是公司地理位置位置指人员所在地还是公司总部,以及哪些地区不应用地理筛选并说明;不要推断
排除项明确的包含/排除名单以及需要排除的账户不应用任何排除项;绝不推断排除条件或为达到数量而扩大目标范围
卖家、产品和 CTA谁在销售、提供什么产品、CTA,以及任何声明的可证实依据构建搜索与富化;Campaign 文案暂缓,直到提供相关素材
可选个性化需要富化哪些事实以及时效要求跳过个性化——这是有效选择——并将邮箱校验门直接连接到回写
工作区预期使用的 Clay 工作区,需包含 Workflows、Audiences 和 Campaign若目标不明确,在创建任何内容前停止
邮箱验证函数要使用的已安装 waterfall/verify 函数(如需指定)在工作区中发现合适的函数;若不存在,报告阻塞项,不要猜测邮箱
成员身份设计每个 Campaign 专用的布尔标记字段,或已明确识别的现有成员身份设计为此 Campaign 创建专用布尔字段,避免覆盖其他 Campaign 的成员身份
发件账户Campaign 应使用的已连接发件身份仅当存在实质不同的发件人歧义时询问;Campaign 保持草稿状态
运行范围(执行时)完整搜索还是结果数量上限,以及每次运行/每家公司上限按需运行,在运行时使用受支持的控制项确定范围;披露无法执行的上限

What this skill touches

此 skill 涉及的内容

  • Reads: workspace identity (
    clay whoami
    ); existing workflows, segments and campaigns named by the user, to avoid duplicates; Audiences field definitions; the search trigger's runtime output; the email function's inputs, output and verification contract; connected sender accounts; and the ICP, offer and personalization context the user supplies.
  • Writes: creates a draft workflow; creates or configures a people audience segment; creates a draft audience-fed campaign (outreach copy, sender settings, segment binding); upserts contact records to Audiences — verified primary email, name, matched-company fields, requested personalization — plus a per-campaign boolean membership marker written only after qualification and email verification; may add compatible Audiences fields the requested build needs; and may append a Marketplace source line to the workflow's description when the installed skill supplies an assigned identity.
  • Never: enrolls people or sends email on its own; publishes or runs the workflow, launches the campaign, or sends tests without separate authorization; deletes records or clears populated fields (preserves existing values when incoming data is blank); overwrites another campaign's membership on a shared field; guesses a domain or email; imports unrelated contacts to populate a preview; or submits or publishes itself.
  • Halts: Step 4 sample-review, Step 4 spend-approval, Step 4 send-approval.
  • 读取:工作区身份(
    clay whoami
    );用户指定的现有工作流、分群和 Campaign,以避免重复;Audiences 字段定义;搜索触发器的运行时输出;邮箱函数的输入、输出和验证约定;已连接的发件账户;以及用户提供的 ICP、报价和个性化上下文。
  • 写入:创建草稿工作流;创建或配置人员受众分群;创建草稿的受众驱动 Campaign(外呼文案、发件人设置、分群绑定);向 Audiences 写入或更新联系人记录——已验证的主邮箱、姓名、匹配公司字段、请求的个性化信息——以及每个 Campaign 专用的布尔成员标记,该标记仅在完成资格验证和邮箱验证后写入;可按本次构建需要添加兼容的 Audiences 字段;当已安装 skill 提供指定身份时,可向工作流描述追加一行 Marketplace 来源说明。
  • 绝不:自行注册联系人或发送邮件;未经单独授权不发布或运行工作流、启动 Campaign 或发送测试;不删除记录或清空已有值的字段(传入数据为空时保留现有值);不在共享字段上覆盖其他 Campaign 的成员身份;不猜测域名或邮箱;不为填充预览而导入无关联系人;不自行提交或发布。
  • 停止条件:第 4 步的样本审查、支出审批、发送审批。

Discovery and artifact links

构件发现与链接

Run
clay whoami
to identify the workspace. Reuse artifacts explicitly identified by the user or session; inspect them before editing and resolve ambiguous matches before creating duplicates.
Use available Clay skills for workflows, search grammar, action discovery, Audiences, and campaigns as needed. Otherwise use installed
clay ... --help
and live schemas. Current guidance takes precedence over the examples below. Report authentication, network, and unsupported-capability errors accurately rather than treating them as interchangeable.
Immediately after each artifact is successfully created, send a brief progress update with its name and a clickable
https://app.clay.com
editor link. Do this for the workflow, audience segment, and campaign individually; do not wait until final delivery.
Say it is a draft or still being configured when appropriate. When reusing an artifact, share its link when you identify it.
Prefer the URL returned by Clay. If no URL is returned, construct it from the actual workspace ID and created resource ID:
ArtifactApp URL
Workflow
https://app.clay.com/workspaces/<workspaceId>/terracotta/tc-workflows/<workflowId>
People segment
https://app.clay.com/workspaces/<workspaceId>/people/audience/<segmentId>
Campaign
https://app.clay.com/workspaces/<workspaceId>/campaigns/<campaignId>
Never substitute API endpoints, guessed IDs, or another workspace's resources. Include all three links again in the final handoff.
运行
clay whoami
识别工作区。复用用户或会话明确指定的构件;编辑前先检查这些构件,并先解决歧义匹配,以免创建重复项。
按需使用 Clay skills 来处理工作流、搜索语法、action 发现、Audiences 和 Campaign。否则,使用已安装的
clay ... --help
和实时 schema。当前指南优先于下方示例。应准确报告身份验证、网络和不支持能力的错误,不要将它们混为一谈。
每个构件成功创建后,立即发送一条简短进度更新,其中包含构件名称和可点击的
https://app.clay.com
编辑器链接。工作流、受众分群和 Campaign 都要分别发送;不要等到最终交付时再发送。
适用时,说明其仍为草稿或仍在配置中。复用构件时,在识别到后分享其链接。
优先使用 Clay 返回的 URL。如果 Clay 未返回 URL,则根据实际的工作区 ID 和已创建资源 ID 构造:
构件应用 URL
Workflow
https://app.clay.com/workspaces/<workspaceId>/terracotta/tc-workflows/<workflowId>
People segment
https://app.clay.com/workspaces/<workspaceId>/people/audience/<segmentId>
Campaign
https://app.clay.com/workspaces/<workspaceId>/campaigns/<campaignId>
绝不替换为 API 端点、猜测的 ID 或其他工作区的资源。最终交付时再次包含全部三个链接。

1. Establish the ICP and offer

1. 确立 ICP 与销售方案

Guide the user through a conversational interview: ask one focused question per message, then wait for the answer before asking the next. Do not display the full questionnaire or combine several independent questions into one prompt. Reuse information already supplied and skip answered questions. Brief examples can help the user answer.
Start with the buyer's role/function, then resolve missing company criteria, geography, exclusions, offer, and optional personalization in that order. Split broad topics into individual questions when needed. Ask about sender selection later, after discovering connected accounts. Continue independent discovery or draft work between answers when useful.
The following is an internal coverage checklist, not a questionnaire to paste to the user:
  • Buyer roles and seniority; company criteria and signals; person geography versus company headquarters; exclusions.
  • Seller, offer, call to action, and substantiated product facts or approved proof.
  • Optional personalization facts and recency requirements. No extra personalization enrichment is valid.
Summarize the ICP and meaningful assumptions briefly. Default to on-demand configuration when cadence is unspecified. Do not ask for leads per run or contacts per company during the build interview, and do not hardcode a search cap unless the user requests one. The user chooses the entire search or a result limit when running the workflow. If asked to execute it, resolve the run scope then using the supported run controls; honor any limits already supplied. Two emails with a three-day follow-up are reasonable stated defaults, not performance guarantees. Don't broaden targeting to reach a count or override explicit inclusion/exclusion choices.
Compile the query using the current
clay searches query-mode reference
. Keep current-role and company predicates within the same experience expression. Check growth units and company-size buckets: a growth ratio above
1.2
means more than 20%, while a 51–1,000 bucket does not exactly implement 50–1,000. Disclose such boundaries. Criteria requiring further enrichment must be checked inside the workflow; report criteria that cannot be implemented.
通过对话式访谈引导用户:每条消息只问一个聚焦的问题,然后等待回答后再问下一个。 不要展示完整问卷,也不要把多个独立问题合并到一个提示中。复用已提供的信息并跳过已回答的问题。简要示例可帮助用户回答。
先从买家角色/职能开始,然后依次解决缺失的公司条件、地理位置、排除项、销售方案和可选个性化。将宽泛主题拆分为单独问题。发送人选择稍后再问,先发现已连接账户。在回答间隙,可继续独立发现或草稿工作。
以下内容是内部覆盖清单,不要粘贴给用户:
  • 买家角色与职级;公司条件与信号;人员地理位置还是公司总部;排除项。
  • 卖家、销售方案、CTA 以及有依据的产品事实或已批准证明。
  • 可选个性化事实与时效要求。不做额外的个性化富化也是有效选择。
简要总结 ICP 和重要假设。未指定节奏时,默认配置为按需运行。构建访谈期间不要询问每次运行所需线索数或每家公司联系人数,也不要在用户未要求时硬编码搜索上限。用户运行工作流时选择完整搜索或结果上限。如果要求执行,则届时使用受支持的运行控制项确定范围,并遵循已提供的任何限制。“发送两封邮件并在三天后跟进”是可以说明的合理默认值,但不是效果保证。不要扩大目标范围以达到某个数量,也不要覆盖明确的包含/排除选择。
使用当前
clay searches query-mode reference
编译查询。将当前职位和公司条件保留在同一个 experience 表达式中。检查增长单位和公司规模区间:增长比率大于
1.2
表示超过 20%,而 51–1,000 区间并不精确等同于 50–1,000。披露此类边界。需要进一步富化才能判断的条件必须在工作流内检查;报告无法实现的条件。

2. Build the native workflow

2. 构建原生工作流

Build this as a saved Clay workflow rather than inline conversation work, so it persists as a reusable graph the user can re-run; confirm node syntax on the installed CLI first with
clay workflows nodes --help
(never a hardcoded command form) before creating the nodes shown below.
Show the proposed flow, then create a descriptively named draft workflow following current budget-selection requirements:
mermaid
flowchart TD
    A([Find leads: ICP search]) --> B(Resolve required company details if missing)
    B --> C(Find and verify work email)
    C --> D{Verified email available?}
    D -->|Yes| E(Optional personalization)
    E --> F(Save contact and membership marker to Audiences)
    F -.-> G[Audience segment]
    G -.-> H[Audience-fed campaign]
The dashed connections describe separate artifacts, not additional workflow nodes. Omit company enrichment when required details are already available, and omit unwanted personalization. Search filters satisfy qualification for the criteria they enforce; general guidance to qualify leads does not require a second node. Add downstream qualification only for criteria the search cannot express. Do not narrow structured seniority matches with extra title-keyword rules. Missing required inputs and unverified emails stop or go to review; those are data-readiness checks, not ICP requalification.
Use a native Find leads trigger containing the actual ICP query. One matching person starts one run. The known source shape is below; verify against current trigger help:
json
{
  "triggerType": "action_source_scheduled",
  "dataSource": {
    "kind": "cpj_criteria",
    "entityType": "people",
    "dslQuery": "<ICP query>"
  }
}
Without
scheduleConfig
, this is on demand despite the type name. Creating the trigger does not execute the search. Read it back for its output schema; saved source configuration may return a source ID rather than echoing the query. If native sourcing is unavailable, report the blocker instead of silently substituting a CSV workflow.
Before finalizing bindings, inspect representative actual outputs from this workflow's search trigger, using existing runs or an authorized small source test. A search preview, declared schema, or another workflow's mappings do not establish runtime values. Check every required email input for presence, type, and nulls. In particular,
matched_experience
may be null even when latest-title/company fields and a Clay company ID are present. Without runtime evidence, mark bindings unverified rather than claiming readiness.
Use title, company, domain, and identifiers from the same employer that satisfied the search. Do not silently fall back to the latest employer: establish that it matches, resolve the matched employment through supported enrichment, or route unresolved records to review and disclose the limitation. When the correct company identifier is available but its domain is missing, enrich that company inside the workflow and gate on the email function's required inputs. Do not discard the whole population merely because the source omits a field that can be enriched. Never guess domains or emails.
Discover a suitable installed email waterfall/function and inspect its inputs, outputs, and verification contract. If it returns only verified work emails, label it “Find and verify work email” without redundant verification. Otherwise add verification and gate on its documented accepted status. Non-empty email alone is not verification. Stop missing or unverified addresses before membership writeback.
Keep optional personalization after qualification and verification where possible. Ground it in returned evidence, preserve sources/dates when relevant, and provide honest missing-value fallbacks. Purchase only facts the copy uses.
A search limit caps candidates, not verified emails or enrollments. Per-person code has no cross-run memory: enforce global/per-company caps only through supported source or persistent mechanisms, and disclose unenforceable limits before running.
将其构建为已保存的 Clay 工作流,而不是对话中的临时操作,使其成为可重复运行的可复用图谱;创建下列节点前,先用
clay workflows nodes --help
(绝不硬编码命令格式)在已安装 CLI 上确认节点语法。
先展示建议流程,然后按照当前预算选择要求创建一个命名清晰的草稿工作流:
mermaid
flowchart TD
    A([Find leads: ICP search]) --> B(Resolve required company details if missing)
    B --> C(Find and verify work email)
    C --> D{Verified email available?}
    D -->|Yes| E(Optional personalization)
    E --> F(Save contact and membership marker to Audiences)
    F -.-> G[Audience segment]
    G -.-> H[Audience-fed campaign]
虚线连接表示独立构件,而不是额外的工作流节点。若所需公司详情已可用,省略公司富化;若不需要个性化,也将其省略。搜索筛选条件已涵盖其能够执行的标准;通用的线索资格筛选指导不需要额外节点。仅为搜索无法表达的标准添加下游资格判断。不要用额外的职位标题关键词规则进一步收窄结构化职级匹配。缺失必需输入和邮箱未通过验证会停止流程或转入审查;这些属于数据就绪检查,而不是 ICP 重新资格判断。
使用原生 Find leads 触发器,其中包含实际 ICP 查询。一个人匹配即启动一次运行。已知的数据源结构如下;须根据当前触发器帮助信息进行验证:
json
{
  "triggerType": "action_source_scheduled",
  "dataSource": {
    "kind": "cpj_criteria",
    "entityType": "people",
    "dslQuery": "<ICP query>"
  }
}
没有
scheduleConfig
时,即使类型名称如此,它仍是按需运行。创建触发器不会执行搜索。读回其输出 schema;已保存的数据源配置可能返回 source ID,而不是回显查询。如果原生数据源不可用,报告阻塞项,不要悄悄替换为 CSV 工作流。
最终确定绑定前,使用现有运行记录或已授权的小规模 source 测试,检查此工作流搜索触发器的代表性实际输出。搜索预览、声明的 schema 或其他工作流的映射均不能证明运行时值。检查每个邮箱必需输入是否存在、类型是否正确以及是否为空。特别是,即使存在最新职位/公司字段和 Clay company ID,
matched_experience
仍可能为 null。没有运行时证据时,应将绑定标记为未验证,而不是宣称已就绪。
使用满足搜索条件的同一雇主对应的职位、公司、域名和标识符。不要悄悄回退到最新雇主:应确认其是否匹配,通过受支持的富化解析匹配雇佣关系,或者将未解析记录送入审查并披露该限制。当正确 company identifier 可用但缺少域名时,在工作流内富化该公司,并根据邮箱函数所需输入设置判断门。不要因为数据源缺少某个可富化字段就丢弃整个联系人群体。绝不猜测域名或邮箱。
发现合适的已安装邮箱 waterfall/函数,并检查其输入、输出和验证约定。如果它只返回已验证的工作邮箱,则将其标记为“Find and verify work email”,不添加冗余验证。否则,添加验证并根据其有文档说明的接受状态设置判断门。邮箱非空本身并不代表已验证。在写入成员身份之前,缺失或未验证的地址必须停止流程。
尽可能将可选个性化放在资格判断和验证之后。让个性化基于返回的证据,并在相关时保留来源/日期,同时提供诚实的缺失值回退。只获取文案实际使用的事实。
搜索上限限制的是候选人数,而不是已验证邮箱数或注册数。逐人代码没有跨次运行记忆:仅通过受支持的数据源或持久化机制执行全局/每公司上限;并在运行前披露无法执行的限制。

Wiring essentials

接线要点

Use current workflow data-passing guidance and action schemas. Preserve these distinctions:
  • Wire the trigger's returned
    workflowNodeId
    , not its
    resourceId
    , through
    incomingEdges[].sourceNode
    . A trigger has at most one direct outgoing edge.
  • Pin upstream values with
    inputSchema.properties.<variable>.sourceNodeId
    and
    sourcePath
    ; map tool parameters through
    tools[].inputMappingConfig
    .
  • Trigger fields are at the root; tool/function results are under
    $.result
    . Verify exact output names, including JSONPath brackets for names containing spaces.
  • Route condition branches using their actual rule IDs and supported no-match termination. Updating incoming edges replaces the existing set.
  • Read saved nodes back: schemas normalize and default mappings may be added on save.
使用当前工作流数据传递指南和 action schema。保留以下区别:
  • 将触发器返回的
    workflowNodeId
    (而不是
    resourceId
    )通过
    incomingEdges[].sourceNode
    传递。触发器最多只有一个直接出边。
  • 通过
    inputSchema.properties.<variable>.sourceNodeId
    和
    sourcePath
    固定上游值;通过
    tools[].inputMappingConfig
    映射工具参数。
  • 触发器字段位于根层级;工具/函数结果位于
    $.result
    下。核实确切的输出名称,包括名称中含空格时使用的 JSONPath 方括号。
  • 使用实际的规则 ID 和受支持的无匹配终止方式路由条件分支。更新 incoming edges 会替换现有集合。
  • 读回已保存的节点:保存时 schema 可能被规范化,且可能自动添加默认映射。

3. Connect Audiences and the campaign

3. 连接 Audiences 与 Campaign

Inspect Audiences field definitions. Configure contact upsert with suitable identity lookup keys, verified primary email, name, matched company information, and required personalization. Preserve populated values when incoming data is blank. Selected lookup/write fields each need a corresponding mapping.
Create a dedicated boolean membership field for this campaign and a people segment filtering that field to
true
, unless an explicitly identified existing membership design is suitable. Write the marker only after qualification and email verification. Avoid shared scalar cohort fields that overwrite other campaigns' membership.
Select the marker in
recordFields|selectedRecordFields
and map
recordFields|<markerFieldId>
using the current supported writeback schema. Static
true
can be rejected with “Select a workflow field.” In that case, produce an explicit typed boolean output after the verified-email gate (for example, a small code step returning
campaign_member: true
) and bind that field. Test the producer and persisted mapping; never substitute an assumed tool
success
flag or retain redundant qualification just to supply the marker. Confirm the saved record has the intended value and actually matches the segment. A segment is a filter, not a storage destination; creating it does not populate it.
Create the campaign during the build, rather than leaving it as an undisclosed prerequisite. Inspect current campaign create/update help. Use the audience-fed path and bind the segment through
leadBaseSegmentId
while the campaign is draft. Removing a segment does not convert a campaign to workflow enrollment mode. Do not introduce UI-only campaign creation or placeholder enrollment nodes into this CLI workflow.
Draft and review concise outreach grounded in the established seller and offer. Follow-ups address nonresponders. Use verified field identifiers, readable placeholders, and fallbacks for optional personalization. The workflow must populate all required campaign fields. Select discovered sender accounts from the user's choice or established context; ask when materially different sender identities remain ambiguous.
Save copy and sender settings using supported commands. An empty segment may prevent contact-based preview; disclose that limitation rather than importing unrelated contacts or sending email to test it.
检查 Audiences 字段定义。配置联系人 upsert,使用合适的身份查找键、已验证的主邮箱、姓名、匹配公司信息和所需个性化字段。传入数据为空时保留已有值。选定的查找/写入字段均需要对应的映射。
为此 Campaign 创建一个专用布尔成员字段,并创建人员分群,按该字段筛选为
true
,除非已明确识别且适合使用现有成员身份设计。仅在完成资格判断和邮箱验证后写入该标记。避免使用会覆盖其他 Campaign 成员身份的共享标量分群字段。
在
recordFields|selectedRecordFields
中选择该标记,并使用当前支持的回写 schema 映射
recordFields|<markerFieldId>
。静态
true
可能会因“Select a workflow field.”而失败。此时,在已验证邮箱判断门之后生成明确的类型化布尔输出(例如,一个返回
campaign_member: true
的小型代码步骤),并绑定该字段。测试生产者及持久化映射;绝不假定工具的
success
标志,也不要为了提供标记而保留冗余的资格判断。确认已保存记录具有预期值,且确实匹配该分群。分群是筛选器,不是存储目标;创建分群本身不会填充分群。
在构建期间创建 Campaign,不要将其留作未披露的前置条件。检查当前 Campaign 创建/更新帮助信息。使用受众驱动路径,并在 Campaign 处于草稿状态时通过
leadBaseSegmentId
绑定分群。移除分群不会将 Campaign 转换为工作流注册模式。不要在这个 CLI 工作流中引入仅限 UI 的 Campaign 创建方式或占位注册节点。
基于已确定的卖家和销售方案起草并审查简洁外呼内容。跟进邮件面向未回复者。使用已验证的字段标识符、可读占位符和可选个性化信息的回退值。工作流必须填充所有 Campaign 必需字段。根据用户选择或既定上下文,从发现的发送账户中选择发件人;当存在实质不同的发件人身份歧义时再询问。
使用受支持的命令保存文案和发件人设置。空分群可能阻止基于联系人的预览;应披露该限制,而不是导入无关联系人或发送测试邮件。

4. Validate and hand off

4. 验证与交付

Build drafts by default. Authorization to build covers the requested artifacts and fields; it does not by itself authorize publishing/running the workflow, launching the campaign, or sending tests. Honor execution authorization already given in the session without asking again.
Workflow execution and campaign launch are separate. Leads can be prepared while the campaign is draft. Writes that add members to an active campaign's segment can cause outreach even without an enrollment node, so account for that before execution.
Read back and validate:
ArtifactRequired evidence
WorkflowNative search and input bindings persisted; only necessary qualification, input-readiness, and verification gates connected; no-match paths stop; correct upsert and marker; graph validates and canvas is formatted
SegmentFilter matches the exact written marker/value and user-specified criteria
CampaignCorrect segment binding; saved copy, required fields/fallbacks, and sender configuration; draft status unless otherwise authorized
Before calling the workflow tested or ready to run at scale, complete a small authorized end-to-end test with the campaign in draft: inspect actual trigger output, resolved email inputs, verified email output, saved contact fields, and segment membership. Use a real candidate from this source; synthetic code inputs and graph validation alone are insufficient. A run that completes by skipping every record does not demonstrate the success path. Investigate all-null inputs or universal skips before increasing volume.
For Find leads, verify which published version the source executes; draft repairs do not fix the live graph until published. Test the final configuration before recommending a larger rerun. A single-node test ends at that node and does not prove downstream writeback or membership. Respect execution approvals: if a test is blocked, inspect and surface the approval request once, keep the result “built but untested,” and stop dependent execution. Parse command errors before extracting IDs or polling; do not retry an approval gate or poll a nonexistent run. Never report contacts processed when nothing ran.
Deliver the three clickable app links, the final flow, important ICP assumptions, configured stages, draft/live status, checks performed, and precise remaining steps such as sender selection, publishing, or launch. An unlaunched campaign does not block lead preparation.
After an authorized run, distinguish candidates, qualification skips, verified emails, saved records, segment members, campaign enrollments, and sent emails using actual evidence. Successful upsert does not prove enrollment or delivery. If blocked, preserve artifact IDs, complete independent work, and give the smallest concrete next step.
默认构建草稿。构建授权涵盖所请求的构件和字段;其本身并不授权发布/运行工作流、启动 Campaign 或发送测试。遵循会话中已经给出的执行授权,无需再次询问。
工作流执行与 Campaign 启动是两个独立操作。Campaign 处于草稿状态时仍可准备线索。向活跃 Campaign 的分群添加成员的写入操作,即使没有注册节点也可能触发外呼,因此执行前必须考虑这一点。
读回并验证:
构件必需证据
Workflow原生搜索和输入绑定已持久化;仅连接必要的资格判断、输入就绪和验证判断门;无匹配路径会停止;正确的 upsert 和标记;图谱验证通过且画布格式正确
Segment筛选条件与写入的精确标记和值以及用户指定条件一致
Campaign正确的分群绑定;已保存文案、必需字段/回退值和发件人配置;除非另有授权,否则保持草稿状态
在将工作流称为已测试或可规模运行之前,Campaign 保持草稿并完成一次经授权的小规模端到端测试:检查实际触发器输出、解析后的邮箱输入、已验证邮箱输出、已保存联系人字段和分群成员身份。使用来自此数据源的真实候选人;仅使用合成代码输入和通过图谱验证并不足以证明成功路径。一次运行若通过跳过每条记录完成,则不能证明成功路径。在提高运行量之前,排查全为 null 的输入或所有记录都被跳过的情况。
对于 Find leads,验证数据源实际执行的是哪个已发布版本;在发布之前,对草稿的修复不会更新线上图谱。建议更大规模重跑之前,先测试最终配置。单节点测试会终止于该节点,不能证明下游回写或成员身份。遵守执行审批:如果测试被阻塞,检查并仅呈现一次审批请求,将结果保持为“已构建但未测试”,并停止依赖该测试的执行。提取 ID 或轮询前先解析命令错误;不要重试审批门,也不要轮询不存在的运行。什么都没运行时,绝不报告已处理联系人。
交付三个可点击的应用链接、最终流程、重要的 ICP 假设、已配置阶段、草稿/线上状态、已执行检查,以及精确的剩余步骤,例如发送人选择、发布或启动。未启动的 Campaign 不会阻碍线索准备。
经授权运行后,使用实际证据区分候选人数、资格判断跳过数、已验证邮箱数、已保存记录数、分群成员数、Campaign 注册数和已发送邮件数。成功执行 upsert 不能证明已注册或已送达。如果遇到阻塞,保留构件 ID,完成可独立完成的工作,并给出最小且具体的下一步。

Representative output

示例输出

Fictional example; real runs use the actual workspace and resource IDs. Nothing is enrolled or sent — all three artifacts are delivered as drafts.
虚构示例;真实运行使用实际工作区和资源 ID。不会注册或发送任何内容——所有三个构件都以草稿形式交付。

Build handoff — three connected draft artifacts

构建交付 — 三个已关联的草稿构件

Built for a VP/Head of Engineering at US Series B fintech ICP:
ArtifactStatusLink
Workflow — ICP Sequencer: VP Eng, fintechDraft, graph validated
https://app.clay.com/workspaces/12345/terracotta/tc-workflows/wf_abc123
People segment — Fintech VP Eng — campaign memberFilters
fintech_vpeng_member = true
https://app.clay.com/workspaces/12345/people/audience/seg_def456
Campaign — Fintech VP Eng outboundDraft, segment bound via
leadBaseSegmentId
https://app.clay.com/workspaces/12345/campaigns/cmp_ghi789
  • ICP and assumptions: VP/Head of Engineering; companies 51–1,000 employees (requested 50–1,000, bucket boundary disclosed); person based in the US; raised Series B. Growth signal expressed as
    employee_growth_12mo > 1.2
    .
  • Stages configured: native Find leads trigger (on demand) → company-domain enrichment where missing → find-and-verify work email → verified-email gate → Audiences upsert writing
    fintech_vpeng_member = true
    . Personalization not requested, so the email gate connects straight to writeback.
  • Enrichment: a single installed waterfall that returns only verified work emails, so no separate verification node was added.
  • Membership/filter: dedicated boolean
    fintech_vpeng_member
    ; the segment filters it to
    true
    ; write mapping and segment filter were read back and agree.
  • Status: all three are drafts. No contacts processed — nothing has run.
  • Remaining to run: select a sender account, choose run scope or a result limit, run the workflow, then launch the campaign. Each is a separate, explicitly authorized step.
为美国 Series B 金融科技公司的 VP/Head of Engineering ICP 构建:
构件状态链接
Workflow — ICP Sequencer: VP Eng, fintech草稿,图谱验证通过
https://app.clay.com/workspaces/12345/terracotta/tc-workflows/wf_abc123
People segment — Fintech VP Eng — campaign member筛选
fintech_vpeng_member = true
https://app.clay.com/workspaces/12345/people/audience/seg_def456
Campaign — Fintech VP Eng outbound草稿,通过
leadBaseSegmentId
绑定分群
https://app.clay.com/workspaces/12345/campaigns/cmp_ghi789
  • ICP 与假设:VP/Head of Engineering;公司员工数 51–1,000(用户要求 50–1,000,已披露区间边界);人员位于美国;已完成 Series B 融资。增长信号表示为
    employee_growth_12mo > 1.2
    。
  • 已配置阶段:原生 Find leads 触发器(按需)→ 缺失时进行公司域名富化 → 查找并验证工作邮箱 → 已验证邮箱判断门 → Audiences upsert,写入
    fintech_vpeng_member = true
    。未请求个性化,因此邮箱判断门直接连接到回写。
  • 富化:使用一个已安装的 waterfall,仅返回已验证的工作邮箱,因此未添加单独的验证节点。
  • 成员身份/筛选:专用布尔字段
    fintech_vpeng_member
    ;分群将其筛选为
    true
    ;已读回写入映射和分群筛选条件,两者一致。
  • 状态:三个构件均为草稿。尚未处理任何联系人——没有任何内容运行。
  • 待运行事项:选择发送账户、确定运行范围或结果上限、运行工作流,然后启动 Campaign。这些分别是需明确授权的独立步骤。

What good looks like

合格标准

Three artifacts exist as drafts with their bindings read back and confirmed, and all three links resolve. The segment's filter matches the exact marker field and value the workflow writes — creating the segment did not, by itself, populate it. Only qualified contacts with a verified work email carry the membership marker; records missing a required input or a verified email stop or route to a named review path rather than entering the segment. A small authorized end-to-end test used a real candidate from the source, with the actual trigger output, resolved email inputs, verified email, saved fields and segment membership all inspected — not graph validation or synthetic inputs alone, and not a run that "completed" by skipping every record. Candidates, qualification skips, verified emails, saved records, segment members, campaign enrollments and sent emails are reported as distinct counts from real evidence; a successful upsert is never reported as enrollment or delivery, and nothing is reported as processed when nothing ran. The campaign stays in draft unless its launch was explicitly authorized.
三个构件以草稿形式存在,其绑定已读回并确认,且全部三个链接均可访问。分群的筛选条件与工作流写入的精确标记字段和值一致——仅创建分群并不会自行填充分群。只有通过资格判断且工作邮箱验证通过的联系人才带有成员标记;缺少必需输入或已验证邮箱的记录会停止或转入明确的审查路径,而不是进入分群。使用来自数据源的真实候选人完成一次经授权的小规模端到端测试,并检查实际触发器输出、解析后的邮箱输入、已验证邮箱、已保存字段和分群成员身份——不能只依赖图谱验证或合成输入,也不能是每次都跳过所有记录的运行。必须根据真实证据,将候选人数、资格判断跳过数、已验证邮箱数、已保存记录数、分群成员数、Campaign 注册数和已发送邮件数作为不同计数报告;绝不能将成功 upsert 报告为已注册或已送达,什么都没运行时也不能报告已处理。未经明确授权启动,Campaign 始终保持草稿状态。

What this skill does not claim

此 skill 不作声明的内容

Stated defaults — two emails with a three-day follow-up — are reasonable starting points, not measured performance guarantees. A search result limit caps candidates, not verified emails or enrollments, and the final enrolled count is not promised from a search-result number. Per-person code nodes have no cross-run memory, so global or per-company caps and one-per-company rules hold only through supported source-level or persistent mechanisms, and any limit that cannot be enforced is disclosed before running rather than faked with a hidden local shortlist. A successful Audiences upsert does not prove segment membership, campaign enrollment, or email delivery — those are separate states. Graph validation and synthetic inputs do not establish the success path; only an authorized live test does. Company-size buckets may not exactly implement a requested range (51–1,000 for a requested 50–1,000), and that boundary is disclosed rather than hidden. An empty technographic or field lookup does not prove a company lacks that technology. The skill builds drafts and never enrolls or sends on its own; it is not a one-time prospect list or CSV-import tool.
所述默认值——发送两封邮件并在三天后跟进——是合理的起点,不是经过衡量的效果保证。搜索结果上限限制的是候选人数,而不是已验证邮箱数或注册数,也不承诺最终注册数会等于搜索结果数。逐人代码节点没有跨次运行记忆,因此全局或每公司上限以及每公司一人规则,只能通过受支持的数据源级或持久化机制执行,任何无法执行的限制都必须在运行前披露,而不是用隐藏的本地短名单伪造。Audiences upsert 成功不能证明分群成员身份、Campaign 注册或邮件送达——这些是彼此独立的状态。图谱验证和合成输入不能确立成功路径;只有经授权的线上测试可以。公司规模区间可能无法精确对应用户要求的范围(用户要求 50–1,000,实际为 51–1,000),应披露该边界,而不是隐藏。技术特征或字段查找为空,并不能证明公司不具备该技术。此 skill 只构建草稿,绝不自行注册或发送;它不是一次性潜在客户列表或 CSV 导入工具。