AWS for Industries

Energy Virtual Assistant: transforming utility customer service with AWS Generative AI

In an era of increasing digital transformation, electric utility providers are facing unprecedented challenges in meeting customer expectations for quick, efficient, and accessible service. Utility contact centers in particular face unique challenges in delivering effective customer service. Traditional Interactive Voice Response (IVR) systems can effectively handle direct, well-defined requests through touch-tone or basic voice commands, such as reporting an outage or checking a customer’s account balance. However, they struggle with complex, ambiguous, and multi-turn customer interactions, defaulting to human agents and creating bottlenecks in service delivery. This limitation becomes particularly acute during severe weather events or widespread outages, when call volumes can surge dramatically within minutes, often overwhelming even well-staffed contact centers. The challenge is further exacerbated by the need to integrate with multiple backend systems, such as Customer Information Systems (CIS), Billing Information System (BIS), Meter Data Management Systems (MDMS), Outage Management Systems (OMS), and various knowledge bases to resolve customer inquiries. All of this leads to longer handle times and the increased potential for customer frustration.

Modern utility contact centers must efficiently handle what we refer to as the “ABCDs” of utility customer service. Each of these core functions needs access to different systems and specific domain knowledge:

  • Account management: Opening, closing, retrieving, and updating customer account information; often needing interaction with a CIS.
  • Billing: Retrieving account balances, billing history, and processing payments typically — often needing interaction with a BIS.
  • Consumption: Analyzing and explaining energy usage patterns from smart meter data — often needing interaction with a MDMS.
  • Dispatch: Creating service requests, reporting outages, checking request statuses, and scheduling maintenance — often needing interaction with an OMS.

To effectively manage these functions, customer service representatives need extensive training and experience. They must understand complex rate structures, interpret energy consumption data, explain billing calculations, and navigate intricate policies and procedures. This depth of knowledge takes months to develop, leading to long onboarding periods for new staff and challenges in maintaining consistent service quality across all customer interactions.

The limitations of traditional IVR systems and the complexity of utility operations create an opportunity for more advanced artificial intelligence (AI)-driven solutions. Generative AI — with its ability to understand natural language, process complex queries, and generate human-like responses — offers a promising approach to these challenges. Large language models (LLMs) allow us to create virtual assistants capable of understanding customer intent more accurately, handling a wider range of inquiries without human intervention, and providing more nuanced and context-aware responses.

To address these challenges, we developed the Energy Virtual Assistant, which represents a sophisticated approach to customer service that combines generative AI with agentic capabilities that support intelligent decision making through chain-of-thought reasoning and integration with existing utility energy systems and data platforms. This solution combines the power of LLMs with the specific domain knowledge and system integrations needed in utility customer service.

In this post, we discuss the benefits of generative AI for customer service, walk through the solution architecture, provide step-by-step implementation guidance, and share best practices for deploying this solution in your utility’s contact center operations.

Benefits of generative AI for customer service

Generative AI represents a quantum leap in customer service technology, offering a comprehensive suite of capabilities that fundamentally reshape how organizations interact with their customers.

Personalization at scale

Unlike traditional systems, generative AI can craft responses that aren’t just accurate, but tailored to individual communication styles, preferences, and historical interactions. This approach transforms generic customer service into a nuanced, individualized engagement that makes customers feel truly understood.

Emotional intelligence and sentiment analysis

Advanced sentiment analysis allows generative AI can detect subtle nuances in customer communications, dynamically adjusting its tone and approach based on the customer’s emotional state. Whether a customer is expressing frustration, confusion, or satisfaction, the system can provide empathetic, contextually appropriate responses that mirror human-like understanding.

Multilingual and cultural competence

Breaking down language barriers, generative AI offers robust multilingual support with near-native fluency across numerous languages. More than mere translation, this capability makes sure of culturally appropriate communication, understanding contextual and linguistic subtleties that traditional translation tools miss. This creates a truly global customer service experience that feels local and personalized.

Unified data integration

Generative AI acts as a sophisticated data orchestrator, seamlessly integrating information from across organizational silos. Creating a comprehensive, unified view of customer data makes sure of consistent, high-quality interactions that perfectly adhere to brand guidelines. This holistic approach eliminates fragmented customer experiences and provides support teams with a 360-degree view of customer needs.

Operational efficiency and cost optimization

Generative AI can also drive remarkable cost efficiencies through significantly reduced handle times, higher first-contact resolution rates, comprehensive automation of routine inquiries, and the elimination of overtime costs through 24/7 availability.

Unparalleled scalability

