Armakuni Contact us
← All case studies

A ten-second question took three minutes.
Now an AI agent answers it during the call.

A U.S. cinema chain ran its contact center on three systems that didn't talk to each other, with no self-service and a migration failing a week before go-live. We rescued the launch in that week. Then we put AI agents on the phone and in chat that check eligibility, issue refunds and, when a person is needed, hand over the whole story.

Before

One customer question meant three systems and three minutes.

Opening weekend was a stress test.

After
30%faster call handling, as reported
1 weekfrom joining to a launch that landed on time
3voice AI agents in production

One customer question meant three systems and three minutes

The chain takes thousands of customer contacts a week, across onshore and offshore call centers. Most of them are simple: is my refund through, how many points do I have, does the 9pm IMAX still have seats.

None of them were simple to answer. The CRM, the ticketing system and the loyalty program had no connection to each other, so a person answering a points question had to open all three while the customer waited. A ten-second question was taking three minutes. Some loyalty answers came from exports that were already hours old, so the answer could be wrong as well as slow.

Every refund check, ticket lookup, gift card balance and showtime query went to a person, one call at a time. The only way to serve more customers was to hire more people.

Opening weekend was a stress test

When a big film opens, calls can double overnight. The contact center's only answer was to recruit and train more people before the queues cleared, which meant a permanent cost for a temporary spike, and customers waiting anyway.

Supervisors couldn't see it coming. There were no live dashboards and no view of how calls moved through the queues, so they learned about a bottleneck when customers had already felt it. Coaching ran on a small sample of calls, reviewed days later.

The new platform was failing

The chain had started moving to Amazon Connect, and the move was in trouble. A week before go-live, the contact flows were broken, the integrations were failing and the Lambda functions behind them had never worked in production. A failed launch would have set the whole program back by months.

The chain brought us in with a week left before go-live.

How we built it

6 decisions, in the order a call meets them. Each one says what we did and why, with what it did drawn beside it.

  1. Before launch
  2. The caller speaks
  3. A refund is asked for
  4. In chat
  5. A person takes over
  6. After the call

With a week left, we rebuilt the contact flows instead of patching them

1 weekto rescue the launch4problems fixed at the cause
Built withConnectServiceNowLambdaCloudWatch
A week before go-liveLaunched on time PatchedRebuiltBroken routing Contact flows rebuiltCalls, no context ServiceNow link fixedSilent failures Lambdas rewrittenNo health view CloudWatch alerts
The engineering

With a week to go, the tempting move is to patch whatever is failing loudest. We rebuilt the Amazon Connect contact flows from the ground up instead, including the routes and handoffs that decide where each request goes, because routing was broken across the whole deployment and patches would have left the next failure hidden.

Four problems threatened the launch. We fixed each one at its cause.

  • The routing and queue logic was broken, so we rebuilt the contact flows. From the first hour, customers reached the right place and people got the right calls.
  • Escalated calls were arriving with no context, so we repaired the Amazon Connect–ServiceNow integration all the way through, because the receiving team needed the conversation history before taking over.
  • Integration failures were happening silently. We rewrote the AWS Lambda functions behind live lookups, routing decisions and CRM updates, then tested them under production conditions.
  • There was no view of system health. We set up Amazon CloudWatch monitoring, structured logs and alerts, which meant the operations team could see a failure as it happened.

The contact center launched on time. The work continued afterward as scoped pieces of work for voice AI agents, chat and observability, all on the customer's live systems. Every AI capability that came later stands on that week, because an AI agent running on a broken contact flow only reaches the wrong place faster.

Callers say what they need, and the AI agent talks back

3voice AI agents: refunds, showtimes, loyalty
Built withConnectNova SonicChime SDKLambda
“Press 3 for showtimes”just say it CallerConnectChime SDKSIP service Nova Sonic speech → text → speechno text step MCP serverTheir APIs, over VPN the systems on their own line, apart from the speech

“Kudos to Armakuni for demonstrating the speed, precision, and partnership needed to turn a high-speed challenge into a success story.”

Senior Manager, Application Integration, a big cinema chain in North America
The engineering

