GTM Engineering
Engine review
Sep 13 2026, internal
Full-stack review and pre-mortem

The build is ahead of the funnel. Fix the throughput loop before Oct 1.

Verdict: the architecture, gates, sourcing and page system are strong enough to carry the role through December. The loop that turns a loaded lead into a reply is not running. Eight campaigns have been "live" since Sep 4 and not one lead has moved past its first touch, because every sequence's second step is a LinkedIn task nobody works. Nothing in the swarm was measuring that until tonight.

Read top to bottom: what the live numbers say, a component-by-component grade, the pre-mortem, what was built tonight, and the ordered moves for this week.

01

The numbers that decide the verdict

Live read Sep 13, from lemlist's lead export across the 39 mapped campaigns, the relay stats, the Clay balance and the engine test suites. Zero credits spent.

1,897
Engine leads loaded
16 engine campaigns, Nate's lanes
190
Leads launched
1,707 loaded but never started (DWO 803, WFM 362, Genesys 296, BO net-new 130, BO FS 79)
0
Replies, any state
No lead in a replied state anywhere; 0 meetings
215
Leads parked at a LinkedIn step
151 after a visit, 64 after email 1, waiting on a manual task
99
Open rep tasks
98 Nathan, flat for 9+ days at the 20/day LinkedIn cap
4 of 8
Sep 4 campaigns still running
Quality, Finance, HC Payer, BPO paused, cause unconfirmed
25.6%
Proof credits consumed
62,403 of ~83,836 left; receipts ledger 56 days stale
6 days
To the Day-75 tripwire
Sep 19, 0 of 15 meetings; Oct 1 council judges cost per meeting
Where the funnel actually stops

Every live sequence advances one email, then waits for Nate

Step 1 email delivered to ~147 leads. Step 2 in every campaign is a LinkedIn visit or invite task. Across all campaigns the completed count on step 2 is zero. Stars Resurrection has 42 leads at a LinkedIn step since Jul 31. The relay reported "no new events" every hour for nine days and treated that as normal.
Blind spot

Opens and clicks are switched off, so the deliverability gate can't fire

Tracking was turned off Sep 4 on Quality, the four BO lanes, Net-New and DWO. OKR O4 KR3 pauses a domain the day it crosses 40% open. That number does not exist. Bounce is the only live signal (1 on HC Payer).
What's solid

Sourcing, gates, governance and the page system are the strongest layers

Customer-exclusion gate PASS on 332 real rows, verified-claims discipline everywhere copy is generated, 0-credit Clay sourcing at scale (4,363 DWO executives, 1,763 tech-stack reads), 23 deployed pages, three leadership hits (ICP committees, back-office maps, the all-hands package).
02

Component by component

Grade reads: works does its job on real data today, partial built and running but not on the loop that matters, not yet built, not producing, dormant exists, nothing runs it.

