Systems AI Business Management System Custom CRM Software Custom ERP Software AI CRM AI ERP Replace Excel & Tally Manufacturing ERP Software Jewellery Software Custom Web Apps Yukti AI CRM Automation AI Automation Agency in Surat WhatsApp AI Chatbot WhatsApp Automation AI Agent Development Enterprise AI Agents Voice AI Agents n8n Automation Agency Workflow Automation CRM Automation AI Consulting Industries Diamond & Jewellery Manufacturing Textile & Apparel Real Estate Retail & E-commerce Healthcare All industries Company Work / Case Studies Blog Free SEO Audit About Contact
Case study · Outbound voice AI · payment reminders

The follow-up call nobody wants to make — handled by a voice AI, in fluent Hindi

How Yukti AI built an outbound voice-AI calling system for payment reminders: an AI agent that phones a customer about a pending payment, has a real spoken conversation in Hindi, records whether they will pay, saves the transcript, and schedules the next call automatically if the money is still outstanding.

Chasing pending payments by phone is repetitive, uncomfortable work, and it slips when the team is busy. Yukti AI built a system where a scheduler places outbound calls through a telephony provider, bridges the audio in real time to OpenAI's Realtime voice API, and lets an AI agent hold the reminder conversation in fluent Hindi. The AI logs the outcome — paid, promise-to-pay, no-answer or other — the full call is transcribed to the database, and a follow-up scheduler re-queues anyone who hasn't paid. Built and tested end to end.

Executive summary

Quick facts

Use caseOutbound payment-reminder calling — factory / trade collections context
What it doesPhones customers with a pending payment, has a spoken conversation in Hindi, logs the outcome, schedules a follow-up
VoiceOpenAI Realtime voice API (GA schema) — natural, low-latency, handles interruptions
LanguageFluent Hindi for this build; English / Gujarati by changing the instructions
TelephonyExotel outbound calling, with a media stream to the AI bridge
BackendFastAPI media server bridging Exotel audio ↔ OpenAI Realtime
DataSupabase — customers (amount due, call time, status) and call_logs (transcript, outcome)
Outcomes loggedpaid · promise-to-pay · no-answer · other — via an AI tool call at end of call
Schedulers (n8n)Call Scheduler (every 5 min, places due calls) · Follow-up Scheduler (re-queues unpaid outcomes ~24h later)
Operator viewCustomer list mirrored to a Google Sheet for non-technical editing
StatusBuilt & tested end to end — real call placed, AI conversed in fluent Hindi, outcome logged correctly; scale-up pending telephony KYC
The problem

Reminder calls are essential, repetitive, and the first thing to slip

Every business that extends credit has a list of customers who owe money and a person whose job is partly to ring them. The call itself is short and formulaic: "Sir, ₹X is pending against invoice Y, when can we expect it?" — note the answer, move to the next name.

It is also the work people avoid. It is uncomfortable, it is monotonous, and when the day gets busy it is the task that doesn't get done — which is exactly when the receivables age. A week of missed reminder calls is a week of cash flow lost, and there is usually no record of which calls were made or what was promised.

Why voice, not just WhatsApp

A WhatsApp reminder is easy to ignore. A phone call gets a response — and now it can get one without a person having to make it, in the customer's own language, with the outcome recorded.

Before → after

How the reminder gets made

Before

  • A person works down a list of names, calling each
  • The uncomfortable call is the first to be skipped
  • A busy week means the receivables age
  • No record of which calls were made or what was promised
  • Follow-ups depend on someone remembering

After

  • The scheduler places due calls automatically, all day
  • The AI makes every call in fluent Hindi, on time
  • Outcome logged: paid / promise-to-pay / no-answer / other
  • Full transcript saved against the customer
  • Unpaid outcomes re-queued for a follow-up call automatically
The decision

Why a voice AI, not a call centre or a robo-dialer

A call centre is expensive, needs training on your business, and still has good and bad days. A robo-dialer plays a recorded message and hangs up — it can't answer "I already paid" or note a promise date. A voice AI sits in between: it has a real conversation, in the customer's language, at call-centre-quality latency, for a fraction of the cost, and it records a structured outcome every time.

What a reminder call needsRobo-dialer (recorded message)Human call centreThis voice AI
Real two-way conversationNoYesYes
Handle "I already paid" / "call my accountant"NoYesYes
Consistent script & tone every callYesVariesYes
Structured outcome logged automaticallyNoManualYes (tool call)
Full transcript savedNoRarelyYes
Cost per call at volumeLowHighLow
Solution architecture

