Agent #006 · Outbound

Email Personalization Agent

🟡 Growth

Drafts persona-aware outbound emails from prospect context, account signals, and approved proof points — never auto-sends

Build time
0.5-1 day
Primary user
SDR
Primary outcome
Review-ready personalized email copy
Deployable pack
Yes: full pack

Adam's take

AI email tools promise magic and deliver spam. This one drafts, a human sends. Keep it that way until your quality scores earn something more.
Adam Woozeer, founder

Required tools

HubSpotClayn8nLLM API

Optional tools

OutreachSalesloft

Expected value

Cuts drafting time per personalized email from ~15 min to ~2 min review

Deployable workflow pack

The full pack includes the agent spec, deployment guide, architecture diagrams, n8n workflow skeleton, Clay template, HubSpot properties, JSON schemas, OpenAPI spec, cost and ROI calculators, demo data, QA checklist, and governance notes.

View pack on GitHub
Full deployment guide →Governance & failure modes →QA checklist →

How to deploy this agent

"Personalized" outbound usually means a first-name merge tag. Real personalization — buying role, account signal, the right proof point for that persona — takes a rep ten-plus minutes per email, which is why it only happens for the first twenty accounts on any list. This agent drafts that level of personalization at scale. It does not send anything.

Core signals

Angle selection: Buying role (from the Buying Committee Mapper) maps to a messaging angle in config — an Economic Buyer gets an ROI angle, a Technical Buyer gets an integration angle, and so on.
Proof-point selection: Only approved, versioned proof points from the sanctioned library are eligible — matched to persona and industry, never generated fresh.
Quality score: Measures specificity — whether a draft actually uses real account signal and a relevant proof point, or reads as generic filler with a name merged in.
Compliance check: Every draft is scanned against a banned-claims list before it’s ever surfaced to a human — fabricated stats, competitor disparagement, and unapproved guarantees are caught here, not after the fact.

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://deploytheagent.com/schemas/agent-006-input.schema.json",
  "title": "Agent #006 Email Personalization Agent Input",
  "type": "object",
  "required": [
    "record_id"
  ],
  "properties": {
    "record_id": {
      "type": "string",
      "description": "CRM record ID (company/contact/deal depending on agent)."
    },
    "domain": {
      "type": "string"
    },
    "config_version": {
      "type": "string",
      "description": "Versioned config used for this run."
    }
  },
  "additionalProperties": true
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://deploytheagent.com/schemas/agent-006-output.schema.json",
  "title": "Agent #006 Email Personalization Agent Output",
  "type": "object",
  "required": [
    "record_id",
    "personalization_quality_score",
    "email_compliance_status",
    "email_draft_status"
  ],
  "properties": {
    "record_id": {
      "type": "string"
    },
    "personalization_quality_score": {
      "type": "string",
      "description": "Agent #006 output field."
    },
    "email_compliance_status": {
      "type": "string",
      "description": "Agent #006 output field."
    },
    "email_draft_status": {
      "type": "string",
      "description": "Agent #006 output field."
    }
  },
  "additionalProperties": false
}

Scoring / classification logic

A draft has to pass both the quality threshold and the compliance check before it enters the human review queue at all. Drafts that fail either check route back for regeneration or manual flagging — they never reach a rep’s inbox as a ready-to-send option.

HubSpot CRM properties

personalization_quality_score company
Written by Agent #006 (Email Personalization Agent).
email_compliance_status company
Written by Agent #006 (Email Personalization Agent).
email_draft_status company
Written by Agent #006 (Email Personalization Agent).

n8n workflow skeleton

The Email Personalization Agent drafts persona-aware outbound emails using prospect context, buying role, account signals, and approved proof points, then scores each draft for quality and compliance before a human ever sees it. It does not send anything. Configure every node marked CONFIGURE before enabling the trigger.

  1. Trigger
    CONFIGURE: set cadence per agent-spec.md's What It Does section. Leave disabled until Step 6 of deployment-guide.md.
  2. Load versioned config
    CONFIGURE: replace with your versioned config built from real data (see deployment-guide.md Step 1).
  3. Fetch source data
    CONFIGURE: {{HUBSPOT_CREDENTIAL}}. Pull the fields listed in agent-spec.md's Inputs table.
  4. Validate + gate records
    Drops records missing required inputs or failing suppression/gate checks defined in agent-spec.md. Logs every drop.
  5. Apply workflow logic
    Implements the Workflow Logic table from agent-spec.md. Writes model/config version alongside every derived value for auditability.
  6. Write agent-owned CRM fields
    CONFIGURE: {{HUBSPOT_CREDENTIAL}}. Writes only: personalization_quality_score, email_compliance_status, email_draft_status. Never writes sales-owned fields.
  7. Route to human review / alert
    CONFIGURE: {{SLACK_CHANNEL}}. Fires for records requiring human review per agent-spec.md's Governance section.

