Clay GTM Engine · How It Works · For Nate & Sierra

One funnel, wired in Clay, that ends in a ready-set-go contact list.

This is the engine that feeds your outreach. It starts as a wide TAM funnel and narrows through a stack of tables that each filter harder than the last, so the list that reaches you isn't a guess. It's the people who own the motion, each behind a validation check and a human approval gate before anything sends.

6 tables live in the GTM Engine workbook 32 parent accounts scored 137 buying-committee contacts · ~106 validated emails ~204 of the 5,000-credit allocation used Nothing sent · everything on HOLD
Overview · Nate & Sierra
00 · How to think about it

The whole thing is one funnel that filters itself

Before the individual tables, here's the shape. Clay's power isn't any single table. It's that each table takes the output of the one before it and narrows it, eight hops deep, until what's left is only the contacts that survived every filter. A person doesn't hand-build a list. The engine surfaces it and keeps it current.

01 · Where it stands today

What's actually standing, stated plainly

This is a head start, not a finished product. The core of the engine is built and validated on the Star Ratings new-logo motion. The outer layers are designed and next to stand up. Nothing has touched a prospect.

6
tables live in the GTM Engine workbook
32
Tier A+B parent accounts scored and graded
137
buying-committee contacts, ~106 with a validated email
~204
of the 5,000-credit allocation used to get here
Everything sits behind the HOLD gate. Every send-ready row is unchecked. Nothing goes out until a human approves it and until we've ratified scoring, ICP, and what "engine-sourced" means together.
02 · The layer map

Sources to worklist, eight hops down

Each rung is a Clay table. Each arrow is a real column, a write or a lookup, that carries rows into the next table only if they pass that table's filter. The funnel narrows on purpose.

L0
SourcesCMS Stars file · install base · signal feeds→ writes qualifying rows to Accounts
L1
Accounts (Master)scored · enriched · graded→ pushes accounts above the grade line to Contacts
L2
SignalsStars + back-office intent triggers→ writes intent + top signal back to Accounts
L3
Contacts (Buying Committee)right personas · verified email→ feeds Message Gen + Send Queue
L4
Message Gen + reference tablespersonalized copy, on approved claims only→ writes drafts to Send Queue
L5
Send Queuecritic gate + human approval→ approved rows only pass
L6
Outreach Sync + Deliverabilityhands off to sequencer + Salesforce→ blocked unless inbox health is green
L7
Reply + Attributionreplies and meetings written back→ lights up the funnel dashboard
L8
AE Worklistwho to work today, per repthe human-facing end of the engine
03 · Table by table

Why each table exists and what it hands off

Click any layer to open its detail: the purpose, what feeds it, what it writes to, and the columns that do the work.

LIVEBuilt, validated, running on the Star Ratings motion today.
STAGEDDesigned and specced, held behind a go-live gate on purpose. The gate is named on each card. This is measurement before volume, not unfinished work.
Why not all live already: the staged layers can't be flipped before the team aligns. Salesforce attribution fields depend on the integration ticket we'll scope together. The sender stays off until deliverability is warm, weeks of runway. Reply and attribution can't produce data until sends flow. Signal monitoring waits on the credit plan, contacts before monitoring spend. And the scoring weights and back-office ICP are being ratified with Naveen and Scott. Turning any of it on before that would invert the engine's own rule.
L0
Sources · CMS Import · Install-Base Import
The raw material · kept separate from the live list
CMS LIVE · 307 rows

Source tables land the raw universe so a re-import never clobbers enrichment downstream. The CMS table is live: the public 2026 Star Ratings universe, filtered to the plans that are actually in window, below 4.0 stars. The customer-exclusion wire is next, pending the flagged customer file from Naveen, so the same filter can also drop anyone who's already ours. The Install-Base import is designed, not built; it waits on Salesforce access and will seed the back-office motion. Only rows that pass the window filter get written up into Accounts.

Feeds from: CMS public file · Salesforce accounts (next)Writes to: Accounts (only if in-window)
key columns → contract_id · company_name · qbp_avg_stars · in_window filter · customer_exclude (next)
L1
Accounts (Master) · the Golden List
Scored, enriched, graded, signal-aware
LIVE · 32 parents

This is the hub. Every account gets a fit score, an intent score, and a letter grade from those two. Grade is the gate: only accounts above the grade line push down into Contacts, and where that line sits is a dial the team sets, not something hardcoded in. This is where "who's worth our breath" gets decided.

Feeds from: L0 sources + write-back from SignalsWrites to: Contacts (only above the grade line)
key columns → fit_score · intent_score · grade · top_signal · qbp_avg_stars · vertical · last_refreshed
L2
Signals · Stars & Back Office
Intent monitoring that writes back into Accounts · gated on the credit plan
DESIGNED · next to stand up

