Connect with us


Automated claims processing at Xactware with machine learning on AWS

This blog post was co-authored, and includes an introduction, by Aaron Brunko, Senior Vice President, Claims Product at Xactware. Property insurance claims involving the valuation and replacement of personal belongings can be a painful process for everyone involved after a loss. From catastrophic events such as hurricanes, tornados, and wildfires, to theft and vandalism, claim…



This blog post was co-authored, and includes an introduction, by Aaron Brunko, Senior Vice President, Claims Product at Xactware.

Property insurance claims involving the valuation and replacement of personal belongings can be a painful process for everyone involved after a loss. From catastrophic events such as hurricanes, tornados, and wildfires, to theft and vandalism, claim handlers and policyholders can quickly become overwhelmed. When a loss occurs, the claim representative asks for a list of involved belongings to be included in the overall claim submission. The list (inventory) also includes specific information such as a detailed item description (including brand and model number when available), where the item was purchased, when it was purchased, how much was paid, and a general condition and usage of the item.

Take a moment and reflect on your own personal belongings. If you were asked at a moment’s notice to provide a detailed inventory, you may (like many people) have difficulty remembering how many button-down dress shirts you had in the closet, the number of knives that came in the set you purchased five years ago, or the number of sockets from the toolbox—let alone the specifics needed to properly value and adjust your claim. Hopefully, you have a digital record through photographs, videos, and online shopping orders that can help you piece the puzzle together.

Once your inventory is complete, you submit it to the assigned claim representative, who methodically determines coverage based on the terms of your insurance policy and begins evaluating the inventory. In most cases, the inventory is in a digital format, which can be imported directly into an estimating application where the claims representative will match each item with an item of like-kind, quality, and depreciation based on department, life expectancy, age, and condition.

When the claim representative completes the evaluation, they draft payment letters and provide you with payment of the actual cash value (most common) less your deductible and any amounts over your policy limits. If your policy allows for recoverable depreciation, you need to supply proof of purchase to collect the difference between the replacement cost and actual cash value.

In short, this laborious process can take months or even years until the last item is replaced and final payment is issued.

To further illustrate this point, Xactware Solutions helped process more than one million personal property claims between 2019 and 2020, totaling over 17 billion dollars of replacement cost value. During this time, more than 4.5 million items were recorded in the claims system, which took 37.76 days on average from when a claim was created until the last known change. In 2020 alone, the average days were 44.56 and the average number of corrections to the file were 1.01 (meaning on average each estimate had to be corrected at least one time).

As a senior executive of a large US-based insurer once put it, “We are all receiving a failing grade in the industry when it comes to personal property settlement. There is much improvement that can be made to streamline claims of all shapes and sizes, to better improve the policyholder experience, and at the same time reduce overhead costs for industry.”

The relationship displayed in the following graphs between the number of items, days to closure (last estimate upload), and number of corrections highlight clusters offer excellent starting points for us to move the needle in the right direction.

– Aaron Brunko

Automated claims processing

With advancements in analytics technology such as seamless shopping enabled by online retail and supply chain efficiencies, many consumers seek a similarly seamless experience when dealing with property insurance claims.

To address this growing opportunity, Xactware has made it a top organizational priority to improve the claims journey for the policyholder, with the concurrent aim of reducing the costs of claim servicing for insurance carriers.

To deliver on these priorities, Xactware has laid out a holistic vision of automating the claims lifecycle from start to finish across the claims workflow. Machine learning (ML) is a key technology to meet this end, and enables:

  • Streamlining the First Notice of Loss (FNOL) process
  • Automating the collection of loss details
  • Automating the decision-making and estimation of replacement items
  • Processing digital payments to claim filers.

To this end, Xactware engaged the Amazon ML Solutions Lab to help jumpstart the ML journey. Together they identified two high value business use cases that were selected to build two solutions demonstrating the use of ML to meet these objectives.

Both use cases focused on automating the categorization and line item matching of items that get submitted by a claim filer or policyholder as part of a loss claim, such as submitting a list of items that were stolen in a theft—a labor-intensive step in the workflow that a claims adjustor typically completes by manually querying and selecting items from a candidate items database spanning thousands of items. This automation is expected to further enable the automation of item lookups of a similar kind and quality and their associated depreciation schedules, which are two critical aspects that insurers need in order to derive the replacement cost value and depreciated amount to be factored for payment to the policyholder.

