How the automation works
The console you are looking at is the operator view. Underneath it is a queue, a worker and a research pass — the same three pieces whether it runs for ten leads or ten thousand.
The loop
Everything in the system is one of these five steps. Only step four needs a human.
- 01Importpaste or API
- 02Researchweb search
- 03Drafthook + service
- 04Review & sendyou
- 05Trackfunnel + follow-ups
The amber step is the only one a person touches. Everything either side of it is queue work, which is why it survives a closed laptop and a failed request.
What runs by itself
- ResearchWebsite, socials, Meta Ad Library and Google Ads Transparency, plus one or two real competitors — per lead, with sources kept.
- DraftingAn email and a LinkedIn message built around the single observation the research found, mapped to one of the six services.
- Queueing and retriesThree attempts with exponential backoff. A rate limit is a delay, not a lost lead.
- Follow-up schedulingDay 0 / 3 / 7 touches become due automatically and surface under Needs you.
- AuditsTen surfaces scored with a prioritized fix list, runnable standalone or attached to a lead.
- Competitor watchesStanding watches re-run on a cadence and report only what changed since the last scan. A quiet week says so instead of padding.
What stays in your hands
- SendingNothing leaves this system. Drafts are copied out and sent from your own mailbox.
- LinkedIn messagesAutomating these outside LinkedIn's official API violates their terms and risks the account. Drafts only.
- Stage changesReplied, interested, meeting, client — a human moves these, because only a human knows what was said.
- Judgment on a weak hookWhen research finds nothing specific, you decide whether the lead is worth working by hand or dropping.
The rule the research pass is built around
The difference between outbound that books meetings and outbound that gets marked as spam is one thing: whether the first line proves you looked. So the research step is allowed to come back empty.
“You've been running Meta ads since March, but all six creatives in the library are the same static product shot.”
“I noticed your brand could improve its digital presence — do you need help with marketing?”
When nothing clears the bar, the lead is parked with no draft written and shows up under Needs attention. Nothing generic ever reaches a send queue, because there is no send queue.
Running it for a thousand leads
Nothing about the design changes with volume — the queue already persists across restarts and the worker already retries with backoff. Three things get switched on:
- 1Move the tick to a schedulerPOST /api/automation/tick on a cron instead of from the open browser tab. Set ADBIBE_CRON_SECRET and the endpoint authenticates.
- 2Raise concurrency against the rate limitThe worker already claims jobs atomically, so more workers is a settings change. The model provider's rate limit is the real ceiling — tight on free tiers.
- 3Swap the JSON store for PostgresEvery read and write goes through lib/db.ts. Replacing the two functions in that file is the whole migration.
Where this goes next
Three agents run today. The rest of the roadmap splits cleanly in two, and the split decides where each one gets built.
Value is the prompt and the rule about what it may claim. Built here, in code, where a change to that rule shows up in a diff.
Auditor · Outbound · Competitor Intel · Growth Strategist · Audience · Content · Brand · CRO
Value is the connector and the approval gate. Built in n8n, which already has WhatsApp, HubSpot, Google Ads and the credential handling — none of which is worth writing twice.
WhatsApp · CRM · Reporting · Performance · Monitoring
The boundary is one HTTP call: n8n asks this app for research, never the other way around.
Cost per lead
A research pass is a handful of web searches plus one structured response — a few cents of model spend per lead at current list rates. A full ten-surface audit costs more because it searches harder. Live numbers for this workspace are on the Overview page; they are computed from the token counts each job actually reported, not estimated. A competitor scan scales with the size of the watch — roughly three lookups per competitor, per run.