Utility customer service platforms struggle with volume fluctuations, most notably during distress situations such as widespread outages, storm response, and wildfires. Contact centers using generative AI can instantly adjust capacity during demand surges, maintaining consistent service quality whether handling ten or ten thousand simultaneous interactions. This elasticity makes sure of reliable customer support under any circumstances.

Continuous availability

Perhaps most importantly, generative AI enables around-the-clock customer service without the costs associated with traditional 24/7 staffing models. Customers gain instant access to support at any time, dramatically improving service accessibility and customer satisfaction.

Solution overview

The Energy Virtual Assistant is designed to support common utility customer service use cases such as reporting outages, checking consumption analytics, updating account information, and processing bill payments. Customers engage with the Energy Virtual Assistant over a voice channel and using chain-of-thought reasoning combined with agentic integrations into enterprise systems. The virtual assistant uses these capabilities to automatically responds to and processes customer requests.

The Energy Virtual Assistant is built using a combination of Amazon Web Services (AWS) services, such as the following:

  • Amazon Connect is a cloud-based contact center solution that enables businesses to provide customer service at any scale. It supports omni-channel communication, skills-based routing, and AI powered-features such as conversational IVR capabilities. Amazon Connect serves as the entry point for customers seeking to engage with the Energy Virtual Assistant over a voice channel.
  • Amazon Lex is a fully managed AI service for building conversational interfaces (chatbots) using voice and text. It uses the same technology that powers Amazon Alexa. Amazon Lex serves as the entry point for the Energy Virtual Assistant, providing a conversational interface with natural language understanding.
  • Amazon Bedrock is a fully managed service that provides access to high-performing foundation models (FMs) through a unified API. Amazon Bedrock provides the generative AI capabilities that power the Energy Virtual Assistant.
  • Agents for Amazon Bedrock is a capability that enables users to create AI agents that can automatically break down and execute complex business tasks by orchestrating FMs, knowledge bases, and APIs. The Energy Virtual Assistant is an Amazon Bedrock agent that uses chain-of-thought reasoning and energy system integrations to service customer requests.
  • AWS Lambda is a serverless compute service that executes code in response to events. It plays a crucial role in Agents for Amazon Bedrock by providing the compute layer for executing API integrations to the backend energy systems.
  • Amazon DynamoDB is a fully managed, serverless NoSQL database service that provides fast and predictable performance with seamless scalability. Here we are using DynamoDB as a stand-in for energy Account, Billing, and Outage Management systems.
  • Amazon Timestream is a purpose-built, fully managed time series database service designed for collecting, storing, and analyzing time-series data. Here we are using Timestream to store energy consumption data, commonly referred to as an MDMS.
  • Guardrails for Amazon Bedrock is a feature that allows us to implement safety controls such as content filtering, denied topics, word filters, and sensitive information masking to protect the interaction between the customer and the FM.

Before moving into the solution architecture, we should examine how this solution transforms common utility customer service scenarios. Consider a customer calling about a high bill. Traditionally, this would necessitate that an agent check multiple systems: billing history, meter readings, rate schedules, and possibly weather data. Our solution allows a virtual assistant to gather and analyze this information automatically, providing contextualized explanations and recommendations to the customer with no human intervention necessary.

Solution architecture

The following solution architecture provides an overview of the components used in this solution, and for illustrative purposes we review them here.

Figure 1: Solution architectureFigure 1: Solution architecture

1. Energy customers engage with the utility provider with a variety of common customer inquiries over a voice channel. Although this solution is designed to service customer requests over voice, extending this solution to more modalities such as chat or email is also possible.

2. Customers dial in to Amazon Connect and are immediately brought into an Amazon Connect contact flow.

3. An Amazon Lex bot is embedded in the Amazon Connect flow and serves as a speech-to-text interface for customers seeking to engage with the Energy Virtual Assistant.

4. The Energy Virtual Assistant is backed by an Amazon Bedrock agent, which receives, processes, and responds to customer requests.

5. The Amazon Bedrock agent takes the customer’s conversation history, available actions, and the current request, and sends this to an FM for processing.

6. The FM uses chain-of-thought reasoning to determine the appropriate steps to service the customer’s request.

7. Action groups represent the available actions and integrations that the agent can invoke to service the customer’s request. Configured actions in this solution include:

  • Account Action Group: performs actions such as opening new accounts, retrieving and updating account information, and closing accounts.
  • Billing Action Group: performs actions such as retrieving a customer’s account balance and billing history, and processing customer payments.
  • Ticketing Action Group: performs actions such as creating service tickets, checking ticket status, retrieving all tickets for a given account, reporting outages, and scheduling maintenance.
  • Consumption Action Group: used to retrieve energy consumption information, provide cost estimates based on energy consumption, and explain energy consumption patterns.
  • Date/Time Action Group: used to determine the current date and time and facilitates range-based requests by the FM in service of a customer’s request.