Specifically, these two use cases included:

  • Item classification – Using ML to correctly classify items based on the text descriptions entered by the policyholder into the correct categories and selectors (subcategories), which together span nearly 4,000 combined classes
  • Item matching – Using ML to match items to improve search results based on the text descriptions entered by the policyholder to identify and retrieve the correct candidate items from Xactware’s item database

Item classification

The first step to building an automated claims processing pipeline is to correctly identify the high-level class to which the item belongs. For example, an adjustor may query with the description “2015 kindle 4gb” as the item description and receive a list of candidate items. To narrow down this list, we begin by building a model that transforms the query into a precise group of products; in this case, the group is e-readers.

Over the years with deep experience in the insurance industry, Xactware has built a database of products including everything from Amazon Kindles to satin sheets. These items are classified according to their category and subcategory, known as the selector. By identifying the generic CatSel (category-selector pairs), we can refine the product match according to brand and model as described in the next section in this post. An example CatSel pair would be ELC-CPHN for the “cell phone” selector belonging to the “electronics” category class.

There are nearly 4,000 unique CatSel pairs, necessitating a large dataset to supply a sufficient number of samples so that the models have plenty of opportunity to correctly learn how to classify input data. In an ideal world, we would have data samples that are uniformly distributed across all labels, though that is unrealistic here. For examples, jewelry and clothing are much more likely to appear on a claims form than a musical instrument or an antique armoire. Although we can make efforts to rebalance the dataset, the underlying characteristics of the data are such that we expect model performance to vary by label. To get a sense of this uneven distribution, we plot the incidence counts for the 25 most common CatSels.

Now that we understand the macroscopic properties of the data, we consider the specific contents of each sample. In addition to the user-input text description of an item, we also have user-input text descriptions of the room in which the item was lost—and how it was lost (such as flooding, theft, or fire). Therefore, our training data is text, for which predictive analytics are suitable to be built on natural language processing (NLP) ML algorithms. Rather than build a model from scratch, which would require significant data preparation (stemming, tokenizing), pretraining (language corpus, vectorizing) and infrastructure management (setting up training and inference instances), we can use Amazon Comprehend, which handles the undifferentiated heavy lifting of the ML cycle and is trained by a team of specialized NLP experts.

To produce optimal results balanced with an efficient use of hardware resources, Amazon Comprehend limits custom classification models to 1,000 unique labels. Given our nearly 4,000 labels, we built four separate classification models that, in aggregate, provide us with the predicted class of a line item. Experimenting with the number of training samples, feature preparation, feature selection, label distribution, and rebalancing methods, we ultimately generated a model that delivers a top five accuracy of 97.5% for categories and 73% for CatSel pairs. Top five accuracy refers to the percentage of inference instances in which one of the top five predicted labels is the true label. Not all labels, however, are given equal weights due to the skewed distribution of label instances.

For each CatSel, we can check how the model performs. That is, we pass all instances of the true label through the models for inference and record the prediction. After looping through all CatSel labels, we end up with a set of F1 scores that we can then bin and plot as a histogram to visualize model performance across CatSels.

Given the performance distribution across CatSels, we now have a sense of confidence around how precise a given prediction is. When the model predicts a label on which the models perform well, we can automate the rest of the insurance claim pipeline with low expectations of error. For other labels, we can continue the manual process of review while collecting additional data to feed back into the model for training and ultimately improve predictions across the board.

Item matching

Following the successful identification of the correct category or class to which the described item belongs (based on the category code and the selector code, CatSel), the attention of the claim processing pipeline shifts to identification of the actual item (its make, its model, and so on) that the policyholder has filed a claim for. Generally, the submitted item description may match with many similar items. The overall goal is to correctly identify the item that the policyholder had in mind while filing the claim. To achieve this goal, we built and trained an item-matching deep neural network (DNN) model using Amazon SageMaker, a comprehensive ML service with a broad set of capabilities purpose-built to help data scientists and developers quickly prepare, build, train, and deploy high-quality machine learning (ML) models.

The item-matching DNN model was built using PyTorch. We made use of FastText (and BERT) embeddings for handling text. The final version uses FastText embedding alone because using BERT embeddings didn’t produce any significant improvement over the FastText embedding for this use case, and generating FastText embeddings is less computationally intensive, therefore faster. The overall architecture of the item-matching DNN model is summarized in the following figure.

