A field case study from the CreativeMinds Development (cmdev) contact-centre modernisation practice. The client is anonymised — a European retail bank, 350 seats, GDPR-regulated, mid-tier by deposit base, multi-country footprint. Numbers are real; details that would identify the bank have been blunted. The architecture pattern that fell out has since become the cmdev reference for similar mid-market regulated migrations.
The call we kept hearing
For most of 2025 the same call kept landing: "We've been running the contact centre on the same telephony stack since 2014. The vendor's roadmap doesn't include us anymore. Average handle time is creeping up every quarter. We have five agent desktops and nobody trains a new starter in under a month. What does a credible exit look like?"
The client was one of those calls. A mid-sized European retail bank, GDPR-regulated, operating across two countries, 350 contact-centre seats split across loan operations, cards, and collections. The telephony was an on-prem Avaya/Genesys-class stack, twelve years old, in a Frankfurt colo with a DR pair in Amsterdam. Three IVR layers accreted over a decade. Five agent desktops, none integrated. Vendor support renewal in nine months, priced 38% above the previous cycle.
The board had decided to leave. They didn't have a credible plan to land somewhere else without losing customers, breaking compliance, or burning the operations team out. The brief: Amazon Connect, six months, no number loss, all-business-hours rolling cutover, AI overlay where it makes sense, budget the CFO can sign off. This is what shipped.
Key takeaways
- A 350-seat European retail bank migrated from a twelve-year-old on-prem Avaya/Genesys-class stack to Amazon Connect in six months, dual-running through two lines of business with zero number loss and the on-prem rack retired on schedule.
- The architecture is a Connect EU-region landing zone with Direct Connect from the existing colo for number routing during dual-run, an identity bridge to Entra ID for agent SSO, customer-managed KMS keys on every persistent artefact, and Lake Formation governing Contact Lens output for analytics and compliance.
- The AI overlay is Amazon Connect's native AI agent capabilities composed with Lex for natural-language IVR, a Bedrock Knowledge Base over policy and procedure documents, and a Bedrock agent for tier-1 actions (account lookup, balance inquiries, statement requests). Architectural prior art is the AWS samples repo for the Connect–Bedrock voice integration.
- The numbers landed: average handle time fell from 9m 45s to 5m 20s on tier-1 calls (~45% reduction); per-interaction cost fell from €4.20 to €1.35; internal agent NPS rose from -12 to +28; time-to-train new agents fell from four weeks to nine days; compliance audit prep fell from three person-weeks to four hours because the audit chain is now queryable.
- Three things went wrong honestly: the Lex training corpus underestimated regional dialect coverage and needed two retraining cycles; the supervisor handoff design needed three iterations before agents stopped resenting it; Contact Lens cost surprised us at scale and required a sampling policy. The dual-run period was harder than the cutover.
The starting state
Two weeks of discovery, six months of operational data:
- 350 seats — loan ops (60), cards (75), collections (35) in country one; a 180-seat shared overflow pool in country two.
- Three IVR layers, accreted in 2017, 2019, and 2022 by three different system integrators, none still on contract.
- Five agent desktops: Dynamics CRM, a compliance recording client, a KYC lookup tool, a collections workflow tool, and a WhatsApp-for-business console. None integrated; agents alt-tabbed.
- Average handle time: 9m 45s, trending up from 8m 10s in early 2024. Operations called it "tooling friction" without being able to point at a cause.
- Cost per interaction: €4.20 fully loaded.
- New-agent ramp: four weeks before live calls unsupervised. The bank had recently lost two team leaders citing "training fatigue."
- Audit prep: three person-weeks per audit, three to four audits per year. Manually pulling recordings, transcripts, screen shares, and approval logs from five systems and reconciling timestamps in a SharePoint folder.
This is the baseline.
The constraint set
The engineering constraints were tight and non-negotiable:
- GDPR and EU residency. All customer data, recordings, transcripts, AI inference in EU regions. The DPO's signoff depended on it.
- eIDAS for identity. The bank uses eIDAS-compliant identity verification for high-value interactions. No new trust boundary on the customer-identity side.
- No internet egress for sensitive flows. Anything touching balances, KYC, or payment instruction traverses VPC endpoints.
- No number loss. A decade of customer-facing numbers — primary inbound, country freephones, IVR shortcuts in marketing material, partner-routing numbers. Losing any of them surfaces as a regulator complaint.
- All-business-hours rolling cutover. No out-of-hours big-bang. Line by line, with a thirty-minute rollback per segment.
- Six-month wall-clock budget. The vendor renewal date was the forcing function. Slipping meant signing the 38% renewal.
The constraints drove the architecture more than the technology choices did.
The architecture
The architecture we shipped composes Amazon Connect, the existing colo telephony, the bank's identity stack, and a Bedrock AI overlay into a single picture with a clean cutover plane.
The salient pieces:
- Connect EU-region landing zone. Frankfurt primary, with Connect's built-in cross-region EU resilience. Every contact flow, queue, routing profile, and prompt is in Terraform.
- Direct Connect from the existing colo. During dual-run, calls landed on the existing SBC and were SIP-bridged to Connect over a Direct Connect circuit. Numbers could be cut over individually with a thirty-minute rollback guarantee.
- Identity bridge to Entra ID. Agent SSO via SAML federation. Existing conditional-access, device-trust, and step-up MFA continued to govern login. No parallel identity store. eIDAS customer identity stayed on the existing provider via a Connect-callable Lambda.
- Customer-managed KMS. Every persistent artefact — recordings, transcripts, contact records, Contact Lens output — encrypted with the customer's CMK.
- Lake Formation for Contact Lens. Transcripts and analytics land in S3, registered with Lake Formation. Audit prep that used to be three person-weeks runs as a parameterised Athena query.
- No internet egress for sensitive flows. VPC endpoints to Bedrock runtime, Bedrock agent runtime, KMS, S3, and Secrets Manager. Outbound to the bank's CRM and policy systems traverses the existing PrivateLink fabric.
The architecture is not exotic — well-understood AWS primitives applied to a regulated workload, with the cutover plane designed so operations could sleep through it.
The six-month phasing
Sequenced around the cutover plane, not the technology stack. Each month had a single dominant outcome and a single rollback contract.
Month 1 — Discovery and landing zone. Two weeks onsite, two weeks build. Deliverable: a Connect instance, the Direct Connect circuit, the identity bridge, the KMS hierarchy, the Lake Formation catalog skeleton, and a Quicksight dashboard against the legacy baseline. No production traffic.
Month 2 — Contact-flow rebuild and Lex training. We did not lift the three IVR layers. We rebuilt customer-facing flows from call-driver data (top 40 intents = 87% of volume) and trained Lex on twelve months of recorded transcripts the bank had never analysed. The team felt exposed, committing to a new IVR before anything was in production. The mitigation was a recorded-call playback rig: run the new flows against the prior month's calls, walk team leaders through what their customers would have experienced. Three flows were redesigned twice.
Month 3 — Dual-run LoB 1 (loan ops, 60 seats). Smallest, most procedurally bounded, highest tolerance for friction. Ten numbers per day for two weeks, SBC-to-Connect bridge in place. One rollback in week two (a regional number hit an unmapped intent), executed end-to-end in seventeen minutes.
Month 4 — Dual-run LoB 2 (cards and collections, 110 seats). Higher volumes, higher emotional intensity, tighter compliance recording. Cards in weeks one and two, collections in weeks three and four. Cards went smoothly; collections needed three iterations of the supervisor handoff design before team leaders accepted it. The 180-seat country-two pool migrated in parallel with cards.
Month 5 — AI overlay. A Bedrock Knowledge Base over policy documents, regulatory guidance, and the collections playbook, exposed to agents through a Connect-integrated panel. Collections first — highest knowledge-lookup load. AHT moved within ten days. Rolled out to cards and loan ops by end of month.
Month 6 — Final cutover. Last numbers off the colo in week one. The on-prem stack stayed warm-but-idle for two weeks as a deep-rollback net. Week three: SBCs powered down, Direct Connect circuit repurposed, vendor contract not renewed. Rack physically removed in the week of the original contract expiry.
The AI overlay
Scoped narrowly on purpose. Contact centres that try to AI everything in the first cycle ship something the operations team distrusts and the regulator can't audit. We picked three jobs.
Natural-language IVR with Lex. The outer IVR layer is gone. The new front door is a Lex bot trained on the transcript corpus, scoped to the top 40 intents, with explicit fall-through to a human queue on anything ambiguous.
Bedrock Knowledge Base for agent-side retrieval. Built over policy documents, procedure manuals, regulatory guidance, the collections playbook, and product reference. Exposed to agents through a Connect-integrated panel and to the Bedrock agent through a retrieval tool. Architectural prior art: the AWS Connect AI agent documentation and the AWS ML blog walkthrough for Connect, Lex, and Bedrock KBs. We composed the documented pattern against the bank's content.
Bedrock agent for tier-1 actions. Account lookup, balance inquiries, statement requests, basic transaction history — the calls where the agent's job was previously "navigate three systems, copy-paste an account number twice, read the result back." The agent calls back-end APIs through the bank's gateway with the customer's authenticated session token, returns the result to the voice channel or agent app, and writes the full action trace to the Connect contact record. Voice integration follows the AWS samples Connect–Bedrock voice integration pattern; agent definitions and KB ingestion are in Terraform.
What we explicitly did not do: AI-assisted decisioning on credit, collections strategy, fraud triage, or anything regulator-facing. Judgment stays human.
The numbers
We measured before, during, and after. The dashboard is part of the deliverable.
| Metric | Legacy baseline | Post-migration (end of month 8) | Delta |
|---|---|---|---|
| Average handle time (tier-1 calls) | 9m 45s | 5m 20s | -45% |
| Per-interaction cost (fully loaded) | €4.20 | €1.35 | -68% |
| Agent internal NPS (rolling quarterly) | -12 | +28 | +40 pts |
| Time-to-train new agent | 4 weeks | 9 days | -68% |
| Compliance audit prep per audit | 3 person-weeks | ~4 hours | -98% |
| Telephony vendor contract | €1.4M/year, renewing at +38% | Retired | n/a |
Audit prep falling from three person-weeks to four hours is the change that surprised the bank's general counsel the most. The mechanism is unglamorous: every contact record, transcript, Contact Lens analytic, agent action trace, and supervisor decision is in the same Lake Formation catalog, joinable on contact ID, with access governed by the existing data-access policies. The audit team learned to write the queries themselves by the second cycle.
Per-interaction cost falling from €4.20 to €1.35 is dominated by three factors: licence-stack consolidation (five desktops to one), the new-agent ramp improvement, and the retired on-prem and vendor support cost. Connect and Bedrock variable cost is real but small relative to what came off the books.
We are deliberately not claiming credit for the agent-NPS change. Morale started moving in month three, before the AI overlay landed; team leaders attribute most of it to "tooling that doesn't fight me" rather than anything we specifically built. We'll take it.
What went wrong, honestly
Three problems worth naming.
The Lex training corpus underestimated regional dialect coverage. Two countries, materially different linguistic registers — formal vs. informal address, regional vocabulary for financial terms. Collections-specific language did not appear in the corpus because the prior IVR routed those calls to a human queue without recording the opening utterance. We retrained twice. Lesson: if your prior IVR was DTMF-only at the front door, your transcript corpus is not representative of how customers will speak to a natural-language bot.
The supervisor handoff design needed three iterations. First used Connect's standard supervisor-takeover — supervisor joins silently, takes over. Team leaders hated it; no context. Second added a transcript pop-up at handoff. Still hated, because the transcript ran thirty seconds behind the live audio. Third landed: live transcript, AI summary of the call so far, customer account state, and the agent's last three actions in a single panel before joining audio. Lesson: supervisor handoff is a workflow problem, not a telephony problem.
Contact Lens cost surprised us at scale. Default-on, Contact Lens runs analytics on every call. At 350 seats and ~12,000 daily calls, per-call cost compounded faster than the budgeting model assumed. We landed on a sampling policy: 100% of collections calls (regulatory), 100% of supervisor- or AI-flagged calls, 25% of cards and loan-ops random QA, 5% for model evaluation. Compliance signed off; the bill got predictable.
The dual-run period was harder than the cutover. Operations carried the cognitive load of two systems for ten weeks. Budget for it.
The pattern that fell out
By month six, the engagement had become a pattern we now recommend to other mid-market regulated migrations:
- Discover with operational data, not workshops. Two weeks of call-driver and AHT data beats two weeks of stakeholder interviews.
- Build the cutover plane before the contact flows. If you cannot rehearse a rollback, you cannot run cutover in business hours.
- Rebuild the IVR, do not lift it. Twelve years of accreted IVR is a fossil record, not a system.
- Identity bridge before any flow goes live. Agent SSO via the existing identity store on day one. No parallel identity stack.
- AI overlay scoped to retrieval and tier-1 actions. Resist the temptation to AI the judgment work in the first cycle.
- Contact Lens with a sampling policy from day one. Default-on Contact Lens is a budget surprise.
- Lake Formation as the audit chain. Queryable from go-live. The general counsel will notice.
- Dual-run is the hardest month, every time. Budget for it.
This is now the cmdev reference for mid-market regulated contact-centre migrations.
What we'd do differently next time
Train Lex on a synthetic plus historical corpus. The DTMF-front-door blind spot cost us two retraining cycles. A small synthetic corpus written by the operations team — representing how customers will speak to a natural-language bot — would have caught most of the gap on the first pass.
Design the supervisor experience in week one of month two. We treated supervisor handoff as late-stage configuration and paid for it with three iterations under pressure. Next time it lands in the same sprint as the contact-flow rebuild.
Land the sampling policy in the contract. Contact Lens is a tool, not a default; the budget surprise is preventable. The next contract has the sampling design and Contact Lens cost ceiling as signed appendices before production traffic flows.
The pattern works. The numbers are real. The Avaya/Genesys-class rack is gone. The next migration in this shape is already in discovery.
FAQs
Why Amazon Connect over a CCaaS competitor?
The bank's AWS estate already had GDPR residency, KMS hierarchy, and PrivateLink fabric in place — Connect inherits all of that without a new trust boundary. The Bedrock AI overlay composes natively. The variable-cost model fit a contact centre whose call volumes vary by 35% across the year. Other CCaaS platforms would have been credible; the AWS-resident factors decided it.
How did you keep numbers continuous during cutover?
SBC-to-Connect bridging via Direct Connect. Customer-facing numbers stayed registered on the legacy SBC throughout dual-run; the SBC routed individual numbers to Connect via a SIP trunk on a per-number schedule with a thirty-minute rollback contract. Once all numbers were stable, we ported them to Connect direct-inbound as a separate scheduled change.
What did the Bedrock Knowledge Base contain, and how was it kept current?
Policy documents, procedure manuals, the collections playbook, regulatory guidance, product reference, and operations-team FAQs. A scheduled pipeline reads from the bank's document management system daily, with manual trigger for high-priority updates. Changes flow to the KB within 24 hours, priority updates within an hour. Citations surface in the agent app so agents can verify before reading to a customer.
Was there customer-facing disruption during the six months?
Two complaints reached the regulator during dual-run, both about call quality on the SBC-to-Connect bridge in the first week of loan-ops cutover. Both closed without enforcement after the bank shared the rollback contract documentation and the post-incident fix. No number lost, no recording lost, no payment instruction delayed. The quarterly customer-satisfaction survey showed no significant change in the contact-centre score.
What does the six-month timeline assume about AWS maturity?
A mature landing zone, existing PrivateLink fabric, an Entra ID identity story, and a security team that has previously signed off on AWS workloads. The credible greenfield-bank version of this engagement is nine months, not six.
Companion content
- Architecture substrate: Air-Gapped LLM Deployments on AWS Bedrock, Identity-First AWS Migration for Banks
- AI overlay pattern: RAG with Bedrock Knowledge Bases, Building AI Agents on Amazon Bedrock — Foundations
- Cost discipline: Cost Optimization on Amazon Bedrock
- Comparable case study: From Discovery to Production: Building a Bedrock Document Pipeline for a London Insurance Broker
- Reference architecture: Production AI Pipelines on AWS Bedrock
- Architectural prior art: Amazon Connect AI agent documentation, AWS ML blog — generative AI agents in Connect with Lex and Bedrock KBs, AWS samples — Connect–Bedrock agent voice integration
How to engage
If your bank, insurer, or regulated mid-market is sitting on an Avaya/Genesys-class stack with a renewal coming up and a board mandate to leave, this is the shape of work cmdev runs. Two-week discovery against your operational data, a cutover plane and a six-to-nine month phased plan, fixed-fee build with co-managed transition into business-as-usual. We deploy inside your AWS account. Reach us at /contact/.
CreativeMinds Development (cmdev) ships production AI and cloud migrations for regulated enterprises across Africa and the EU. Case studies are anonymised composites drawn from live engagements; numbers are real.