A better menu, something like 'press 3 for showtimes', would have been the easy fix. We built three voice AI agents on Amazon Connect and Amazon Nova Sonic, because a customer should just be able to say what they need.

Nova Sonic handles speech-to-speech conversation as one continuous stream, with no text step in between. That keeps the tone of the caller's voice, lets it notice frustration and adapt, and lets it deal with interruptions and follow-up questions the way a person would.

We built the voice side on a custom container-based architecture that keeps call transport and business-system access apart from speech processing:

  • Amazon Connect manages the contact flows, queues and routing, and passes the call into an Amazon Chime SDK session. The contact ID links that session to the contact-center interaction.
  • A containerized SIP service connects the voice session to Nova Sonic, with an Application Load Balancer handling the service connections.
  • An MCP server in a private subnet gives the AI agents their business capabilities. VPC and VPN connectivity link it to the customer's protected APIs.
  • Lambda functions and session state record call information and outcomes, keeping each business action tied to its call.

Each AI agent has one job, and a defined set of requests:

  • The refund AI agent checks eligibility against live systems and issues qualifying refunds automatically, during the call. It also gives refund status and gift card balances.
  • The showtime AI agent gives current schedules, theater details and seat formats, and sends an SMS follow-up when that helps.
  • The loyalty AI agent gives rewards, tier status and account information from live APIs, replacing the stale exports.

The function that issues refunds is kept apart from the one that looks them up

3separate functions
Built withLambdaDynamoDBConnectServiceNow
“Can I get a refund?” 1 Refund Lookupreads only 2 Refund Issuemoves money Transfer Callto a person just a question its own permission
The engineering

A refund is the one request where the AI agent moves money, so its design gets the most care. The workflow checks live eligibility before issuing anything, and the integration is split into separate functions for looking up, issuing and handing over:

  • Refund Lookup gets what the request needs from the on-premises refund service.
  • Refund Issue calls the service to carry out the refund.
  • Both Lambda functions run in a private subnet and reach the on-premises network over VPN.
  • Transfer Call is a separate path for handing the call to a person, and Amazon DynamoDB records call-action state.

Keeping the lookup separate from the issue means the function that moves money has its own permission, can be tested on its own, and never runs by accident while the AI agent is only answering a question. Anything the AI agent can't resolve follows the transfer path into Amazon Connect, with ServiceNow supplying the conversation so far.

The chat AI agent gets its rules from documents and checks its facts against live systems

Livefacts from the systems, replacing batch exports
Built withBedrockAPI GatewayLambdaConnectOpenSearch
Refund rulesthe rule, by retrieval liveYour bookingfrom ticketing, live batch export, hours old Can I get a refund? the rule, explainedyour booking, live
The engineering

The chat AI agent runs on Amazon Bedrock and covers refund eligibility, loyalty lookups, showtimes, theater information and account questions. A chat session starts like this: the website sends a request carrying the user and page context; Amazon API Gateway invokes Lambda, which starts the chat in Amazon Connect and returns a signed chat URL; and a containerized chat service runs the conversation, reaching business capabilities through an MCP server.

The decision that matters is where each kind of answer comes from:

  • Policy rules come from a retrieval-augmented generation pipeline on Amazon OpenSearch, which draws on curated refund eligibility rules, loyalty terms and service content.
  • The facts come straight from the systems themselves. Booking information, refund status and rewards balances come live from the CRM, ticketing and loyalty APIs through Lambda, replacing batch exports.
  • Some questions need both. 'Can I get a refund?' needs the policy and the customer's booking together, and the chat AI agent combines them.
  • Multi-turn conversation management keeps the earlier exchanges, so a follow-up question makes sense.

This matters because a wrong answer on refund terms or loyalty rules carries a real business and regulatory cost, so the model explains the rule while the systems supply the balance.

When a person takes over, the conversation comes with the customer

Transcript, intent, sentimenthanded to the person who takes over
Built withDynamoDBElastiCacheServiceNow
ChatVoiceA person context kept ServiceNowat the handover TranscriptIntentSentiment
The engineering