LayerState todayGradeThe gap
TAM outbound engine60/60 tests. Sourced net-new universe since Sep 11, 34 cited triggers, labelled estimates. Powers the brain's strike list.worksUniverse is small; the weekly account-facts refresh is written but not loaded. Its output feeds strike rooms, not the live campaigns.
Signal engine (install base)14/14 tests. Still runs on the 6-row sample accounts file; signals.json is dated Jun 13. Notifier dry-run.dormantNever swapped to real usage data in 10 weeks. The account-health watcher (Sep 10) now does the risk half on real evidence. Decide: feed it or retire it into account-health.
Impact scorecardoutcomes.csv is a header row. impact.json last generated Aug 7, surfaced $41.65M labelled UNVERIFIED.not yetNo realized row has ever been written. Nothing writes it. The council will ask for this number.
Cohesion conductor + 5 dashboardsDRY_RUN. Preflight NOT READY on the 4 people-gated blockers (a 5th, a regression from the Sep 11 universe swap, fixed tonight). engine_state.json seeded since Jul; control tower says "0 sends by design" while 8 campaigns send.partialThe dashboards describe a system that was replaced by lemlist + Clay + the swarm. Attribution and baseline unratified 10 weeks. Either retire the seeded state or point the tower at the scorecard history.
Hosted brain + Slack app + pluginBrain 2.1 live on Render since Sep 11, 36/36 tests, withholds stale data. Snapshot is staged nightly but never deployed (flag off), so it goes stale every 36h. Slack app install requested, awaiting admin.partialNo seller has used it yet. Value is contingent on admin approval and the deploy flag. Keep it a Q4 surface, not a Q3 proof.
Clay sourcing + enrichmentAudiences SF-synced, 0-credit search at scale, tech-stack reads on 1,800 accounts, credit posture healthy (25.6%). Ledger 19 days behind.worksBacklog: 673 enrichment gaps, WFM L3 gate still bound to literal text (24 days), MessageGen retirement not executed in the UI.
lemlist sequences16 engine campaigns. 190 leads launched, 1,707 waiting. 0 replies. Step 2 everywhere is a manual LinkedIn task. One 30/day mailbox; second domain cleared Sep 9, warm date Sep 21 to 25.not yetThis is the layer the role is judged on and it isn't producing. Design assumption (calls and LinkedIn as the spine) needs the rep's throughput to be real, and it isn't.
Rep loop (Nate, Jack)Nate's copy reviews happen; his task queue does not move. Jack builds his own campaigns by hand; the pre-send hook catches guessed addresses.partialNo throughput agreement exists. The Daily Action Brief that would put tasks in front of Nate is live=false since Aug 17.
Swarm: 26 launchd jobs, 24 Claude-callingHeartbeat, rundown (8 of 9 weekday fires in Sep), war room, meeting capture, hygiene, weekly watches all landing. Hourly relay is a 15 to 23 minute Claude session with 23 failures in two weeks, nearly always to report nothing.partialCost and fragility sit in the relay. Registry drifted (two jobs undocumented 12 days, fixed tonight). Fix sheets sit unrun 3+ weeks while new lanes get built.
Agent architect + proposal ledgerDaily proposals since Jul 19. 60+ named proposals; the same one re-proposed up to 20 times; adoption near zero.dormantA write-only loop. It needs an approve/deny step in the rundown thread (the signal-review pattern already exists) or a weekly cadence.
Measurement: receipts, council row, SalesforceReceipts ledger last touched Jul 19. No reply-to-ledger path existed. Lead Source value is Sierra's ticket (Sep 12 date passed). Council feed 0 rows.not yetCost per meeting, the number the row is judged on, was uncomputable. The scorecard built tonight closes the lemlist half; Salesforce is still the gap.
Skills (24) + copy doctrineFirst-draft engine, sharpener, verified metrics, strike sequence, war room, readout, premortem, motion-stamp. Doctrine Sep 3 + gold examples. Naveen's read on the BO preview: "not going to get replies".worksThe doctrine is ahead of what's loaded: Version C copy waits on Nate's read; MessageGen still holds pre-doctrine prompts.
Gates and governanceExclusion union check on real rows, verified-claims gate, dry-run defaults, single morning brief, causal-chain logs, two-machine sync.worksWFM L3 lookup inert (no active leak, other clauses hold). Stars Contacts' documented gate columns are gone from the live schema; the real gate location is unconfirmed.
Pages and leadership artifacts23 deployed pages; ICP committees, back-office maps (Inger 12, Nate 6, JW 4, Alex 2), save rooms, operating map, all-hands package, partner pilot, UPT brief.worksThe credibility bank. It is what leadership sees. It is not what the council counts.
Adjacent lanesProduct AI Champion (3 goals closed), Side Quest telemetry (sample data), partner pilot, churn-risk save plan (staged watcher + digest, merge-gated).partialEach is real and each takes hours. None counts toward the 15.
03

Pre-mortem: it is Dec 31 and the row failed. Why.

Timeframe Sep 13 to Dec 31 2026. Written as if it already happened. Ranked by probability.