8. When the appropriate actions have been executed, an Amazon Bedrock FM is used to process and prepare a final response to the customer.

Amazon Connect call flow

The following call flow shows the various steps taken when the customer engages with Amazon Connect over a voice channel, and for illustrative purposes we go through them here.

Figure 2 Amazon Connect call flowFigure 2: Amazon Connect call flow

1. Upon entry into the Amazon Connect flow, the Enable Logging block is used to enable flow logs, which are stored in Amazon CloudWatch. Flow logs are helpful to troubleshoot the specific steps taken for a given customer call.

2. The Set Language block is used to set the text-to-speech (TTS) language and voice used for the contact flow.

3. The Main Menu block is used to provide an initial greeting to the caller and is also where the Amazon Lex bot (and its configured intents) is presented to the customer. Specific intents used in this call flow include:

  • EnergyVirtualAgentIntent: represents the Amazon Bedrock Energy Virtual Agent and is used to service all customer requests such as reporting outages, checking consumption analytics, updating account information, and processing bill payments. This intent is configured with utterances matching various requests customers can make to the Amazon Bedrock agent.
  • SpeakToAgentIntent: used to route callers to a live contact center agent. This intent is configured with utterances matching customers’ phrases signaling that they wish to speak with a live agent.
  • GoodbyeIntent: used to conclude the caller’s interaction with the contact center. This intent is configured with utterances matching customer phrases signaling the end of the call.

4. The Set Queue block is used to specify the queue callers are placed into if they wish to speak with a live agent.

5. The Transfer to Queue block is used to route callers to a live agent queue.

6. The Queue at Capacity block is used to inform customers that the queue is at capacity through a text-to-speech prompt.

7. The Goodbye Prompt block is used to provide a closing greeting to customers through a text-to-speech prompt.

8. The Error Prompt block is used to inform customers that something in the flow went wrong through a text-to-speech prompt.

Prerequisites

Before you proceed, make sure that within your environment you have the following:

Solution deployment

Deployment of this solution is comprised of the following steps:

  1. Creation of the CloudFormation stack, which deploys all base components.
  2. Configuration of the EnergyVirtualAgent Lex Bot intent, which at the time of this writing does not support CloudFormation or API-driven creation.
  3. Association of the Amazon Connect phone number to the Amazon Connect flow.

During the deployment process we automate the creation of fictitious customer data in the Account, Billing, and Consumption systems. Specifically, we create the following datasets:

  • AccountData: five fictitious customers, such as AccountNumber, CustomerName, EmailAddress, MeterNumber, PhoneNumber, PremiseNumber, RateCode, and Service Address.
  • BillingData: twelve months of billing data for each customer, such as BillingDate, BillingStatus, DueDate, EnergyCharge, KWhConsumption, ServiceCharge, and TotalAmount.
  • IntervalData: three months of 15-minute interval consumption for each meter, such as the L1-L2-L3 Voltage and Current, InstantaneousPower, and Frequency.

Create the CloudFormation stack

Before you begin, clone the AWS Samples Energy Virtual Assistant GitHub repository to your local machine, because we are using the YAML CloudFormation file for the first part of the deployment process.

  1. Navigate to the AWS CloudFormation console and choose Create stack > With new resources (standard).
  2. For Prerequisite – Prepare template, choose Choose an existing template and choose Upload a template file.
  3. Choose Choose file, and from the cloned repository navigate to the \deployment folder and upload the cloudformation_template.yaml template file.
  4. Choose Next to proceed to the Specify stack details screen.
  5. For Stack name, enter EnergyVirtualAssistant.
  6. For ConnectInstanceArn, enter the Amazon Resource Name (ARN) of your Amazon Connect instance.
  7. For ConnectQueueArn, enter the ARN of your Amazon Connect BasicQueue queue.
  8. Choose Next to proceed to the Configure stack options screen.
  9. Choose the checkbox to acknowledge that AWS CloudFormation might create IAM resources with custom names.
  10. Choose Next to proceed to the Review and create screen.
  11. Review all settings and choose Submit to create the CloudFormation stack.

After you’ve entered all details, launch the stack and wait until the stack has reached CREATE_COMPLETE status before proceeding.

Configure Lex Bot

When the CloudFormation stack deployment has completed you can proceed to configuring the Amazon Bedrock agent intent on the Amazon Lex bot.