Essentially, the DNN model takes in the information of the item in the claim and the information of the items from the database that could potentially be the correct match. The potential correct matches are fetched from the database of items and presorted to a reasonable degree by an existing search API. After the model is fed this information, it outputs a number between 0 and 1 for each of the items returned by the search API. This number is an estimated probability that the item from the search API is the correct item for the filed claim. Because the estimated probability measures the level of confidence that a given item is the correct match, all the potential matches can be sorted in descending order using the estimated probabilities. If the estimated probabilities (and therefore the sorted list of matched items) are perfect, you can expect that the correct item ranks first and appears in the first location of the sorted list. We show the distribution of the location for the correct item in the search results and in the DNN results later in this section.

Generally, you can assess the relative improvement in the sorting of two lists by computing the normalized discounted cumulative gain (NDCG). However, in the current case, only the location of the correct item (positive matched item) is important, and the relative locations of all the negative items (that should not be selected, and which make up 99 of 100 shortlisted items) is of little interest. As an alternative to NDCG, you could also compare two lists of the items, obtained from two independent sorting methods, by looking at the median location of the correct item (the median location of the item of interest) in the sorted lists. Given its simplicity and intuitiveness to the readers and users, the median approach is very insightful, and we use it here.

Overall, the DNN model performed well and reduced the median position of the correct result from 10 (in the Search API) down to 2, as shown in the following graphs. By making it easy to locate the correct item, this item-matching model and pipeline has the potential to reduce the time required for claims processing by a factor of 5 or by 500%.

Customer and business impact

With the technical exposition of our ML solution in hand, we’re now fully understand the benefits that our tool will provide to Xactware’s customers. After implementing the models for use in real-time inference, we simulate the policyholder’s journey of filling out a digital insurance claim when assisted with instantaneous predictions. The outcome of indicates that the models trained by the ML Solutions Lab can automatically match 75% of items entered into the form, whereas the existing system matches at 25%. And in 90% of cases, the ML model provided the correct match in its top three predictions.

With the current solution, it took 4 minutes to manually find the correct CatSel for 20 items. With the ML models developed by the ML Solutions Lab, the Verisk team anticipates this taking no more than 1 minute to spot check and fix six items, since all six had the correct description in at least the top three results. With auto-approval of high-confidence items from the model, along with spot-checking less confident predictions, they expect an increase in the accuracy and speed of categorizing items by 300%.

The benefit to users of Xactware software is that they experience a faster, simpler, and more accurate platform when carrying out their work. Furthermore, customers experience shorter wait times between their claims filing and item replacement or reimbursement.

In the following figure, we present an early rendition of the software UX that can be presented to insurance adjustors. As the user enters the item description, the category, selector, and price fields are automatically filled using of the models described earlier. Along with the predictions is a confidence rating to aid in a rapid manual review.


In a constant effort to improve workflows throughout the insurance industry, Xactware is excited to integrate additional ML models throughout their organization in a way that improves efficiency, reduces cost, and saves time. End users benefit the most. In this post, we discussed such an endeavor that incorporates NLP through a multi-class classifier built on text features and a multimodal branched deep neural network acting as a ranker for refining item matches. We expect a 75% reduction in claims processing time through this ML-assisted claims processing compared to manual item matching.

As Xactware continues to invest in ML and explores additional opportunities for efficiency gains, we can look with certainty for future innovations in the insurance space.

Xactware Solutions, a Verisk Analytics company (NASDAQ:VRSK), provides computer software solutions for professionals for the management of personal property. Xactware supports nearly every facet of claims management for the property insurance and restoration industries, including structural and personal property estimation, claims collaboration, analytics and reporting tools for underwriting and claims, contents replacement, and weather analytics. Today, 22 of the top 25 property insurance companies in the US and all of the top 10 Canadian insurers use Xactware property insurance claims tools.

If you would like help accelerating your use of ML in your products and processes, contact the Amazon ML Solutions Lab program.

About the Authors

Aaron Brunko is Xactware’s Senior Vice President of Claims Product at Xactware. Aaron joined Xactware in 2001 and since has held many leadership roles in both service and product development/delivery. Aaron holds a bachelor’s degree in business management from Western Governors University and an MBA from the University of Utah.