Failure 1, most likelyThe engine produced volume the rep never worked, and the council judged the row on meetings

On Sep 4 Dallas made calls and LinkedIn the spine of every net-new sequence and launched eight campaigns on Nate's mailbox. Every one of them put a manual LinkedIn task at step 2. Nate, whose July number came from 10,000 dials and six meetings, treated the lemlist task queue as a side list and it sat at 99 open tasks from Sep 4 through the all-hands. The hourly relay, built to shout when a reply landed, said "no new events" 24 times a day and nobody read silence as a stall. The Daily Action Brief that would have put the tasks in Nate's channel every morning stayed at live=false since the Aug 17 plan gate. By Oct 1 the council row read 147 emails, 0 replies, cost per meeting undefined. John Norton compared it with Cold's $3,402 and drew the obvious conclusion. Naveen's 15-meetings line went to zero on the channel that carried his name for it. The 1,707 leads loaded and never launched (DWO, WFM Present, Genesys, Net-New) were the strongest lists the company had and they never left draft, because the mailbox they were waiting for came online Sep 25 and the review they were waiting for never got scheduled.

Failure 2Measurement never closed, so even the wins were invisible

The pre-start plan named attribution ratification as the Week 1 move. It was still unratified at week 12. Sierra's Lead Source ticket missed its Sep 12 date and slid behind the Pardot migration; no Salesforce write path ever existed, so every lead the engine sourced landed in Cold or Digital when a rep touched it. The receipts ledger stayed at its Jul 19 entry because only Dallas could write it and Dallas was building. When Jack booked two UK meetings, they were Jack's. When a BO Insurance reply finally came in October, it was a Slack draft in Nate's channel and a line in an hourly log, and it reached the Friday readout as "one candidate, unconfirmed". The Friday readout said "$0 realized" twelve weeks in a row, honest every time and corrosive by November. Leadership did not decide the engine failed; it decided it could not tell, which for a proof budget is the same verdict.

Failure 3The swarm consumed its operator instead of freeing him

By mid-September there were 26 scheduled jobs, 24 of them Claude sessions, an hourly relay that failed 23 times in two weeks, an architect writing three proposals a day into a ledger nobody adopted from, a registry that drifted, and a worktree 141 commits ahead of main. The fixes that mattered were two-minute UI clicks (the WFM L3 rebind, the deliverability re-point, the ledger backfill) and they sat unrun for three weeks while new lanes shipped: save rooms, partner maps, PM kits, all-hands cuts. Each was real and each was asked for. The pattern was build over operate, and the rundown reported the same three blockers every morning with no escalation. In November somebody asked what GTM Engineering had produced and the honest answer was 23 pages and a stalled queue. That answer implicated Dallas's own choices, not the team's.

04

Red team: why the current defenses don't hold

Against failure 1, the unworked queue

Defense now
Relay alerts to rep channels, Nate's copy reviews, the all-hands momentum, lemlist's own task list.
Why it fails
Every defense reports events, and a stall produces none. The brief that would push tasks is off. No throughput agreement exists with Nate, and at the 20/day LinkedIn cap 99 tasks take a week even if he starts Monday. The design (calls and LinkedIn as spine) is right for replies and wrong for a rep who isn't in lemlist daily.
The tell
Open rep tasks not falling three days running. It has already fired: 99 since Sep 4. The scorecard built tonight turns that into a STALLED line the rundown leads with.

Against failure 2, invisible outcomes

Defense now
Council feed script, 11 stamp-plan CSVs, the OKR KR1 date, the hand-kept receipts ledger, the Friday readout's realized column.
Why it fails
All of it is downstream of a Salesforce value that lives in someone else's queue, and the only ledger that counts is written by hand by the busiest person in the loop. The relay detects a reply and stops at a Slack draft.
The tell
Sep 12 passed without the picklist value. Receipts ledger older than 30 days (it is 56). Tonight's receipts-candidates file makes the lemlist half automatic; the Salesforce half is still a ticket.

