In-house · Outreach Case study

A safe, human-paced X (Twitter) DM outreach engine

Most DM automation gets accounts banned. We built the opposite: an outreach engine that behaves like a careful human, sending one message at a time on a real schedule and stopping the moment someone replies.

OutreachAutomationAnti-ban
1 at a time human-paced sends, built to stay unbanned
At a glance 2 min read · 6 sections
  • · One job at a time
  • · Human-like timing
  • · Office hours

The brief

Cold DM outreach on X works, until automation makes an account look like a bot and it gets locked. The goal was an engine that scales outreach while staying under X's radar, and that never keeps messaging someone who already answered.

How a campaign runs

  1. 01 Import CSV with prefilled message per step
  2. 02 Queue One job at a time, human drip
  3. 03 Reply check Replied or hand-off? cancel the rest
  4. 04 Send Stealth browser types char-by-char
  5. 05 Schedule next Follow-up after a randomized delay

Messages are prefilled at import. The sender never calls an LLM mid-send, so timing stays natural.

The anti-ban design

One job at a time

Worker concurrency is one. No parallel sends: the single strongest signal that a human, not a script, is at the keyboard.

Human-like timing

Randomized waits before opening a DM, before typing, and between messages, plus char-by-char typing speed, never fixed delays.

Office hours

Sends are restricted to normal waking hours in the account's timezone. No machine-like 24/7 activity.

Daily caps

Hard per-day limits scaled to account age, enforced with counters. Exceed the cap and jobs wait for tomorrow.

Why it doesn't trip detection

Typical DM blaster
  • Parallel sends
  • Fixed-interval messages
  • Sends at 3 a.m.
  • Keeps messaging after a reply
This engine
  • Strictly one at a time
  • Randomized human timing
  • Office-hours only
  • Stops on reply or manual handoff

Stack

Engine
Playwright stealthBullMQ queueFresh context per action
App
Hono APINext.js dashboardA/B + analytics
Data
PostgreSQL (Prisma)AES-256-GCM session storageRedis caps

The result

Outreach that runs like a diligent SDR, not a bot farm: prefilled sequences, reply-aware follow-ups, A/B comparison across strategies and audiences, and a dashboard to watch it all, without the account locks that kill most DM automation.

Frequently asked

It is engineered specifically to avoid that: one send at a time, randomized human timing, office-hours windows, and conservative daily caps scaled to account age. No automation is risk-free, but this mirrors human behavior closely.

Yes. Before every follow-up step it checks the conversation; if the contact replied (or you replied manually), the remaining steps are cancelled automatically.

Every step's text is prefilled at import time from your CSV, so the sender never pauses to call an LLM mid-send. You control the copy and the sequencing.

Want outreach that doesn't get you banned?

We build managed, human-paced DM and email systems around your ICP and sequencing. Let's scope it.

Book a Discovery Call