AI-Powered Voice Agents for Proactive Hotel Payment Verification
perk · Tech · 2024 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.4 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Business travel payment operations
Perk needed to prevent travelers from arriving at hotels whose virtual credit cards had not been charged, a rare but highly painful failure that required thousands of proactive hotel calls every week.
Constraints:
- hotel payment failures are sporadic but can ruin the check-in experience
- the system must call hotels less than 48 hours before check-in when the VCC has not been charged
- agents must navigate IVRs, confirm reservations, discuss payment, and stop when appropriate
- false positives are dangerous because unpaid hotels could be left unresolved
- voice prompts and evaluation need localization for languages such as German
Architecture
Perk built a voice-agent workflow that began as a Make.com prototype and went to production before migration into internal infrastructure. The system reads Zendesk tickets that already contain hotel-call instructions, extracts phone number, hotel, guest, and payment-form context, and launches calls through voice AI integrations. The team split the call into staged prompts for IVR navigation, booking confirmation, and payment handling, with context carried between stages. Calls are transcribed, classified by an LLM against success/failure criteria, reviewed in spreadsheets and daily failure sessions, and iterated through prompt and evaluation changes.
Diagram confidence: reconstructed (reconstructed from prose).
flowchart LR payment-risk-detector["payment-risk-detector"] --> zendesk-ticket-source["zendesk-ticket-source"] zendesk-ticket-source["zendesk-ticket-source"] --> make-workflow-orchestrator["make-workflow-orchestrator"] make-workflow-orchestrator["make-workflow-orchestrator"] --> voice-call-agent["voice-call-agent"] make-workflow-orchestrator["make-workflow-orchestrator"] --> call-review-store["call-review-store"] voice-call-agent["voice-call-agent"] --> ivr-stage-agent["ivr-stage-agent"] voice-call-agent["voice-call-agent"] --> booking-confirmation-stage["booking-confirmation-stage"] voice-call-agent["voice-call-agent"] --> payment-stage-agent["payment-stage-agent"] voice-call-agent["voice-call-agent"] --> call-transcript-capture["call-transcript-capture"] ivr-stage-agent["ivr-stage-agent"] --> booking-confirmation-stage["booking-confirmation-stage"] booking-confirmation-stage["booking-confirmation-stage"] --> payment-stage-agent["payment-stage-agent"] payment-stage-agent["payment-stage-agent"] --> call-transcript-capture["call-transcript-capture"] call-transcript-capture["call-transcript-capture"] --> llm-call-classifier["llm-call-classifier"] llm-call-classifier["llm-call-classifier"] --> call-review-store["call-review-store"] call-review-store["call-review-store"] --> human-ops-review["human-ops-review"]
Components
| Component | Role | Interacts with |
|---|---|---|
payment-risk-detector |
Identifies upcoming check-ins where the virtual credit card has not yet been charged. | zendesk-ticket-source |
zendesk-ticket-source |
Existing operational ticket queue containing hotel phone number, guest, hotel, and payment-form context. | payment-risk-detector, make-workflow-orchestrator |
make-workflow-orchestrator |
No-code production workflow that reads tickets, controls rollout volume, launches calls, and stores results. | zendesk-ticket-source, voice-call-agent, call-review-store |
voice-call-agent |
AI voice caller that executes staged hotel conversations about reservation and VCC charging. | ivr-stage-agent, booking-confirmation-stage, payment-stage-agent, call-transcript-capture |
ivr-stage-agent |
Prompt stage focused on getting through hotel IVR menus to the front desk. | voice-call-agent, booking-confirmation-stage |
booking-confirmation-stage |
Prompt stage that verifies the hotel and reservation before discussing payment. | voice-call-agent, payment-stage-agent |
payment-stage-agent |
Prompt stage that asks whether the VCC was received and requests charging now, at check-in, or at checkout as allowed. | voice-call-agent, call-transcript-capture |
call-transcript-capture |
Records call transcripts for classification, review, and prompt iteration. | voice-call-agent, llm-call-classifier |
llm-call-classifier |
LLM judge that classifies call success/failure and scores axes such as politeness and frustration. | call-transcript-capture, call-review-store |
call-review-store |
Spreadsheet and review workflow where humans inspect call transcripts, mark outcomes, and identify failure reasons. | make-workflow-orchestrator, llm-call-classifier, human-ops-review |
human-ops-review |
Customer care/product/engineering review loop for failed calls, prompt changes, and rollout confidence. | call-review-store |
Data flow
Perk detects reservations checking in within 48 hours whose virtual credit card has not been charged. Zendesk tickets supply call data to the Make workflow. The voice agent calls the hotel, handles IVR, confirms the booking, asks whether the VCC was received, requests immediate or check-in/check-out charging, and ends or escalates based on the response. The transcript is saved, an LLM classifies success/failure and quality axes, and the team reviews failures to improve prompts, evals, and rollout controls.
4 supporting quotes
Why this architecture
Perk used the existing Zendesk call-ticket queue and Make.com so the team could prototype and scale without touching backend code. The conversation was split into stages because one broad prompt behaved too aggressively and failed to handle IVR, reservation confirmation, and payment nuance. LLM transcript classification and human listening gave the team confidence to roll out without trusting a black-box success label.
4 supporting quotes
Models used: OpenAI · LLM · text-to-speech · speech-to-text · Make.com · Zendesk · Twilio · ElevenLabs · Deepgram
Scale
- Perk estimates shadow work at seven hours per week per person.“seven hours per week per person is lost to doing these kind of menial tasks”transcript, stated
- Perk was making around 10,000 proactive hotel calls per week.“We were making around into the 10,000 calls per week.”transcript, stated
- The first Make.com voice prototype took about one to one-and-a-half weeks.“in a week or a week and a house we had a working thing that uh will call hotels”transcript, stated
- The production system now makes tens of thousands of calls every week.“now we are at a much bigger scale making in the tens of thousands of calls every single week.”transcript, stated
- The system moved to large-scale production around the beginning of Q3.
"I have something actually in my Theresa Torres opportunity solution tree that is still waiting there that I haven't yet given to Philillip but I think we we really moved this into production like in a big scale production I'm not sure how long ago but in Q3 right in the
yes beginning of Q3 or" — transcript, stated
Alternatives considered (roads not taken)
Continue manual proactive hotel calls
Rejected because: The team had to call every hotel because they could not reliably predict which VCC would fail, creating around 10,000 calls per week.
Backend-integrated prototype first
Rejected because: Touching the backend would have slowed validation, while Zendesk tickets already contained enough call data.
Single mission-focused voice prompt
Rejected because: It became too verbose and pushy, lacked offramps, and kept pressing hotels even when they could not charge the card.
Patterns
prompt-chaining (conversation design)
The call is divided into IVR, booking-confirmation, and payment stages rather than handled by one broad prompt.
llm-as-judge (evaluation)
An LLM evaluates call transcripts for success/failure and qualitative axes like politeness or frustration.
eval-driven-development (quality)
The team listens to failed calls, classifies outcomes, iterates evals, and uses daily review to guide prompt changes.
human-in-the-loop-gate (operations)
Humans review call transcripts and failed outcomes before trusting changes, especially because false positives can leave travelers stranded.
transcript, statedcuz then we'll again be leaving guests with unpaid hotels.”
Tradeoffs
Ship the Make.com workflow to production.
Chose Fast no-code production rollout with controlled ticket volume over Waiting for a fully internal backend implementation.
Rationale: The Make workflow already worked, could read Zendesk tickets, and let the team control rollout volume while they migrated later.
Start with strict success criteria.
Chose Low false-positive tolerance over Broadly accepting ambiguous hotel responses as success.
Rationale: False positives would leave guests arriving to unpaid hotels, so the team initially accepted more false failures and relaxed criteria through listening.
Use AI voice for a narrow high-volume operational call.
Chose Automated proactive hotel payment verification over Broad general customer-care automation.
Rationale: The VCC call had a clear mission, high volume, and existing structured ticket data, making it a good first production voice use case.
Gotchas (what bit them)
A mission-at-all-costs voice prompt behaves badly with real hotel staff.
Root cause: The first prompt lacked offramps and kept trying to complete the payment mission even when the hotel could not comply.
Resolution: Add staged prompts, explicit handoff/offramp behavior, and failure scenario-specific prompt handling.
Voice formatting matters for operational identifiers.
Root cause: Booking reference numbers and words like zero/O can be unintelligible if text-to-speech reads them naturally.
Resolution: Use text-to-speech markup, spacing, and pronunciation tweaks learned from call review.
English prompts degraded German-call results.
Root cause: The LLM was effectively translating English to German and back, losing expressions and accuracy.
Resolution: Write prompts in the native target language, with help from a German-speaking data engineer.
Evaluation
Perk evaluates the system from transcripts with LLM classifiers, strict success criteria agreed with accommodations teams, qualitative scores for politeness/frustration, Google-spreadsheet trace review, daily failure reviews, ground-truth human listening, and localized prompt checks after changes.
Metrics: successful card charge now · charge at check-in · charge at check-out · false positives · politeness · frustration · IVR failures · booking-confirmation failures · language-specific quality
4 supporting quotes
Outcomes
- Perk automated proactive hotel VCC verification calls that were previously handled by people.
- The Make.com prototype became the initial production product and is being migrated into Perk infrastructure.
- The system now operates at tens of thousands of calls per week.
- Prompt staging and LLM evaluation improved reliability enough for large-scale rollout.
- German prompt localization improved results in German-language calls.
Perk moved from around 10,000 proactive manual calls per week to tens of thousands of AI-assisted calls weekly, with rollout controlled through ticket volume.