Scan lead sources and buying signals
Research, classify, and choose the angle
Deduplicate, enrich, and route through CRM
Build the personalized campaign
Render the landing page, ads, and video
Queue, send, and route the follow-up
Context & problem
Outbound usually breaks at the handoffs. One person builds the list, another checks the CRM, someone researches the company, and then copy and creative still have to be produced before sales can send anything. The work is expensive enough that teams either personalize a handful of accounts or automate generic messages nobody wants to read.
The sales team needed the opposite: a repeatable daily motion that could preserve account-level relevance without turning every prospect into a small manual project. A new product launch, hiring signal, growth move, or roadmap change had to shape the angle, and the system had to know what already existed in the CRM before creating anything new.
I built the resulting GTM engine as one directed nine-step workflow. It combines deterministic data and CRM operations with tightly scoped AI judgement and content generation. The output is not a score in a table. It is the complete campaign a salesperson needs to make the account feel researched: landing page, VSL and rendered video, ads, email, context, and next action.
How it works
The diagram above shows the flow; here is what each step does. Deterministic stays deterministic, and an agent only shows up where judgement, language, or synthesis is actually needed.
- 01Deterministic
Scan lead sources and buying signals
A scheduled daily run scans Apollo and the configured lead sources using the active ICP configuration — industry, headcount, seniority, growth and hiring signals — then enriches each account with recent news, launches, and product context from defined sources. The normalized input contract also accepts Clay tables when a team already uses Clay for enrichment.
- 02Agent
Research, classify, and choose the angle
Claude turns the company evidence into a concise account brief, assigns the right internal persona, scores the fit from 0–100, cites its top reasons, and recommends the outreach angle. The model handles judgement; the rubric and structured output stay fixed and versioned.
- 03Deterministic
Deduplicate, enrich, and route through CRM
Company and contact checks branch against the live CRM before anything is created. Missing decision-makers are enriched and written back with the score, persona, evidence, and campaign fields; existing records are updated rather than duplicated.
- 04Agent
Build the personalized campaign
For every qualified account, the engine writes the custom landing-page narrative, a branded visual mockup or short video preview, the VSL and video script, the ad concepts, and the outbound email around the same researched buying signal. Every asset shares one account-specific angle instead of looking like disconnected templates.
- 05Deterministic
Render the landing page, ads, and video
The approved structures are assembled into a per-company landing page with an embedded VSL. The personalized visual mockup, branded ad variants, and video preview are rendered from controlled templates with the generated copy, clips, and overlays substituted into known-safe positions.
- 06Deterministic
Queue, send, and route the follow-up
Asset URLs, classification, score, persona, and next action are written back to the source record and the CRM. A Slack digest gives sales one review queue containing every asset and the outbound email draft. After approval, replies are classified by intent and routed into the matching CRM follow-up cadence.
Checkpoints & logging
The system stops at a review queue before anything sends under the company's name. Sales can inspect the research, the chosen angle, every generated asset, and the email before approving the next action. Automation removes production work; it does not silently assume brand authority.
Every classification and branch is logged in Postgres alongside its source evidence. The team can see why an account scored highly, whether a company or contact already existed, which prompt version generated the campaign, and which URLs were written back. That makes prompt iteration measurable instead of anecdotal.
Missing data fails closed. If research is too thin, CRM state is ambiguous, or a render does not complete, the account is held back and the failure is visible in the run log rather than leaking an incomplete campaign into the sales queue.
Stack, and why
n8n orchestrates the nine-step production flow because every input, branch, and output needs to stay inspectable. Apollo handles account discovery in the live setup; the same normalized contract can accept Clay enrichment tables. The CRM remains the source of truth, while Postgres keeps the raw evidence and audit trail. Claude and OpenAI are limited to the places that require judgement or fresh language — research synthesis, classification, campaign narrative, visual mockups, VSL, ads, email, and reply intent — while scheduling, deduplication, routing, rendering, and follow-up delivery remain deterministic.
Results
Running live · metrics published here as run data accumulates, not quoted before they can be verified.
The engine runs daily for a live sales motion. Instead of handing sales a cold list, it hands over qualified accounts with the context and custom assets needed to act: landing page, visual mockup, VSL and video, rendered ads, email draft, CRM state, and a clear next step.
The strongest result is structural and verifiable: account research, qualification, CRM hygiene, content production, and sales handoff now run as one auditable system. The confidential lead data stays private, so public proof uses anonymized outputs rather than invented pipeline or revenue claims.
Want your GTM motion to produce campaigns, not lists?
If research, CRM work, personalization, and creative production still happen in separate tabs, the audit maps the handoffs and shows which part should become a system first.