We use the EnergyVirtualAgentId and EnergyVirtualAgentAliasId outputs from the CloudFormation stack for this portion of the deployment.

  1. Navigate to the Amazon Lex console and choose the EnergyVirtualAgentLexBot created for you.
  2. Under Draft version and English (US), choose Intents.
  3. Choose the Add intent drop-down and choose Use built-in intent.
  4. Choose AMAZON.BedrockAgentIntent – GenAI feature for the built-in intent type.
  5. For Intent name, enter EnergyVirtualAgentIntent and choose Add.
  6. For Description, enter Intent to handle customer energy requests.
  7. For Bedrock Agent ID, enter the EnergyVirtualAgentId from the CloudFormation outputs.
  8. For Agent Alias ID, enter the EnergyVirtualAgentAliasId from the CloudFormation outputs.
  9. Navigate to the \deployment folder in the cloned repository and open the agent_intent_utterances.md file.
  10. Under Sample utterances, choose Plain text and paste in the utterances from the open file.
  11. Choose Save intent at the bottom of the screen.
  12. Choose Build in the upper-right corner of the screen to apply the changes.
  13. Navigate to the Bot versions screen and choose Create version.
  14. Choose Create to create a new bot version and wait until this is complete.
  15. Under Deployment, choose Aliases and choose the PROD alias.
  16. Choose Associate version with alias and choose the new version just created.
  17. Choose Associate when complete.

Associate phone number

You’re now ready to associate the previously claimed Amazon Connect phone number with the contact flow created as part of the CloudFormation stack deployment.

  1. Log in to your Amazon Connect instance and navigate to the Phone numbers screen.
  2. Choose your phone number from the list.
  3. Under Contact flow/IVR enter EnergyVirtualAgentFlow in the search box.
  4. Choose the EnergyVirtualAgentFlow and choose Save to associate the phone number with the flow.

Test the solution

Included in this repository under the \test folder are various test scenarios you can use to interact with and test the Energy Virtual Assistant.

To engage with the Energy Virtual Assistant, call in to the Amazon Connect phone number you associated with the contact flow and ask questions of the Amazon Bedrock agent, using fictitious account information as needed and which has been preloaded for you.

Customizing the solution

Readers are encouraged to customize this solution to meet their needs and can do so after cloning the repository to their local machine. The backend DynamoDB and Timestream tables being used as stand-ins for CRM, Billing, Outage, and MDMS are likely different in a real-world environment. Effort should be taken to first understand the type of customer requests you want to service with this solution, followed by customization of the backend systems needed to support these interactions. This solution is primarily designed to illustrate the art-of-the-possible for generative AI enabled assistants and serve as an acceleration vehicle for proof-of-concept activities.

Cleaning up

To remove the soluton and avoid incurring more charges for the AWS resources used in this solution, perform the following steps.

  1. Log in to your Amazon Connect instance and navigate to the Phone numbers screen.
  2. Choose your phone number from the list.
  3. Under Contact flow/IVR enter EnergyVirtualAgentFlow in the search box.
  4. Deselect the EnergyVirtualAgentFlow and choose Save to remove the phone number association from the flow
  5. Navigate to the CloudFormation console in your AWS account.
  6. Locate the EnergyVirtualAssistant stack and choose Delete.
    • This deletes all resources deployed by this CloudFormation stack, except for the CloudWatch log groups created for the Lambda functions and Amazon Connect instance. You may choose to retain them or delete them.

Summary

In this solution we demonstrated how to build agentic solutions on Amazon Bedrock and use these with a combination of AWS services to facilitate customer service workflows.

Using generative AI for customer service provides numerous benefits above and beyond traditional IVR systems, such as the ability to break free from rules-based IVR trees, provide customer service around the clock, and seamlessly scale during periods of high usage, to name a few.

We encourage you to deploy, test, and customize this solution within your environment to immediately realize the value of using generative AI to enhance customer service.

Darren Roback

Darren Roback

Darren is a Sr. Solutions Architect with Amazon Web Services based in St. Louis, Missouri. He has 20 years of experience in IT and is passionate about Data Analytics, Generative AI, Internet of Things (IoT), and Security and Compliance. At AWS, Darren partners with energy and utility customers to help them solve business challenges with AWS technology. Outside of work, he enjoys woodworking and spending time with his family.

Jeremy Cianella

Jeremy Cianella

Jeremy Cianella is a Sr. Solutions Architect based in Miami, FL, working with utility and renewables customers. He has over 15 years of experience across utility operations, enterprise architecture and cloud technologies, helping clients with their digital transformation initiatives. Jeremy holds all active AWS certifications and is passionate about experimenting with emerging technologies, AI, and "vibe coding". Outside of work, he enjoys traveling and spending time with his wife and three children