Against failure 3, build over operate

Defense now
Single morning brief, the heartbeat, the proposal ledger, the causal-chain logs.
Why it fails
The rundown surfaces the same blocker daily and nothing escalates it into a calendar slot. The ledger has no adopt or decline step, so it grows instead of converging. Every new lane adds a job and a log the rundown must read.
The tell
The same blocker in three consecutive rundowns (WFM L3: 22). Proposals minted versus adopted (60+ versus roughly 0).
05

Verdict

Outside your control

Nate's daily task throughput and the reps' reply handling. You cannot make a rep live in lemlist. You can only design sequences whose first two or three touches need no manual step, keep the receipts ledger on the engine side, and report task debt as a number every morning so the conversation is about a count, not a feeling.

If you do nothing else this week

Monday, with Nate, one decision: either he works the LinkedIn tasks daily at the cap, or you skip the LinkedIn steps for everyone on the eight live campaigns so the email steps flow. Then restart the four paused campaigns. Check Wednesday's scorecard: open tasks under 20 and at least one campaign with leads past step 2. That is the only move that changes the Oct 1 number.

Confidence

Moderate. The build is not the risk; the pieces exist and the gates hold. It tips on one factor: whether engine-sourced sequences produce measured replies before the Oct 1 council. If the queue moves this week and the second mailbox lands Sep 25 with the 1,707 waiting leads behind it, the row has a number by council. If not, December looks like September with more pages.

06

Built tonight

Everything below is deterministic, read-only on lemlist, zero credits, and logs only. Nothing sends, nobody was messaged, no gate changed.

New, live in the hourly relay

Campaign scorecard

automation/campaign_scorecard.py, 13/13 offline tests. Reads lemlist's lead export, open tasks and the relay snapshot for all 39 mapped campaigns. Writes the per-campaign funnel log, a daily history CSV (the first real trend series), and the Pipeline Council CSV for OKR O1 KR2. Chained after the pulse inside the relay wrapper, so it runs every hour before the Claude call, and on demand with run_campaign_scorecard.sh.
New

STALLED watch

A running campaign with leads in flight, open rep tasks, and no lead movement for three days gets a STALLED line with an event id. History was seeded from the pulse logs, so the first read already says: Stars Resurrection 44 days, BO Insurance 11 days, Achmea (Jack) 16 days. The rundown skill now leads with the longest one.
New

Receipts candidates

When any campaign's replied, interested or meetings count rises day over day, a row lands in logs/receipts_candidates.csv with an event id. The ledger and outcomes.csv stay your hand; nothing can vanish between an hourly run and your next ledger pass.
Fixed

Preflight regression

The conductor's TAM contract check broke on the Sep 11 universe swap (build_plays now returns a pair). Patched in the worktree; preflight is back to the four expected people-gated blockers.
Fixed

Registry and rundown drift

heatlist and cohortcutter registered after 12 days undocumented; the scorecard is source 18 in the rundown skill; the two copies of that skill (home and coordinator) had diverged and are now one union.
Council row

GTM_Engineering_Scorecard_2026-09.csv

In motions/pipeline_council. Campaign, motion, rep, loaded, launched, replies, meetings, bounces, open rep tasks, credits (from a config map when you fill it), cost per meeting, Source = GTM Engineering, Opportunities blank until Salesforce. This is the row for Oct 1.
07

The next layers, in the order they pay back

Each one is grounded in a gap above, not a wish list. Agent-buildable items carry a paste-back prompt in the chat that delivered this page.

Task-debt relief: sequences that don't wait on a human for the first three touches P0, design + one UI pass

Rebuild the step order on the eight live campaigns and the five waiting ones: email 1, email 2 at +3, call task, then LinkedIn. Manual steps come after the sequence has already earned a reply chance. lemlist's skip-step-for-everyone exists for the live ones. This is the change that makes "running" mean something.

Send-capacity model in the scorecard P0, agent-buildable, small

