The board / Gated

Plyco outbound engine

In rollout · September 2026 review only, nothing sends B2B outbound on HubSpot

Drafts the week's emails. Sends none of them. For now, that is the point.

Rails

  • aloneReadsContacts and history from HubSpot.
  • with a personWritesDrafts and rep tasks, by design. Today they stop at the review queue.
  • not allowedMoneyNothing to price. Nothing to charge.
  • with a personPublicWould send from reps' own inboxes. Hasn't yet.
  • with a personUnattendedRuns weekly. Dry-run is the default.
  • a person, every timeDecidesEvery draft is read by a person before anything else happens.

Problem

Outbound dies when a rep gets busy. The cadence slips, the follow-up never lands, the pipeline looks like a cliff.

The engine keeps the cadence and writes the first draft. Judgement, and the send button, stay with people.

System

Each week a cohort is picked from HubSpot and Claude drafts one email per contact into a review queue. Today it stops there and nothing sends. When armed, drafts pass dry-run, kill switch and daily caps, send through HubSpot sequences from reps' own inboxes, replies are classified and tasks are created for reps.

Decisions

  1. Dry-run is the default. A kill switch, a bounce circuit breaker and daily caps sit in front of every send.
  2. A lint rule forbids delete calls against HubSpot from this codebase. The machine cannot tidy up after itself.
  3. 15% of each cohort is held out, so lift is measured, not assumed.
  4. Reply classification is scored against a labelled set before it is allowed to create a task.

Stack

Next.js 16, Inngest, Neon, Anthropic SDK, HubSpot, ZeroBounce