This is what keeps the list alive instead of a dead snapshot. Each signal is one column that fires a point value when a trigger hits: Stars language in an SEC filing, an earnings-call mention, a new quality leader, a claims backlog. Those points flow back into the Accounts intent score and can lift an account's grade or, for the strongest triggers, fire it straight toward outreach. It's also what removes accounts that fixed their own Stars and don't need us anymore.

Feeds from: Accounts list + live web/API columnsWrites to: Accounts (intent_score, top_signal)
key columns → one point-valued column per signal · signal_fired_date · tier (1 fires / 2 raises priority)
L3
Contacts (Buying Committee)
People, linked to accounts, carrying the attribution tags
LIVE · 137 rows · validated

This is the payoff table and the one that's most complete. Accounts push in, then a people-find pulls the right personas by title, a persona-key formula classifies each into the buying committee, and an email waterfall finds an address that ZeroBounce then validates. Anything without a valid mailbox can't pass the send gate. Three tags get stamped at creation and never change: engine-sourced, source motion, and sourced date. Those three are how the engine's contribution gets proven later. Honest state: all 137 rows have been through ZeroBounce on the canonical email field; around 106 carry a deliverable email, and the invalid or email-less rows stay visible but gated.

Feeds from: Accounts (graded push)Writes to: Message Gen + Send Queue (valid email only)
key columns → persona_key · email + email_status · gtm_engine_sourced · source_motion · sourced_date · reply_status
L4
Message Gen + reference tables
Personalized copy that can only cite approved claims
REFERENCE LIVE · gen next

Message Gen writes a personalized variant per contact from the account's why-now and the right product angle. It's fenced by small reference tables: a Verified Metrics library so the copy can only use approved numbers, a Product-Angle map that routes a title to Queue Optimizer or Back Office Optimizer, and the locked ICP rubric. Those three are built; a fourth, the variant library for testing, comes with the generation column. That column is the next to wire, and the deeper personalization runs through Claude, not templates in Clay.

Feeds from: Contacts + account why-now + angleReads: Verified Metrics · Product-Angle · ICP · Variants (next)Writes to: Send Queue
key columns → variant copy per persona · variant_id · tone/persona rubric · claims pulled by lookup
L5
Send Queue · the gate
Critic checks + human approval · the single egress
LIVE · all rows HOLD

Nothing sends from Clay directly. Every row that reaches here runs a critic check first. Today the critic checks email validity; the scope, claims, and length checks land with Message Gen. Then it waits on a human checkbox. That gate is built and every single row is held. This is the "human before send" rule made physical.

Feeds from: Contacts + Message GenWrites to: Outreach Sync (approved only)
key columns → critic_email_valid · critic_status · human_approved · send_ready (HOLD until checked)
L6
Outreach Sync + Deliverability
Hand-off to the sequencer and Salesforce · gated on inbox health
DESIGNED · sender OFF

On approval, this hands the verified email and approved copy to the sequencer and writes the source tags onto the Salesforce record. A parallel deliverability monitor watches warmup, inbox rotation, and bounce rate, and it gates the whole thing: the sender stays off until inbox health is green. This is the layer that stops spray-and-burn.

Feeds from: Send Queue (approved)Writes to: sequencer + Salesforce tags
key columns → webhook to sequencer · SF write (engine_sourced, motion, date) · domain-health gate
L7
Reply + Attribution
Closes the loop · the shared scoreboard · gated on sends flowing
DESIGNED

A reverse webhook writes reply and meeting status back onto the contact row, and the attribution table reads those tags to compute the two-motion funnel: enriched, sent, opened, replied, qualified, met. Because the source tags were stamped at creation, we can see what the engine surfaced without arguing about it after the fact. It's a shared scoreboard the team defines together, not a credit claim.

Feeds from: sequencer / CRM reply dataWrites to: Contacts.reply_status + dashboards
key columns → reply_status (none/reply/qualified/meeting) · funnel counts · engine-sourced credit line
L8
AE Worklist
The human-facing end · who to work today · gated on live signals + territory rules
DESIGNED

The last table turns everything above it into a daily view per rep: the A and B accounts with a fresh signal, their committee, the why-now line, and the suggested product angle, filtered to that rep's territory. This is what a seller opens each morning. It's the point of the whole engine, a human working a short, sharp list instead of researching from scratch.

Feeds from: Contacts + Accounts + territory rulesWrites to: the rep's daily view
key columns → account + committee · why_now · product_angle · owner/territory filter
04 · How they connect

Three column types do all the connective work

When we say a table "feeds" another, this is the actual mechanism. There's no magic, just three kinds of columns chained together, hop after hop, and that chaining is where the depth comes from.

SEND TABLE DATA

The forward flow

Sends rows from one table into the next, filtered first so only the right rows go, only Grade A accounts, only valid-email contacts. This is the arrow that narrows the funnel at each hop.

LOOKUP

The write-back & reference

Reads a value from another table by a join key. It's how a signal writes intent back onto an account, and how Message Gen pulls only an approved stat from the Verified Metrics table.

