A tireless version of you on LinkedIn. The engagement engine warms people up so you're a familiar face; the outreach engine reaches out; the Clone holds the conversation in your voice; and a Coordinator supervises all of it. Below: what every agent does, the exact logic it decides on, what happens end to end, and the result you actually get.
At a glance — the spine
Sources
rosters · post-engagers · your content
→
Warm
likes + comments build familiarity
→
Reach
connect → opener → follow-ups
→
Converse
they reply → Clone takes over
→
You
booked / tricky → handed to you
▲Coordinator watches all of it — liveness, health, QA, escalation, tuning. Never in the hot path.
▼Ledger (the truth) → mirrored to Attio (your dashboard). Every agent reads/writes here; nobody talks directly.
Inputs — what feeds it
🎯 Lead sources
Creator + prospect rosters (polled), other-creators' post-engagers, your-post engagers (warmest), Sales Nav intent lists, lookalikes. Groups = manual feed (no API).
📣 The content engine
Your posts make you visible — the 70/30 rule: identical templates get 31% reply from an active profile vs 9% dormant. Content also pulls inbound straight to the Clone.
🧬 Config (per account)
ICP filter · your voice + comment-tone + Doctor Model · the goal (qualify → book) · allowed-facts list. This is what makes it sound like you.
↓
How the two engines go out together — the interlock
The Conductor
One budget, deficit-paced. Splits the day into two pools and floors each so neither starves. Both draw on one account-wide write ceiling — LinkedIn limits the account, not the pool.
▸ ~25% attention→warming
▸ ~75% outreach→reaching + DMs
⚡ Engagement enginethe "attention" pool · builds familiarity first~25%
Likes
~40/day on creators + prospects
+
Comments
in your voice · substantive footprint
→
Warmed
≥1 touch in 7d, or co-engagement
🔒 Promoter gate · warm-enough-to-connect — no warming, no reach-out
🚀 Outreach enginethe "outreach" pool · only fires on warmed people~75%
Connect
~14–16/day · no-pitch invite
→
Opener
give-first, no ask (= acceptances)
→
Follow-ups
cap 3 · 2nd is the money touch
⤵
Email / InMail
2nd channel for non-acceptors
They share one Conductor — the same scheduler hands out both warming and outreach actions each tick, under one account ceiling.
Engagement gates outreach — the Promoter refuses a connect to anyone not warmed first. Warming is the on-ramp.
The Operator executes one action/tick — verify-and-halt: do it, confirm the real effect, only then advance the baton.
Every agent, in full — what it does & the logic it decides on
The Cadence · proactive, cron-paced — finds, warms, reaches out at a human pace
1 · Discoveryfinds & admits the right people
Fires: every tick, budget-paced across the day.
Track known rosters (creators → engage, prospects → warm) + Mine new pools: other-creators' post-engagers, your-post engagers, Sales Nav intent, lookalikes.
Admit gate: resolve profile → ICP filter (in-niche role, decision-maker, active <30d, real engagement not just a like, not competitor/bot) → score Hot / Warm / Cold → dedup vs Ledger and Attio → enrich.
Weights by post relevance + cross-target frequency (repeat signal = higher intent).
Each action type has a daily quota, spread across active hours with jitter. Two pools: attention (~25%) vs outreach (~75%) — neither starves.
Pick rule: among types where done < quota AND the jitter-gap elapsed AND an eligible item exists AND in active hours → choose the type with the highest deficit (quota × elapsed-fraction − done), then its top-priority item.
If nothing eligible → idle (idleness is safe + human). ×0.5 all quotas on a health flag.
Reads: pacing counters · Writes: the one chosen action → Operator
3 · Promoterdecides who's warm enough to reach
Fires: when a warming person qualifies to graduate.
Sends a connect ONLY if all hold: ICP-qualified & Hot/Warm · warmed (≥1 like/comment in ~7d, or co-engaged a post we commented on, or engaged our content) · dwell 24–48h but promote within ~5 days (warmth decays) · our profile passes the 10-point audit · clean/dedup, not suppressed/Clone-owned · under the weekly cap.
No note by default (optimized profile → higher accept). Hot targets get an optional <200-char real-signal note, no pitch.
Fires: once per tick — the only agent that touches LinkedIn.
Pre-flight: re-resolve the target's provider_id (guard wrong-person), re-check status still valid, confirm not already done (idempotency key).
Execute one action → verify the real effect (invite shows "Pending", message in thread) → advance the baton only on confirmed success. API-200 ≠ done.
On a security checkpoint / auth-drop / 429 → halt-and-alert, set paused_until, never auto-click through. A failed action never corrupts state.
Reads: the queued action · Writes: audit row + status + pacing
The Clone · reactive, webhook, always-on — you, but never asleep
5 · Listenercatches every reply, claims the baton
Fires: the instant a Unipile inbound webhook lands.
Match sender → Ledger person. Debounce 30–90s so a multi-message burst is answered as one whole thought.
Detects your manual reply — if you answered from your phone, the Clone yields and never talks over you.
Claims the baton on the first fragment (replied → in_conversation). "stop / not interested" → suppressed.
Reads: the webhook · Writes:replied/in_conversation, appends the thread
6 · Conversationalistholds the chat as you
Fires: when the Listener signals a real reply.
Loads person + full thread + voice files + Doctor Model + the goal (qualify → book) + the allowed-facts list.
Replies in your voice, diagnoses like you do, handles objections, proposes the call when warranted. 1–2 min during active hours, holds overnight ones for morning.
Pre-send gate re-reads the world: new inbound? now suppressed? you active in the thread? no invented claim, no pricing, on-voice, not a near-dupe → else regenerate once, then escalate.
Escalates on: pricing · any commitment/promise · "are you a bot?" · low confidence · negative/emotional sentiment · a high-value prospect at the close.
Hands you the thread + a suggested reply on WhatsApp; blocks the auto-send until you respond, then resumes or stands down.
Graduated autonomy: weeks 1–2 = draft-and-approve every reply (you watch it be you), then auto-send safe turns, escalate only the hard ones.
Reads: thread + confidence · Writes:escalated + pings you
The safety net = the humanone model runs it all: Kimi K2.6
There is no "escalate to a smarter model." Kimi handles the turn, or you do (via the Escalator). The pre-send Reviewer gate + deterministic guardrails fail closed — when unsure, it holds for a human rather than winging it.
The Coordinator · supervisor, periodic — the boss who never touches a customer
Escalation routing — surfaces the escalated queue to you (Attio + WhatsApp + suggested reply) and pushes your decision back.
Tuning — reads metrics (reply by hook/segment, acceptance, conversion) → adjusts the Conductor's pool split + the Promoter's targeting. "Fix the weakest number."
Reads: Ledger + Attio metrics · Writes: pause / config / approvals (Attio writes need your OK)
A row-level lock means exactly one agent owns a person at a time — no double-message, ever. The moment they reply, Cadence stops; suppressed overrides everything.
The brain — where the truth lives
📒 Ledger
Operational truth. people · actions (audit) · pacing · conversations. Authoritative for the baton + suppression. The engine keeps running on this alone if Attio is down.
→
📊 Attio
System of record + your dashboard. Qualified people, pipeline stage (mapped from status), summary, outcome. Outbox-pattern mirror; your do-not-contact overrides flow back and win.
→
🧭 Coordinator
Reads health + metrics from both, writes pause/config/approvals. The one agent allowed to change the dials — and only within the guardrails below.
The guardrails — what keeps the account alive
🛡 Hard rules, non-negotiable
The whole thing is built to look human and never get restricted. These wrap every agent's every action.
🔒 One owner, one human
Row-level baton lock — never two touches at once. Dedup on provider_id across Ledger + Attio: one person, one account.
📉 Rate ceilings
~80–100 connects/wk hard cap (rolling 7-day). Warm-up ramp 5→20/day. One account-wide write ceiling above per-type quotas.
✋ Acceptance floor
Soften <30% · throttle ×0.5 <25% · hard-stop new connects <20% (LinkedIn's restriction trigger). Read in the hot path.
🚧 Halt-and-alert
Any checkpoint / "action blocked" / dropped session → freeze the account's sending, alert you. Never auto-click through.
🕒 Human pace
Inter-action floors, log-normal jitter, active-hours only in the account's timezone, weekend/holiday rest, overnight hold on all sends.
🧯 Isolation + kill-switch
Every counter keyed by account — one going yellow pauses only itself. A master kill-switch freezes the fleet instantly.
🧠 Clone safety
Inbound = untrusted data, never instructions. Soft-no → nurture, never "overcome." Emotional / "are you a bot?" → escalate.
🆔 Identity gate
Existing clients, competitors, journalists, recruiters, legal senders are never run through the prospect Clone — handed to a human.
👤 The human is the net
One model (Kimi K2.6). Hard turns → you. The pre-send gate fails closed → holds for a human.
What essentially happens — one prospect, start to finish
1
Discovery spots an ICP prospect engaging your tail creators, filters + scores them, and admits them → discovered.
2
Engagement engine likes + comments (in your voice) on their posts and the creators they follow → they keep seeing you → warming.
3
Promoter checks they're warm enough → Operator sends a no-pitch connect, verifies it landed → connect_sent.
4
They accept → the Operator sends a give-first opener (no ask) → opener_sent. Non-acceptors get opened on email / InMail instead.
5
They reply → Listener flips the baton → Conversationalist holds the chat in your voice, diagnoses, and proposes a call.
6
Pricing, a commitment, "are you a bot?", or anything delicate → Escalator hands you the thread + a suggested reply on WhatsApp.
7
It books the call → written to Attio → handed to you warm. If it goes quiet, one re-engage, then suppressed (never bothered again).
8
Coordinator watches the whole run — the Ledger is the single source of truth, mirrored to Attio, which is what you actually open.
The end result
Booked, qualified meetings on your calendar — without you prospecting.
Every real lead lands in Attio as one clean record, merged across channels (LinkedIn, email, ads → one human), with the conversation, the stage, and the outcome attached. You don't find people, warm them, connect, open, or chase — the engine does. You just take the warm calls and step in for the moments that need a human. And because the Coordinator reads every reply, acceptance, and booking back into the Conductor + Promoter, the engine sharpens itself every week — the distribution compounds.
Per profile
~$50–85/mo all-in at the heavy 50-new-people/day load (Kimi K2.6 + a ~$5 always-on box).