Hussain Karimi is a data scientist at the Machine Learning Solutions Lab where he works with customers across various verticals to initiate and build automated, algorithmic models that generate business value.

Emmanuel Salawu is a Senior Applied Scientist with the Amazon Machine Learning Solutions Lab. He works with AWS’s customers building AI/ML solutions for their high-priority business needs.

Daniel Horowitz is an Applied AI Science Manager. He leads a team of scientists on the Amazon ML Solutions Lab working to solve customer problems and drive cloud adoption with ML.

Shane Rai is a Sr. ML Strategist at the Amazon Machine Learning Solutions Lab. He works with customers across a diverse spectrum of industries to solve their most pressing and innovative business needs using AWS’s breadth of cloud-based AI/ML services.


Continue Reading
Click to comment

Leave a Reply

Your email address will not be published.


AWS Week in Review – May 16, 2022

This post is part of our Week in Review series. Check back each week for a quick roundup of interesting news and announcements from AWS! I had been on the road for the last five weeks and attended many of the AWS Summits in Europe. It was great to talk to so many of you…




This post is part of our Week in Review series. Check back each week for a quick roundup of interesting news and announcements from AWS!

I had been on the road for the last five weeks and attended many of the AWS Summits in Europe. It was great to talk to so many of you in person. The Serverless Developer Advocates are going around many of the AWS Summits with the Serverlesspresso booth. If you attend an event that has the booth, say “Hi ” to my colleagues, and have a coffee while asking all your serverless questions. You can find all the upcoming AWS Summits in the events section at the end of this post.

Last week’s launches
Here are some launches that got my attention during the previous week.

AWS Step Functions announced a new console experience to debug your state machine executions – Now you can opt-in to the new console experience of Step Functions, which makes it easier to analyze, debug, and optimize Standard Workflows. The new page allows you to inspect executions using three different views: graph, table, and event view, and add many new features to enhance the navigation and analysis of the executions. To learn about all the features and how to use them, read Ben’s blog post.

Example on how the Graph View looks

Example on how the Graph View looks

AWS Lambda now supports Node.js 16.x runtime – Now you can start using the Node.js 16 runtime when you create a new function or update your existing functions to use it. You can also use the new container image base that supports this runtime. To learn more about this launch, check Dan’s blog post.

AWS Amplify announces its Android library designed for Kotlin – The Amplify Android library has been rewritten for Kotlin, and now it is available in preview. This new library provides better debugging capacities and visibility into underlying state management. And it is also using the new AWS SDK for Kotlin that was released last year in preview. Read the What’s New post for more information.

Three new APIs for batch data retrieval in AWS IoT SiteWise – With this new launch AWS IoT SiteWise now supports batch data retrieval from multiple asset properties. The new APIs allow you to retrieve current values, historical values, and aggregated values. Read the What’s New post to learn how you can start using the new APIs.

AWS Secrets Manager now publishes secret usage metrics to Amazon CloudWatch – This launch is very useful to see the number of secrets in your account and set alarms for any unexpected increase or decrease in the number of secrets. Read the documentation on Monitoring Secrets Manager with Amazon CloudWatch for more information.

For a full list of AWS announcements, be sure to keep an eye on the What’s New at AWS page.

Other AWS News
Some other launches and news that you may have missed:

IBM signed a deal with AWS to offer its software portfolio as a service on AWS. This allows customers using AWS to access IBM software for automation, data and artificial intelligence, and security that is built on Red Hat OpenShift Service on AWS.

Podcast Charlas Técnicas de AWS – If you understand Spanish, this podcast is for you. Podcast Charlas Técnicas is one of the official AWS podcasts in Spanish. This week’s episode introduces you to Amazon DynamoDB and shares stories on how different customers use this database service. You can listen to all the episodes directly from your favorite podcast app or the podcast web page.

AWS Open Source News and Updates – Ricardo Sueiras, my colleague from the AWS Developer Relation team, runs this newsletter. It brings you all the latest open-source projects, posts, and more. Read edition #112 here.

Upcoming AWS Events
It’s AWS Summits season and here are some virtual and in-person events that might be close to you:

You can register for re:MARS to get fresh ideas on topics such as machine learning, automation, robotics, and space. The conference will be in person in Las Vegas, June 21–24.

