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.
Quick facts
| Use case | Outbound payment-reminder calling — factory / trade collections context |
|---|---|
| What it does | Phones customers with a pending payment, has a spoken conversation in Hindi, logs the outcome, schedules a follow-up |
| Voice | OpenAI Realtime voice API (GA schema) — natural, low-latency, handles interruptions |
| Language | Fluent Hindi for this build; English / Gujarati by changing the instructions |
| Telephony | Exotel outbound calling, with a media stream to the AI bridge |
| Backend | FastAPI media server bridging Exotel audio ↔ OpenAI Realtime |
| Data | Supabase — customers (amount due, call time, status) and call_logs (transcript, outcome) |
| Outcomes logged | paid · 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 view | Customer list mirrored to a Google Sheet for non-technical editing |
| Status | Built & tested end to end — real call placed, AI conversed in fluent Hindi, outcome logged correctly; scale-up pending telephony KYC |
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.
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.
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
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 needs | Robo-dialer (recorded message) | Human call centre | This voice AI |
|---|---|---|---|
| Real two-way conversation | No | Yes | Yes |
| Handle "I already paid" / "call my accountant" | No | Yes | Yes |
| Consistent script & tone every call | Yes | Varies | Yes |
| Structured outcome logged automatically | No | Manual | Yes (tool call) |
| Full transcript saved | No | Rarely | Yes |
| Cost per call at volume | Low | High | Low |
How a due payment becomes a completed call
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.
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.
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.
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.
How it was built
Data & schedulers
The Supabase schema, the Google Sheet mirror, and the call and follow-up scheduler workflows in n8n — verified against real data first.
Telephony
Exotel outbound calling set up, with an app/flow that routes call audio to the voice bridge, and a test-mode safety guard.
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.
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.
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.
Questions about outbound voice AI
Explore more
Voice AI Agents
Inbound and outbound voice agents for reminders, confirmations, support and qualification.
WhatsApp Automation
Automated reminders, updates and follow-ups over WhatsApp — often paired with voice.
Workflow Automation
n8n workflows that schedule, trigger and close the loop on repetitive processes.
Case study: Arjun
A WhatsApp AI sales agent that handles all inbound and qualifies leads with zero manual work.
AI Consulting
Not sure where AI fits? Start with an audit of what your team does that repeats.
All case studies
Every Yukti AI build — jewellery, manufacturing, trading and services.
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.