AI Voice Automation

CallerAgent

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

Next.jsTypeScriptPostgreSQLElevenLabsZadarman8n
Abstract CallerAgent voice workflow from approved contact to human handoff

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. 1

    Approved contact and campaign data

  2. 2

    CallerAgent application and workflow state

  3. 3

    ElevenLabs conversational voice agent

  4. 4

    Zadarma telephony and SIP connection

  5. 5

    Call outcome recorded or an interested caller is transferred

  6. 6

    Provider event returned through a webhook

  7. 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