CallerAgent
A voice automation workflow that reduces time spent on unanswered or low-intent outbound calls by transferring interested callers to a human operator.

The problem
Protecting human time for the conversations that matter
Before CallerAgent, a human operator made first-contact calls one by one. Voicemail, no answer, and low-interest conversations took attention away from people who were ready to speak. I built the workflow to automate that first step while keeping the human involved where judgement and help mattered.
What I built
The operational layer around the voice agent
- Next.js and PostgreSQL application architecture for the workflow.
- Data and workflow state for contacts, campaigns, call jobs, attempts, outcomes, and provider events.
- Integration between the ElevenLabs voice agent and Zadarma telephony infrastructure.
- Webhook processing, event correlation, and transfer confirmation logic.
- Operational reporting and a notification workflow through n8n and Telegram.
- A stronger development, testing, and deployment process as the application evolved.
The workflow
AI first contact, human handoff when it is needed
The voice agent handles the initial call. A human operator only joins when an interested caller is transferred.
- 1
Approved contact and campaign data
- 2
CallerAgent application and workflow state
- 3
ElevenLabs conversational voice agent
- 4
Zadarma telephony and SIP connection
- 5
Call outcome recorded or an interested caller is transferred
- 6
Provider event returned through a webhook
- 7
Confirmed transfer recorded, then n8n and Telegram notify the operator
The technical system
A connected application, not an isolated voice demo
Next.js and TypeScript
The web application, API routes, and integration layer.
PostgreSQL
The source of truth for contacts, campaigns, jobs, attempts, and provider events.
ElevenLabs
The conversational AI voice agent for the first interaction.
Zadarma
The telephony and SIP infrastructure for outbound calls.
Webhooks
External events are received, normalised, and linked to the right application records.
n8n and Telegram
Operational notifications after the application confirms a transfer.
What I learned
Build the smallest reliable workflow first
I started too broadly, with too many gates, checks, and moving parts before the core flow was proven. Those controls matter in a mature system, but adding them all at once made the application harder to build, test, and reason about.
The MVP I would prove first
One approved contact, one campaign, one controlled call, one provider event, one clear outcome, and one human handoff. Critical protections stay in place, while advanced recovery and operational complexity are added after the core workflow is validated.
I also learned to treat testing and deployment as part of the product. Building and compiling on the VPS created resource pressure, so I moved build work outside the deployment environment and let the VPS focus on running the prepared application.
Outcome
A practical applied AI workflow
CallerAgent connected AI voice, telephony, application data, event processing, and human handoffs in one operational workflow. It gave me hands-on experience of building AI systems that are observable, maintainable, and useful beyond a demo.
Discuss automation for your business