CONDITIONAL RUN

The credit brake

Gates every enrichment: only-run-if-empty, only-if-in-window, only-if-in-ICP. This is what makes it cheap enough to run continuously instead of burning the budget in a week.

05 · Clay vs Claude

What runs in Clay, what runs in Claude

The cleanest way to hold the whole system in your head: Clay handles facts, Claude handles words and judgment. Clay never writes a sentence a prospect reads. Claude never touches a row of data directly. Everything they exchange passes through the table, where it stays visible and gated.

Clay · the data layer

Finds, scores, and moves rows

Deterministic, per-row work. It runs the same way every time, costs credits when it enriches, and its output is always a value in a column you can audit.

  • Sourcing people and accounts: the CMS universe, persona pulls, the email waterfall, ZeroBounce validation.
  • Scoring and grading: fit, intent, tier. Formulas with dials the team sets, not judgment made up per row.
  • The gates: send_ready, human_approved, bdr_claimed, run conditions. Nothing moves unless a rule passes.
  • Plumbing: syncing approved rows to the sequencer and, once the ticket lands, writing source tags to Salesforce.
Claude · the language layer

Reads context, writes copy, weighs calls

Judgment work, packaged as skills you run yourselves. They're tools in your hands, not requests you file with Dallas. Each one takes the row Clay assembled, the who, the title, the why-now, the product angle, and turns it into something a person would actually send, fenced by the Value Repository so only approved claims appear.

  • The outreach copy itself: first touches, follow-ups, breakups, drafted per contact in the sending rep's voice.
  • Replies and objections: when a prospect pushes back, the response is reasoned, not templated.
  • Briefs and prep: account strike plans, call prep, the one-pagers like the messaging brief you both have.
  • The claims gate: every number in copy is checked against the verified-claims file before it ships.
The rule of thumb: if the question is "what is true about this person or account," it's Clay, look at the table. If the question is "what should we say or do about it," it's Claude, and the answer lands back in the table as a draft behind the send gate. So: find a VP's email, Clay. Draft her first-touch email, Claude. Decide an account's grade, Clay formula. Handle her "we already have Verint" reply, Claude. Log that she replied, Clay and Salesforce. The handoff always happens in the Contacts row, which is why nothing either side does is invisible or unauditable.
06 · Credits + Salesforce

Credits under control, Salesforce in the loop

Two things worth making concrete: the spend guardrails, and why connecting to Salesforce closes the gap between the outreach work and what leadership sees.

Credit guardrails

It warns before it spends

~204

credits used of the 5,000-credit allocation to build and validate the whole Stars list.

  • Every enrichment is set to run only on empty rows, so nothing double-spends.
  • Conditional runs stop it enriching anything out of window or out of ICP.
  • It flags the estimate before a run, "this will cost 300 to 400 credits, yes or no," and warns before it nears the cap.
  • An append-only ledger tracks every spend by motion, so renewal is a receipts story.
Salesforce integration

Why everything should talk

The point of wiring Clay to Salesforce is that once a contact is surfaced, it becomes an account and contact in Salesforce automatically, with source tags attached. No one re-creates it. No gap between the outreach work and what execs can see.

  • Three attribution fields on the record: engine-sourced, source motion, sourced date.
  • They're stamped at creation and written to Salesforce on approval.
  • First build step is confirming those fields exist in Salesforce, that's the scoping ticket to nail down with the team.
  • Keeps the shared scoreboard honest without anyone doing manual data entry.
07 · Before we meet

What this means for each of you

The engine's job is to hand you a clean, current list and get out of your way. Here's what each of you touches, and the two things we'll lock in when we meet.

N
Nate, you own the send
The engine surfaces the committee, and the drafting is a tool in your hands: you run the skill, it writes from the row and the approved claims, you edit and own every word that goes out. Nothing sends on its own and nothing waits on Dallas. Approved contacts land in the sequencer, you review each one, and it sends from your own email. The research and list-building are done for you. The judgment on who and when stays yours. Three things stand between here and a first send, and they're yours to shape: the mailbox OAuth plus warmup runway before the sender goes live, a purge of 10 draft leads that synced into the campaign before the gate existed, and the bdr_claimed checkbox, which lets you claim any contact so the engine never syncs or sequences someone you're already working.
S
Sierra, the Salesforce loop
The piece to scope together: three attribution fields on the record, engine-sourced, source motion, and sourced date, so a surfaced contact becomes a Salesforce account and contact automatically with no re-keying. Confirming those fields exist is the first line of the integration ticket.
Both, what's live versus next
The Stars list is live today, around 106 contacts with validated emails and the rest visibly gated, and everything stays on HOLD until we align. The messaging brief keeps the copy pointed at the real why-now instead of template spam. When we meet, we walk the list, agree on the review-and-send flow, and shape the Salesforce ticket.