How a due payment becomes a completed call

Customer list
Supabase: name, amount due, scheduled call time, status — mirrored to a Google Sheet
Call Scheduler (n8n)
Every 5 min: find customers whose call time is due and status is pending
Outbound call (Exotel)
Place the call; a safety guard restricts numbers in test mode
FastAPI media bridge ↔ OpenAI Realtime
Real-time audio both ways — the AI holds the conversation in Hindi
Outcome & transcript
AI tool call logs paid / promise-to-pay / no-answer / other; full transcript saved
Follow-up Scheduler (n8n)
Every hour: re-queue unpaid outcomes for another call ~24h later
How the call works

A real conversation, not a recorded message

This is not an IVR playing a clip. When the customer picks up, their audio streams in real time to OpenAI's Realtime voice model through the FastAPI bridge, and the model's speech streams back — low-latency enough that the customer can interrupt, ask a question, and be answered.

  • It speaks only Hindi for this build, in a natural, polite collections register — identifies the business, states the pending amount, asks when payment can be expected.
  • It handles the common replies — "I'll pay next week", "I already paid", "send me the invoice", "call the accountant" — and keeps the conversation on track.
  • It doesn't argue or improvise commitments — its instructions keep it to reminding, noting the response, and deferring anything it can't answer.
  • It ends by logging the outcome — a tool call records paid, promise-to-pay, no-answer or other, and the whole transcript is saved against the customer.

In testing, a real outbound call was placed, the AI held a genuine back-and-forth conversation in fluent Hindi, and correctly logged the outcome — verified end to end.

What we built

The components

Customer & call data

A customers table with the amount due, a scheduled call time and a status, and a call_logs table with the transcript and outcome of every call — both in Supabase with row-level security. The customer list is also mirrored to a Google Sheet, so a non-technical operator can add customers, set amounts and pick call times without touching the database. Benefit: the collections list is editable by whoever manages it.

The call scheduler

An n8n workflow that runs every five minutes, finds customers whose call time has arrived and whose status is still pending, and triggers an outbound call for each. A parallel branch keeps the Google Sheet in sync. Benefit: calls go out on time, all day, with no one watching a clock.

The telephony & voice bridge

An outbound call is placed through Exotel; the call's audio is connected to a FastAPI media server that bridges it, in real time, to OpenAI's Realtime voice API (built on the current GA schema, not the deprecated beta). Benefit: a natural spoken conversation, not a phone tree.

Outcome logging

The AI is given a log_call_outcome tool and instructed to call it at the end of every conversation with one of four values — paid, promise-to-pay, no-answer, other. That, plus the transcript, is written to call_logs. Benefit: every call has a structured, queryable result and a full record of what was said.

The follow-up loop

A second n8n workflow runs every hour, finds customers whose last outcome was promise-to-pay, no-answer or other, and re-schedules them — typically for 24 hours later — setting their status back to pending. Benefit: nobody falls off the list until the payment is actually resolved.

Safety guard

A hard-coded test-mode guard refuses to call any number except a single approved test number while testing — so no real customer is ever called by accident during development. Benefit: the system was built and proven safely.

Status & honest limits

What is done, and what it depends on

Done: the full pipeline is built and verified — database, schedulers, telephony, the real-time voice bridge, outcome logging and the follow-up loop. A real test call was placed and the AI conversed naturally in Hindi and logged the outcome correctly.

Depends on the client: calling real customer numbers at volume requires the business to complete the telephony provider's KYC and business verification — a provider-side step, separate from the software. Test calls to the account owner's own number work regardless.

Design choices: the public tunnel used in development is ephemeral and would be replaced with a stable endpoint for production; the AI's instructions would be finalised with the client's exact business name, hours and policies before go-live.

Where it applies

Any short call a business makes over and over

Payment & EMI reminders

The build's own use case — remind, capture the promise date, follow up until paid.

Delivery & appointment confirmation

"Your order is out for delivery tomorrow — will someone be there?" Reschedule on the call.

Order-status calls

Proactive updates at each milestone, with the customer able to ask a question.

Feedback & CSAT

A short post-delivery call, with the response transcribed and scored.

Lead callbacks