That’s all for this week. Check back next Monday for another Week in Review!

— Marcia


Continue Reading


Personalize your machine translation results by using fuzzy matching with Amazon Translate

A person’s vernacular is part of the characteristics that make them unique. There are often countless different ways to express one specific idea. When a firm communicates with their customers, it’s critical that the message is delivered in a way that best represents the information they’re trying to convey. This becomes even more important when…




A person’s vernacular is part of the characteristics that make them unique. There are often countless different ways to express one specific idea. When a firm communicates with their customers, it’s critical that the message is delivered in a way that best represents the information they’re trying to convey. This becomes even more important when it comes to professional language translation. Customers of translation systems and services expect accurate and highly customized outputs. To achieve this, they often reuse previous translation outputs—called translation memory (TM)—and compare them to new input text. In computer-assisted translation, this technique is known as fuzzy matching. The primary function of fuzzy matching is to assist the translator by speeding up the translation process. When an exact match can’t be found in the TM database for the text being translated, translation management systems (TMSs) often have the option to search for a match that is less than exact. Potential matches are provided to the translator as additional input for final translation. Translators who enhance their workflow with machine translation capabilities such as Amazon Translate often expect fuzzy matching data to be used as part of the automated translation solution.

In this post, you learn how to customize output from Amazon Translate according to translation memory fuzzy match quality scores.

Translation Quality Match

The XML Localization Interchange File Format (XLIFF) standard is often used as a data exchange format between TMSs and Amazon Translate. XLIFF files produced by TMSs include source and target text data along with match quality scores based on the available TM. These scores—usually expressed as a percentage—indicate how close the translation memory is to the text being translated.

Some customers with very strict requirements only want machine translation to be used when match quality scores are below a certain threshold. Beyond this threshold, they expect their own translation memory to take precedence. Translators often need to apply these preferences manually either within their TMS or by altering the text data. This flow is illustrated in the following diagram. The machine translation system processes the translation data—text and fuzzy match scores— which is then reviewed and manually edited by translators, based on their desired quality thresholds. Applying thresholds as part of the machine translation step allows you to remove these manual steps, which improves efficiency and optimizes cost.

Machine Translation Review Flow

Figure 1: Machine Translation Review Flow

The solution presented in this post allows you to enforce rules based on match quality score thresholds to drive whether a given input text should be machine translated by Amazon Translate or not. When not machine translated, the resulting text is left to the discretion of the translators reviewing the final output.

Solution Architecture

The solution architecture illustrated in Figure 2 leverages the following services:

  • Amazon Simple Storage Service – Amazon S3 buckets contain the following content:
    • Fuzzy match threshold configuration files
    • Source text to be translated
    • Amazon Translate input and output data locations
  • AWS Systems Manager – We use Parameter Store parameters to store match quality threshold configuration values
  • AWS Lambda – We use two Lambda functions:
    • One function preprocesses the quality match threshold configuration files and persists the data into Parameter Store
    • One function automatically creates the asynchronous translation jobs
  • Amazon Simple Queue Service – An Amazon SQS queue triggers the translation flow as a result of new files coming into the source bucket

Solution Architecture Diagram

Figure 2: Solution Architecture

You first set up quality thresholds for your translation jobs by editing a configuration file and uploading it into the fuzzy match threshold configuration S3 bucket. The following is a sample configuration in CSV format. We chose CSV for simplicity, although you can use any format. Each line represents a threshold to be applied to either a specific translation job or as a default value to any job.

default, 75 SourceMT-Test, 80

The specifications of the configuration file are as follows:

  • Column 1 should be populated with the name of the XLIFF file—without extension—provided to the Amazon Translate job as input data.
  • Column 2 should be populated with the quality match percentage threshold. For any score below this value, machine translation is used.
  • For all XLIFF files whose name doesn’t match any name listed in the configuration file, the default threshold is used—the line with the keyword default set in Column 1.

Auto-generated parameter in Systems Manager Parameter Store

Figure 3: Auto-generated parameter in Systems Manager Parameter Store

When a new file is uploaded, Amazon S3 triggers the Lambda function in charge of processing the parameters. This function reads and stores the threshold parameters into Parameter Store for future usage. Using Parameter Store avoids performing redundant Amazon S3 GET requests each time a new translation job is initiated. The sample configuration file produces the parameter tags shown in the following screenshot.