The handoff to a person is where most AI contact centers fall apart, because the customer has to explain everything again to someone who knows nothing. We carried the context through every change of channel:

  • Amazon DynamoDB holds call state, routing data and conversation persistence.
  • Amazon ElastiCache keeps the session context across channels, including a move from chat to voice.
  • On escalation, ServiceNow receives the transcript, the detected intent and the sentiment, so the person taking over reads the conversation before saying hello.

Every call gets transcribed and scored the same day

Everycall evaluatedThe same daycoaching
Built withContact LensConnectCloudWatch
A small sample, by handdays later Every call transcribed, evaluatedthe same day Coaching on this morning’s calls
The engineering

We built the observability around the conversations as well as the systems:

  • Contact Lens for Amazon Connect supplies transcription, sentiment analysis and intent classification on every call.
  • Automated call evaluation covers every call, well beyond the small sample supervisors could listen to by hand.
  • CloudWatch dashboards show queue depth, handling times, bottlenecks and escalation patterns as they happen.

Supervisors use the conversation record and the evaluations to find the calls that need attention and coach their people on this morning's calls rather than last week's.

One refund call, from start to finish

  1. The customer calls and says what they want. There's no menu, and Amazon Connect routes the call into a Chime SDK session, linked by its contact ID.
  2. Nova Sonic listens and talks. The SIP service carries the audio, and the refund AI agent works out the request, including the follow-up question halfway through.
  3. It looks before it acts. Refund Lookup reaches the on-premises refund service over VPN and checks eligibility against live data.
  4. It issues the refund, if the rules allow. Refund Issue carries it out, and DynamoDB records the action against the call.
  5. If it can't, a person takes over with the story. Transfer Call hands the call to Amazon Connect, and ServiceNow already holds the transcript, intent and sentiment.
  6. The call is scored that day. Contact Lens transcribes and evaluates it, and a supervisor can coach on it the same day.

What we'd tell another CTO

1Fix the platform before adding AI to it. The week spent rebuilding contact flows and Lambda functions is why the AI agents had something solid to run on.
2Keep the function that moves money apart from the one that reads. A refund lookup and a refund issue have different risks, so they get different permissions and different tests.
3Judge an AI contact center on its handoffs. If the person who picks up has to start again, the customer has had a worse call than before any of this was built.

What else changed

  • Three chat workflows running in production on their own, answering from live data at any hour.
  • Every call flow visible: queues, bottlenecks and handling times, for the first time.
  • Coaching the same day, where it used to take days.
  • Volume spikes absorbed by the platform rather than by emergency hiring, because routine requests no longer wait for a person.
  • Four of the five pieces of work had AWS funding.

What comes next

The next phase is in progress. It moves the voice AI agents from custom containers into Amazon Connect's native Conversational AI builder with Amazon Bedrock AgentCore. The aims:

  • Keep every voice capability already in production, with less custom infrastructure to maintain.
  • Expose the MCP tools through AgentCore Gateway as one governed integration layer.
  • Reuse that access to CRM, ticketing and loyalty systems for every future AI agent, so a new capability doesn't need its own integrations. Proactive outreach, predictive routing, compliance monitoring and live help for the people on calls are next on the same stack.

How we'd do it today

This project came before our current offers. Here's how we'd approach the same work now.

Today the first AI agent would be signed as a Guaranteed AI Outcome, against a number the chain already tracks, such as contacts finished without a person, with our forward deployed engineers (FDEs) inside the business until it's live in 90 days or less, and a go-or-stop decision at week 4. Under AK AI Factory, the refund rules and loyalty terms would be written down and signed off by the chain's own experts before any AI agent used them, and each AI agent would get its own identity, so the refund AI agent can issue a refund and the showtime AI agent can't. Because Amazon Connect gives a tool 30 seconds to answer, the slow on-premises refund service would get a faster path, and every change would replay a golden set of real past conversations before it went live.

On the coaching side, Sonic would score every call from 0 to 100, from eight ratings, and pick the calls worth a coaching conversation each night. ComplianceGen would turn the chain's compliance documents into cited rules, and VoiceBot would answer after hours from the chain's own documents and book the callback for the morning.

Have a problem like this one?

A free workshop: a few hours with the architects who'd do the work, on your own systems. No cost.

Book a free workshop