Cost calculator

Cost Calculator — Agent #006: Email Personalization Agent

Fill in your own volumes and rates — do not use these as benchmark numbers.

Cost driverYour volumeUnit costMonthly cost
n8n execution (workflow runs)___ runs/month$___ / run$___
Enrichment/sourcing credits (if applicable)___ records/month$___ / record$___
LLM API calls (if applicable)___ calls/month$___ / call$___
Human review time___ hrs/month$___ / hr (loaded)$___
Total$___

Build cost (one-time)

Estimated build time: 0.5–1 day. Multiply by your builder's loaded hourly rate for a one-time build-cost estimate.

Notes

Costs scale with the volume of records this agent processes, not with the size of your whole CRM — scope your volume estimate to the specific object/list this agent actually touches (see `agent-spec.md`'s Inputs table).

ROI calculator

ROI Calculator — Agent #006: Email Personalization Agent

MetricBeforeAfterBasis
Time to draft one personalized email~10–15 min manual~1–2 min review/editDrafting automated, human keeps final say
Personalization consistency across repsUneven by rep skillSame angle/proof-point logic for every draftConfig-driven, not rep-dependent
Unapproved claims reaching prospectsDepends on rep disciplineCompliance check runs before every draft is surfacedAutomated check, not manual memory

Reply-rate lift from better personalization should be measured against your own historical baseline by persona/angle; don't assume a universal lift number.

Your numbers

InputValue
Records processed per month___
Manual time saved per record (before)___ min
Loaded hourly rate$___
Monthly time-savings value$___ (records × minutes saved ÷ 60 × rate)

Compare this to the cost calculator's monthly total for a net ROI. Do not add a revenue-impact number unless you've measured it against your own baseline — see `agent-spec.md`'s ROI note.

Governance notes

Failure modes

QA checklist

QA Checklist — Agent #006: Email Personalization Agent

To be completed by a non-builder reviewer before go-live.

Deployment checklist

  • Approved proof-point library built and versioned
  • Messaging-angle config mapped per persona
  • Banned-claims compliance list written
  • n8n workflow imported, marked nodes configured, send-capable credentials confirmed absent
  • Demo-data run matches `demo-data/sample-output.json`
  • One draft generated per persona and manually reviewed for differentiation
  • QA checklist completed by a non-builder
  • Rollback tested

Failure-mode verification

  • Verified: Draft gets auto-sent does not occur (mitigation: n8n workflow uses read/draft-only sequencing-tool API scopes; QA test confirms no send-capable credential is attached)
  • Verified: Fabricated stat in a draft does not occur (mitigation: Banned-claims list is versioned and expanded every time a miss is caught; every miss is logged as a governance incident)
  • Verified: Same generic draft for every persona does not occur (mitigation: QA test generates one draft per persona and asserts they differ meaningfully)
  • Verified: Proof point used out of context does not occur (mitigation: Proof-point metadata requires industry + persona tags before it's eligible for selection)

Governance verification

  • Agent writes only to its agent-owned fields: `personalization_quality_score`, `email_compliance_status`, `email_draft_status` (sequencing-tool metadata, not CRM fields — see Implementation Notes)
  • No auto-send, auto-close, auto-route, or auto-create action occurs without the human step described in `agent-spec.md`
  • Confidence/model-version is present on every written record where applicable
  • Demo-data run output matches `demo-data/sample-output.json` in structure

Sign-off

Reviewer name: _______________ Date: _______________ Result: Pass / Fail (attach notes)

FAQ

Will this agent ever send an email on its own?
No, by design, in V1. It drafts and scores; a human reviews, edits if needed, and hits send. That boundary is the single most important thing about this agent.
What stops it from citing a made-up statistic?
Every draft runs through a compliance check against a versioned banned-claims list before a human ever sees it. Any miss that gets caught in review expands that list.
Does it need the Buying Committee Mapper to work?
It works on title alone, but the drafts are noticeably weaker without a confirmed buying role to pick the right messaging angle.
What happens to a low-quality draft?
It doesn’t reach the review queue at all — drafts below the quality threshold route back for regeneration rather than being surfaced as a ready option.

Related agents