The job initialization Lambda function uses these parameters to preprocess the data prior to invoking Amazon Translate. We use an English-to-Spanish translation XLIFF input file, as shown in the following code. It contains the initial text to be translated, broken down into what is referred to as segments, represented in the source tags.

Consent Form CONSENT FORM FORMULARIO DE CONSENTIMIENTO Screening Visit: Screening Visit Selección

The source text has been pre-matched with the translation memory beforehand. The data contains potential translation alternatives—represented as tags—alongside a match quality attribute, expressed as a percentage. The business rule is as follows:

  • Segments received with alternative translations and a match quality below the threshold are untouched or empty. This signals to Amazon Translate that they must be translated.
  • Segments received with alternative translations with a match quality above the threshold are pre-populated with the suggested target text. Amazon Translate skips those segments.

Let’s assume the quality match threshold configured for this job is 80%. The first segment with 99% match quality isn’t machine translated, whereas the second segment is, because its match quality is below the defined threshold. In this configuration, Amazon Translate produces the following output:

Consent Form FORMULARIO DE CONSENTIMIENTO CONSENT FORM FORMULARIO DE CONSENTIMIENTO Screening Visit: Visita de selección Screening Visit Selección

In the second segment, Amazon Translate overwrites the target text initially suggested (Selección) with a higher quality translation: Visita de selección.

One possible extension to this use case could be to reuse the translated output and create our own translation memory. Amazon Translate supports customization of machine translation using translation memory thanks to the parallel data feature. Text segments previously machine translated due to their initial low-quality score could then be reused in new translation projects.

In the following sections, we walk you through the process of deploying and testing this solution. You use AWS CloudFormation scripts and data samples to launch an asynchronous translation job personalized with a configurable quality match threshold.


For this walkthrough, you must have an AWS account. If you don’t have an account yet, you can create and activate one.

Launch AWS CloudFormation stack

  1. Choose Launch Stack:
  2. For Stack name, enter a name.
  3. For ConfigBucketName, enter the S3 bucket containing the threshold configuration files.
  4. For ParameterStoreRoot, enter the root path of the parameters created by the parameters processing Lambda function.
  5. For QueueName, enter the SQS queue that you create to post new file notifications from the source bucket to the job initialization Lambda function. This is the function that reads the configuration file.
  6. For SourceBucketName, enter the S3 bucket containing the XLIFF files to be translated. If you prefer to use a preexisting bucket, you need to change the value of the CreateSourceBucket parameter to No.
  7. For WorkingBucketName, enter the S3 bucket Amazon Translate uses for input and output data.
  8. Choose Next.

    Figure 4: CloudFormation stack details

  9. Optionally on the Stack Options page, add key names and values for the tags you may want to assign to the resources about to be created.
  10. Choose Next.
  11. On the Review page, select I acknowledge that this template might cause AWS CloudFormation to create IAM resources.
  12. Review the other settings, then choose Create stack.

AWS CloudFormation takes several minutes to create the resources on your behalf. You can watch the progress on the Events tab on the AWS CloudFormation console. When the stack has been created, you can see a CREATE_COMPLETE message in the Status column on the Overview tab.

Test the solution

Let’s go through a simple example.

  1. Download the following sample data.
  2. Unzip the content.

There should be two files: an .xlf file in XLIFF format, and a threshold configuration file with .cfg as the extension. The following is an excerpt of the XLIFF file.

English to French sample file extract

Figure 5: English to French sample file extract

  1. On the Amazon S3 console, upload the quality threshold configuration file into the configuration bucket you specified earlier.

The value set for test_En_to_Fr is 75%. You should be able to see the parameters on the Systems Manager console in the Parameter Store section.

  1. Still on the Amazon S3 console, upload the .xlf file into the S3 bucket you configured as source. Make sure the file is under a folder named translate (for example, /translate/test_En_to_Fr.xlf).

This starts the translation flow.

  1. Open the Amazon Translate console.

A new job should appear with a status of In Progress.

Auto-generated parameter in Systems Manager Parameter Store

Figure 6: In progress translation jobs on Amazon Translate console

  1. Once the job is complete, click into the job’s link and consult the output. All segments should have been translated.

