# How we run personalized outbound An agent connected to our CRM, enrichment, and email that researches each lead, drafts a genuinely personalized sequence, logs it to the CRM, and holds every send behind human approval with a daily cap. Canonical page: https://kortix.com/use-cases/outbound-outreach Personalized outbound doesn't scale by hand, so most teams give up the personalization: a mail-merge template with a first name swapped in, sent to a list. It's fast and it's ignored. Real personalization means researching each account and writing to its actual context, which is exactly the part that doesn't scale. We run an agent on Kortix that does the research and the writing per contact, then holds every send behind a person. It enriches each lead, drafts a first-touch and follow-up grounded in the account's real context, logs every draft to the CRM, and sends nothing without approval, capped daily. This is how we run our own outbound. - **Team:** Kortix - **Runs on:** A new segment or lead list - **Connected systems:** CRM · Enrichment · Email - **Mode:** Every batch approved by a person · daily cap ## The problem Outbound has a tradeoff most teams resolve the wrong way. Personalized messages land, but researching and writing each one doesn't scale, so the list wins: a template, a merge field, a send button. The result is volume without relevance, and the reply rate shows it. The usual tools don't fix it. A sequencing tool blasts the same template on a schedule. An AI writer produces fluent copy with no real account context, which reads as personalized but isn't. And any tool that can mass-send is one wrong segment away from putting unreviewed email in front of thousands of people. ## What we built On Kortix, a periodic sweep triggers the agent in a fresh session (a cloud sandbox) with scoped access to enrichment, the CRM, and email. The agent works through the batch of new contacts one by one, researches each account, drafts a first-touch and a follow-up sequence grounded in what it found, and logs every draft to the CRM. No message sends on its own: every batch waits for a person to approve, under a daily cap. ## How it works ### Connect the lead list as the trigger A new segment or lead list in the CRM is the trigger. On a schedule, the agent fires a fresh **session** in its own sandbox and works through the batch of contacts that list contains. Each contact is handled as an independent unit — a research or drafting failure on one contact is logged and skipped, and never blocks the rest of the batch — with the run capped so a sweep always stays a size a person can review. ### Give the agent the outreach playbook What genuine personalization looks like lives as **skills** and **memory** that travel with the agent: our angles, the proof points that resonate, what to avoid, and which signals in an account are worth writing to. When a message pattern works, we write it down and the agent reuses it on the next batch. ### Connect enrichment, the CRM, and email Through scoped **connectors**, brokered server-side so no raw token reaches the model, the agent can: - **Enrich each contact** — role, company, recent signals, and the real context that makes a message specific. - **Draft a genuine sequence** — a first-touch and follow-ups grounded in the account's context, not a template with a name swapped in. - **Log every draft to the CRM** — each message written back against the contact, so the history is complete. - **Send on approval** — the email goes out only after a person clears the batch. ### Set the guardrails Nothing sends without a person approving it, and it never mass-sends unreviewed. Every batch stops at a **human approval gate**, and a **daily cap** limits how many messages can go out even once approved. A wrong segment can't turn into thousands of unreviewed emails, because the send is gated and capped regardless of how big the list is. Credentials are encrypted in the Secrets Manager and injected at runtime, never shown to the model or written to logs. ### Run personalized outbound at a safe rate With that in place, loading a segment produces a batch of researched, account- specific drafts logged to the CRM and waiting for review. A person reads the batch, approves what's ready, and the daily cap meters the sends. The personalization is real because each message is written to a researched account, and nothing leaves without a person clearing it. > **The pattern** > A **trigger** on a new list fires a fresh session with scoped > **connectors** into enrichment, the CRM, and email. The outreach approach is > encoded as **skills** and **memory**. Every batch is approved by a person and > the daily cap meters the sends — nothing mass-sends unreviewed. ## Guardrails The agent can draft and send email, so the send is the tightly controlled step: - **Isolation.** Each sweep runs in its own fresh microVM sandbox, torn down when it finishes. The session reaches only enrichment, the CRM, and email, and only drafted messages leave it; nothing sends from inside the sandbox. A failure on one contact is logged and skipped — it never blocks or corrupts the rest of the batch. - **Scoped secrets.** The enrichment, CRM, and email credentials are encrypted in the Secrets Manager and injected into the sandbox at runtime, never exposed to the model or the logs. - **Human approval gate.** Nothing sends without a person approving it. Every batch is reviewed before send, and a **daily cap** limits volume even after approval, so a wrong list can never mass-send unreviewed. - **Everything is code.** The agent's configuration, skills, and permissions are files in the repo, versioned and changed through a reviewed **change request** rather than a dashboard setting. ## The outcome - **Every send:** Approved by a person and metered by a daily cap - **Per account:** Research and copy grounded in real context, not a merge field - **3 systems:** Enrichment, CRM, and email in one agent Outbound is now personalized per account and sent at a safe rate: each contact is researched, each message is written to its context and logged to the CRM, and every batch is cleared by a person under a daily cap. The personalization scales because the research does, and nothing mass-sends without review.