The layer under the campaign
Swarm isn't a sending tool with an AI bolted on. It's the infrastructure that keeps identities alive, keeps the model honest, and hands your team the conversations worth having.
Lead to human, end to end
Ingest
CSV, CRM export or scraper feed, normalised into lead records. These fields are the only facts anything downstream may use.
Assign
Each lead is bound to one account on one channel, with its own proxy and worker. Language is inferred per lead.
Open
The first touch is generated, checked against the policy and the suppression list, then sent at human pace inside working hours.
Carry
Every reply is classified into a fixed intent set. The policy decides the next move: reply, escalate, close or suppress.
Hand off
On real intent the thread freezes and a human is called, with the full conversation, translation and stage already in place.
Five things that make it hold
- Identity isolation
One account = one proxy = one worker = one stable profile. Enforced by the server: an account without its own proxy stays in
network_guardand physically cannot send. Failures stay local to one identity instead of cascading through the fleet. - Policy engine
A fixed set of intents, stages and allowed moves — not a prompt asking the model to behave. Every generation returns structured output that is validated before anything leaves the machine. Out-of-policy situations escalate rather than improvise.
- Suppression
Global and permanent, checked before every send on every channel. One refusal anywhere removes the contact everywhere, and the block is recorded rather than silently applied.
- Pacing
Per-account ceilings, working hours in the lead's timezone, and a warm-up ramp for every new identity. Volume is a function of fleet size, never of pushing a single account harder.
- Observability
Queue depth, delivery state, error counts and escalation reasons written on every cycle to disk — including the ugly numbers. If an account is degrading you see it before the platform does.
What the model may and may not say
The interesting part of a cold conversation is what the system refuses to do. These rules live in code, not in a system prompt.
✕ quoting a price or a range
✕ promising a discount or a deal
✕ inventing availability or a buyer
✕ manufacturing urgency
✕ claiming to be a private person
✕ mentioning automation, scraping or AI
✕ messaging a suppressed contact
✕ sending outside working hours
✓ one short question from the lead record
✓> the exact make and model, once
✓ a single follow-up clause
✓ congratulating on a completed sale
✓ asking what they plan to buy next
✓ one soft mention of the offer, after qualifying
✓ closing politely when there is no interest
✓ calling a human
Your instance, your data
Secrets at rest
Proxy passwords are encrypted with AES-256-GCM and never returned by the API or displayed again after saving. The encryption key lives only on your server.
Sessions stay put
Channel sessions, conversations and lead records live on your instance. Nothing is mirrored to us; there is no shared multi-tenant store to leak.
Access
The whole interface and API sit behind auth; only the health endpoint is open. Export or delete everything at any time, without asking us.