Human-in-the-loop for outbound agents
Approval that does not stall the sequence.
The rep approves the send from their lock screen, and the agent carries on without anyone opening a dashboard.
How can an AI SDR get a human to approve a send without slowing down?
Pushary lets an AI SDR get a human to approve a send on the phone the rep carries. Only the gated send waits, and the rest of the sequence keeps running. The rep taps Approve or Deny on the lock screen, or opens the Pushary app to edit the copy. The answer reaches the agent as soon as the rep taps, not at the end of the day. No answer in time means that email does not go out.
What needs a yes
The calls that should not be automatic
- sendEmail(prospect, draft)
- The first email to a named person at a named company decides whether your domain keeps its reputation. Almost every outbound team wants eyes on it. Almost none want to wait.
- sendToTier('enterprise', draft)
- A generic line that is fine for a long tail list reads as careless to a named account someone has worked on for months.
- replyToObjection(threadId, draft)
- A reply is where a real conversation started. An agent that misreads the tone here costs you a deal rather than a click.
- enrichAndPersonalize(prospect)
- When enrichment returns something the model is unsure about, a guess produces the personalization mistakes prospects screenshot and post.
The code
One call inside the step you already have
Wrap the action, not the whole agent. Everything the agent does that is safe keeps running without asking anyone.
npm i @pushary/serverimport { createPusharyServer } from "@pushary/server"
const px = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })
// The sequence keeps moving. Only the gated sends await a person.
for (const prospect of batch) {
const draft = await writeOpener(prospect)
if (prospect.tier !== "enterprise") {
await sendEmail(prospect, draft)
continue
}
const decision = await px.decisions.ask({
externalId: prospect.ownerId, // the rep who owns the account
type: "confirm",
question: `Send to ${prospect.name} at ${prospect.company}?\n\n${draft.subject}`,
})
if (decision.approved) await sendEmail(prospect, draft)
else await queueForRewrite(prospect, draft)
}Who answers
The approver is not at a desk
The approver is the rep or founder who owns the account. Their day is calls and meetings, not your product. Most AI SDRs now have an approval mode. Many admit on their pricing pages that it slows the agent down. The cause is delivery: the request lands where the person is not. Pushary reaches their phone, so a gate that cost a day costs one read of a subject line.
Does an approval step not defeat the point of automating outbound?
It does if you gate everything. Gate by consequence rather than by volume. A long tail list that was never going to convert on personalization does not need a person. A named account someone has worked on for six months does, and so does the first reply in a live thread. That is usually a small share of total sends. The human queue stays short enough that people read it instead of rubber stamping it. The other half is where the request lands. If approval means opening a tab, it gets batched to the end of the day and the sequence timing you designed is gone. If it lands on a phone as one line to read, it happens between meetings.
Worth reading: The FTC's CAN-SPAM compliance guide for business.
Add it to your product. Your users never make a Pushary account or pay us.
FAQ
Questions, answered
Can the rep edit the copy instead of only approving it?
We batch hundreds of sends a day. Does every one become a notification?
Does this replace the approval mode our product already has?
Is there a record of who approved which send?
Put a person on the step that needs one.
Connect a user once, ask with one call, and run the action only on a yes. Every answer is saved.
Start free