All segments should have been translated. In the translated XLIFF file, look for segments with additional attributes named lscustom:match-quality, as shown in the following screenshot. These custom attributes identify segments where suggested translation was retained based on score.

Custom attributes identifying segments where suggested translation was retained based on score

Figure 7: Custom attributes identifying segments where suggested translation was retained based on score

These were derived from the translation memory according to the quality threshold. All other segments were machine translated.

You have now deployed and tested an automated asynchronous translation job assistant that enforces configurable translation memory match quality thresholds. Great job!


If you deployed the solution into your account, don’t forget to delete the CloudFormation stack to avoid any unexpected cost. You need to empty the S3 buckets manually beforehand.


In this post, you learned how to customize your Amazon Translate translation jobs based on standard XLIFF fuzzy matching quality metrics. With this solution, you can greatly reduce the manual labor involved in reviewing machine translated text while also optimizing your usage of Amazon Translate. You can also extend the solution with data ingestion automation and workflow orchestration capabilities, as described in Speed Up Translation Jobs with a Fully Automated Translation System Assistant.

About the Authors

Narcisse Zekpa is a Solutions Architect based in Boston. He helps customers in the Northeast U.S. accelerate their adoption of the AWS Cloud, by providing architectural guidelines, design innovative, and scalable solutions. When Narcisse is not building, he enjoys spending time with his family, traveling, cooking, and playing basketball.

Dimitri Restaino is a Solutions Architect at AWS, based out of Brooklyn, New York. He works primarily with Healthcare and Financial Services companies in the North East, helping to design innovative and creative solutions to best serve their customers. Coming from a software development background, he is excited by the new possibilities that serverless technology can bring to the world. Outside of work, he loves to hike and explore the NYC food scene.


Continue Reading


Enhance the caller experience with hints in Amazon Lex

We understand speech input better if we have some background on the topic of conversation. Consider a customer service agent at an auto parts wholesaler helping with orders. If the agent knows that the customer is looking for tires, they’re more likely to recognize responses (for example, “Michelin”) on the phone. Agents often pick up…




We understand speech input better if we have some background on the topic of conversation. Consider a customer service agent at an auto parts wholesaler helping with orders. If the agent knows that the customer is looking for tires, they’re more likely to recognize responses (for example, “Michelin”) on the phone. Agents often pick up such clues or hints based on their domain knowledge and access to business intelligence dashboards. Amazon Lex now supports a hints capability to enhance the recognition of relevant phrases in a conversation. You can programmatically provide phrases as hints during a live interaction to influence the transcription of spoken input. Better recognition drives efficient conversations, reduces agent handling time, and ultimately increases customer satisfaction.

In this post, we review the runtime hints capability and use it to implement verification of callers based on their mother’s maiden name.

Overview of the runtime hints capability

You can provide a list of phrases or words to help your bot with the transcription of speech input. You can use these hints with built-in slot types such as first and last names, street names, city, state, and country. You can also configure these for your custom slot types.

You can use the capability to transcribe names that may be difficult to pronounce or understand. For example, in the following sample conversation, we use it to transcribe the name “Loreck.”

Conversation 1

IVR: Welcome to ACME bank. How can I help you today?

Caller: I want to check my account balance.

IVR: Sure. Which account should I pull up?

Caller: Checking

IVR: What is the account number?

Caller: 1111 2222 3333 4444

IVR: For verification purposes, what is your mother’s maiden name?

Caller: Loreck

IVR: Thank you. The balance on your checking account is 123 dollars.

Words provided as hints are preferred over other similar words. For example, in the second sample conversation, the runtime hint (“Smythe”) is selected over a more common transcription (“Smith”).

Conversation 2

IVR: Welcome to ACME bank. How can I help you today?

Caller: I want to check my account balance.

IVR: Sure. Which account should I pull up?

Caller: Checking

IVR: What is the account number?

Caller: 5555 6666 7777 8888

IVR: For verification purposes, what is your mother’s maiden name?

Caller: Smythe

IVR: Thank you. The balance on your checking account is 456 dollars.

If the name doesn’t match the runtime hint, you can fail the verification and route the call to an agent.

Conversation 3

IVR: Welcome to ACME bank. How can I help you today?

Caller: I want to check my account balance.

IVR: Sure. Which account should I pull up?

