DLX Designs — Autonomous Lead Automaton Engine · Operating Model

A professional brief for how this system runs, and how to deploy it per client.

What this is

Not a lead list. A five-stage automaton that turns real buying signals into qualified, tracked revenue opportunities — with every record carrying evidence and every stage handing a human its next step.

HUNT → REFINE → CAPTURE → ACT → LEARN → (feeds HUNT)

The automaton, layer by layer

LayerWhereWhat it does automatically
HUNTcron/hunt.ts, email/lead-intake.ts, IG webhookWatches a real source (sheet/JSON feed every 15 min), ingests forwarded email, and receives IG DMs/comments via Meta webhook. Real signals only.
REFINEbackend/outbound.tsScores any real public signal (0–100), writes the signal + recommended action, and auto-drafts a personalized first-touch quoting the actual message.
CAPTURElib/store.tsPromotes a prospect/signal to a verified lead the moment a real email/phone is confirmed. Budget seekers are rejected; nothing is invented.
ACTcron/automate.ts, pipeline status APIEvery 15 min: flags hot leads idle >24h, nudges them to the work queue, and (only with ENABLE_AUTOSEND=1) sends that auto-drafted first touch to verified contacts. Pipeline moves new → … → won/lost with full history.
LEARN/api/analyticsReports conversion by stage, source, and signal so budget flows to what actually produces revenue.

The three scheduled crons

CronFrequencyJob
cron/hunt.tsevery 15 minPull the configured real source into the pipeline
cron/automate.tsevery 15 minNudge stale hot leads + auto-send first touches (guarded)
email/lead-intake.tson emailQualified every forwarded inquiry instantly

Security & integrity guarantees

  • No invented information. A lead needs a real contact; a signal without an email is helpfully drafted, never fabricated.
  • Auto-send is OFF by default. Set ENABLE_AUTOSEND=1 to let the engine email. Otherwise it dry-runs for human review — responsible, not spam.
  • All sends and stage changes are logged so the operator sees what the machine did and why.

Deploying per client (you operate, the client owns channels)

This engine is whitelabeled via env config, so the exact same code powers a new client without edits:

  1. Remix this val into the client's org (own store, env, crons, dashboard — full isolation per client).
  2. Set DLX_BRAND_NAME to the client's brand (used in capture copy + drafts).
  3. The client connects their own channels: their website form to /api/ingest, their Google Sheet to DLX_HUNT_URL, their Meta app to the IG webhook, and/or forwards DMs to their deployment's email intake address.
  4. You operate: monitor logs, tune disqualifiers/scoring in qualifier.ts, enable ENABLE_AUTOSEND when the client approves, and review /api/analytics.

Because each deployment is isolated, you can run many brands safely from one Codebase, and a client's data, channels, and secrets never mix.

Go-live checklist for DLX Designs (this deployment)

  • Connect a real source: Google Sheet CSV → set DLX_HUNT_URL (+ DLX_HUNT_TOKEN if private).
  • Point any site form at POST /api/ingest and/or embed /capture.
  • Publish dlxdesigns-…@valtown.email as an intake address for DMs/leads.
  • (Optional) Connect the Instagram/Meta webhook per the README guide.
  • (Optional) Add a free-tier GEMINI_API_KEY for AI-refined signals.
  • (Optional) Run database/schema.sql in Supabase to enable the mirror.
  • Review /api/analytics weekly; tune scoring in qualifier.ts.