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 — one message at a time, on a real schedule, that stops 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