1,707 waiting leads on a 30/day mailbox is 57 days for one touch. Add days-to-drain per mailbox and per campaign to the scorecard so the second-domain decision and wave sizing are a number in the rundown, not a memory note.

Receipts ledger drafter P0, agent-buildable

Weekly script that turns the scorecard history plus receipts candidates plus the credit ledger into a proposed ledger block you confirm in the rundown thread (APPROVE, like signal review). The ledger stops being 56 days stale without becoming automatic.

Relay on a deterministic gate P1, agent-buildable, behind a flag

The hourly Claude relay session runs 15 to 23 minutes to say "no new events" and fails a quarter of the time. The scorecard now knows, in seconds, whether anything moved. Run the Claude step only when the deterministic diff finds a reply, bounce, accept or task change. Saves roughly eight hours of Claude runtime a day and removes the chronic failure. Ship behind a flag, default off, one week of side-by-side logs.

Deliverability watch re-pointed at lemlist P1, agent-buildable

The Clay mirror is 56 days stale and not scrapable. lemlist exposes mailbox, DNS and warm status through the connector. Re-point the weekly watch there, add bounce rate per mailbox from the scorecard, and put open tracking back on one campaign as the canary so the 40% gate has a number.

Proposal ledger gets an adopt or decline step P1, small

Move the architect to weekly, cap it at two proposals, and let the rundown thread listener take ADOPT or DROP on each, the way it takes APPROVE and DENY on signals. Sixty open proposals become a short list.

Control tower on real state P2

Point the tower's funnel and motion rows at the scorecard history and the lemlist state instead of the seeded engine_state.json, or retire the five cohesion dashboards to the archive and let the operating map be the tower.

Signal engine: feed it or fold it P2, decision

Ten weeks on sample data. Either the install-base usage export arrives and it earns its slot, or its six signals move into account-health-watch, which already reads real evidence weekly.

Memory index over budget P2, housekeeping

MEMORY.md is 50KB against a 24KB load budget; half the index is cut from every session. Trim entries to one line under 200 characters and move detail into the topic files.

08

Your moves this week, in dependency order

Hold: nothing to click before Monday's conversation

The scorecard runs on its own from the next relay tick. Monday's rundown will lead with the three STALLED lines. Read it before you talk to Nate so the count is on the table.

Monday: the one decision with Nate

Daily LinkedIn task quota, or skip the LinkedIn steps for everyone on the eight live campaigns. Take the per-campaign open-task counts from the scorecard. No copy edits, no new loads until this is settled.

Then restart the four paused campaigns and confirm why they paused

Quality, Finance, HC Payer, BPO. Restart only after step 2, so the restart doesn't pour more leads into a queue that isn't moving.

Merge the worktree into main

141 commits, the conductor fix, account-health, owner-digest and polar-intake are all behind this. The scorecard lives in main already and does not conflict. Paste-back prompt in the chat.

Second mailbox on the calendar, waiting leads sized against it

Warm date Sep 21 to 25. The capacity line (next layer 2) gives the wave size. DWO's 803 go first: they are the C-suite list John asked for.

Chase Sierra's Lead Source ticket, once, in writing

Sep 12 passed. Until it ships, the council CSV is the row and Opportunities stays blank with a one-line reason.

Wednesday: read the scorecard again

Open tasks under 20 and one campaign with leads past step 2 means the loop is running. If not, the answer for Oct 1 is the design change in next layer 1, not more volume.

Oct 1 council: ship the CSV as the row

motions/pipeline_council/GTM_Engineering_Scorecard_2026-09.csv, plus the receipts candidates you confirmed. Estimates and realized stay separate.

Sources: lemlist lead export and open tasks (Sep 13 21:05), lemlist campaign stats via the connector, automation logs Sep 7 to 13 (rundown, swarm-health, pipeline-receipts, credit-check, deliverability-watch, war room, agent-architect, relay), engine test suites and conductor preflight run tonight, memory files through Sep 13. All figures are internal reads; nothing here is prospect-facing or verified-claims material.