Caller: Savings

IVR: What is the account number?

Caller: 5555 6666 7777 8888

IVR: For verification purposes, what is your mother’s maiden name?

Caller: Jane

IVR: There is an issue with your account. For support, you will be forwarded to an agent.

Solution overview

Let’s review the overall architecture for the solution (see the following diagram):

  • We use an Amazon Lex bot integrated with an Amazon Connect contact flow to deliver the conversational experience.
  • We use a dialog codehook in the Amazon Lex bot to invoke an AWS Lambda function that provides the runtime hint at the previous turn of the conversation.
  • For the purposes of this post, the mother’s maiden name data used for authentication is stored in an Amazon DynamoDB table.
  • After the caller is authenticated, the control is passed to the bot to perform transactions (for example, check balance)

In addition to the Lambda function, you can also send runtime hints to Amazon Lex V2 using the PutSession, RecognizeText, RecognizeUtterance, or StartConversation operations. The runtime hints can be set at any point in the conversation and are persisted at every turn until cleared.

Deploy the sample Amazon Lex bot

To create the sample bot and configure the runtime phrase hints, perform the following steps. This creates an Amazon Lex bot called BankingBot, and one slot type (accountNumber).

  1. Download the Amazon Lex bot.
  2. On the Amazon Lex console, choose Actions, Import.
  3. Choose the file that you downloaded, and choose Import.
  4. Choose the bot BankingBot on the Amazon Lex console.
  5. Choose the language English (GB).
  6. Choose Build.
  7. Download the supporting Lambda code.
  8. On the Lambda console, create a new function and select Author from scratch.
  9. For Function name, enter BankingBotEnglish.
  10. For Runtime, choose Python 3.8.
  11. Choose Create function.
  12. In the Code source section, open and delete the existing code.
  13. Download the function code and open it in a text editor.
  14. Copy the code and enter it into the empty function code field.
  15. Choose deploy.
  16. On the Amazon Lex console, select the bot BankingBot.
  17. Choose Deployment and then Aliases, then choose the alias TestBotAlias.
  18. On the Aliases page, choose Languages and choose English (GB).
  19. For Source, select the bot BankingBotEnglish.
  20. For Lambda version or alias, enter $LATEST.
  21. On the DynamoDB console, choose Create table.
  22. Provide the name as customerDatabase.
  23. Provide the partition key as accountNumber.
  24. Add an item with accountNumber: “1111222233334444” and mothersMaidenName “Loreck”.
  25. Add item with accountNumber: “5555666677778888” and mothersMaidenName “Smythe”.
  26. Make sure the Lambda function has permissions to read from the DynamoDB table customerDatabase.
  27. On the Amazon Connect console, choose Contact flows.
  28. In the Amazon Lex section, select your Amazon Lex bot and make it available for use in the Amazon Connect contact flow.
  29. Download the contact flow to integrate with the Amazon Lex bot.
  30. Choose the contact flow to load it into the application.
  31. Make sure the right bot is configured in the “Get Customer Input” block.
  32. Choose a queue in the “Set working queue” block.
  33. Add a phone number to the contact flow.
  34. Test the IVR flow by calling in to the phone number.

Test the solution

You can now call in to the Amazon Connect phone number and interact with the bot.


Runtime hints allow you to influence the transcription of words or phrases dynamically in the conversation. You can use business logic to identify the hints as the conversation evolves. Better recognition of the user input allows you to deliver an enhanced experience. You can configure runtime hints via the Lex V2 SDK. The capability is available in all AWS Regions where Amazon Lex operates in the English (Australia), English (UK), and English (US) locales.

To learn more, refer to runtime hints.

About the Authors

Kai Loreck is a professional services Amazon Connect consultant. He works on designing and implementing scalable customer experience solutions. In his spare time, he can be found playing sports, snowboarding, or hiking in the mountains.

Anubhav Mishra is a Product Manager with AWS. He spends his time understanding customers and designing product experiences to address their business challenges.

Sravan Bodapati is an Applied Science Manager at AWS Lex. He focuses on building cutting edge Artificial Intelligence and Machine Learning solutions for AWS customers in ASR and NLP space. In his spare time, he enjoys hiking, learning economics, watching TV shows and spending time with his family.


Continue Reading


Copyright © 2021 Today's Digital.