Call a new enquiry within minutes, qualify, and book a human call-back if warm.

Renewal & RSVP

AMC and subscription renewals, event and camp confirmations.

Implementation process

How it was built

STEP 1

Data & schedulers

The Supabase schema, the Google Sheet mirror, and the call and follow-up scheduler workflows in n8n — verified against real data first.

STEP 2

Telephony

Exotel outbound calling set up, with an app/flow that routes call audio to the voice bridge, and a test-mode safety guard.

STEP 3

The real-time voice bridge

A FastAPI media server bridging Exotel audio to OpenAI Realtime on the current GA schema, with the AI's Hindi collections instructions and the outcome tool.

STEP 4

End-to-end test

A real call placed to the approved test number — the AI held a natural Hindi conversation and logged the outcome; the follow-up loop verified.

Under the hood

Technology

  • OpenAI Realtime voice API (GA schema) — the conversational voice model.
  • FastAPI — the media server bridging telephony audio and the voice model in real time.
  • Exotel — outbound calling and the call flow.
  • Supabase (PostgreSQL) — customers and call logs, with row-level security.
  • n8n — the call scheduler and the follow-up scheduler.
  • Google Sheets — a non-technical operator view of the customer list, kept in sync.

All credentials are environment variables, never committed. The client owns the customer and call data.

FAQ

Questions about outbound voice AI

It is an automated calling system that phones customers who have a pending payment, has a real spoken conversation with them in their own language, reminds them of the amount due, answers basic questions, and records whether they have paid, promised to pay, or did not answer. The full call is transcribed and saved, and if the payment is still pending, a follow-up call is scheduled automatically. Yukti AI built this for a factory-collections use case, with the AI speaking fluent Hindi.
A scheduler checks for customers whose call time is due, and triggers an outbound call through a telephony provider (Exotel). The call audio is bridged in real time to OpenAI's Realtime voice API through a FastAPI media server, so the customer and the AI have a natural, low-latency spoken conversation. At the end, the AI calls a tool to log the outcome as paid, promise-to-pay, no-answer or other.
Yes. The full call is transcribed and saved to the database against the customer, along with the outcome the AI logged. So there is a complete record of what was said on every reminder call, and a history per customer.
A follow-up scheduler runs on a schedule, finds customers whose last outcome was promise-to-pay, no-answer or other, and re-schedules them for another call — typically 24 hours later — closing the loop until the payment is resolved. The customer list is also mirrored to a Google Sheet so a non-technical operator can see and edit it.
Yes. The Hindi build was for this specific client; the same system can run in English, Gujarati, or a mix, by changing the AI's instructions. The voice model handles natural conversation and interruptions in each.
The system was built and tested end to end — a real outbound call was placed, the AI held a genuine conversation in fluent Hindi and correctly logged the outcome, and the follow-up loop was verified against real data. Moving from test calls to calling real customer numbers at scale depends on the client completing telephony KYC and business verification, which is a provider-side step.
Payment and EMI reminders, delivery and appointment confirmations, order-status calls, feedback and CSAT calls, lead qualification callbacks, renewal reminders, and event or camp RSVPs. Anywhere a business currently pays people to make the same short call over and over. Yukti AI builds these across Surat, Gujarat and India.
Case study at a glance

Summary

Knowledge summary

Yukti AI built an outbound voice-AI calling system for payment reminders. A customer list in Supabase (amount due, scheduled call time, status), mirrored to a Google Sheet for non-technical editing, is polled every five minutes by an n8n scheduler that places due calls through Exotel. The call audio is bridged in real time by a FastAPI media server to OpenAI's Realtime voice API (GA schema), and an AI agent holds the reminder conversation in fluent Hindi — identifying the business, stating the pending amount, handling common replies, and calling a tool to log the outcome as paid, promise-to-pay, no-answer or other. The full transcript is saved to a call_logs table, and a second n8n workflow re-queues any unpaid outcome for a follow-up call about 24 hours later. A test-mode guard prevents calling any real number during development. The system was built and verified end to end with a real Hindi test call; scaling to real customer numbers depends on client-side telephony KYC. Yukti AI builds outbound voice AI for reminders, confirmations, order-status, feedback and lead callbacks across India.

Stop making the same
call a hundred times?

Tell us which call your team makes over and over. We'll show you what an outbound voice AI would handle — and what it would record.

Free audit · No commitment required · Surat, Gujarat