LogoLogo
  • 👋START HERE
    • Welcome!
  • â„šī¸General
    • Release Notes
      • Full Feature Base Template
      • Services
      • Rule-based Automation
        • May 2025
        • February 2025
        • January 2025
        • December 2024
        • November 2024
        • October 2024
        • September 2024
        • August 2024
        • July 2024
        • June 2024
        • May 2024
        • April 2024
        • March 2024
        • February 2024
        • January 2024
        • 2023
        • 2022
        • 2021
        • Dialog Design Update
    • Glossary of Terms
    • Authentication Methods
      • SSO (Single Sign-On)
      • Built-In User Management
    • Acceptable Use Policy
  • âš™ī¸Rule-based Automation
    • Overview
      • Account Settings
        • Profile
        • Team
        • Roles and Permissions
          • User Management
          • Project Permissions
      • Basic Concepts
        • Project Management
        • Version Management
        • Multi-Lingual Bots
          • Supported Languages
        • Managing User Interactions
          • Unexpected User Input
          • No User Input
    • Dialog Interface
      • Blocks
        • Conversation Logic
          • Start Conversation
          • Global
          • State
          • Intermediate Response
          • To Previous State
          • End Conversation
        • Subdialog
          • Reusable Subdialogs
        • Phone
          • Continue Listening
          • Call Control
        • Technical Logic
          • Service
          • Condition
          • Storage
        • Other
          • Note
      • Speech Assets
        • Intents
          • Utterances
          • Descriptions
        • Slots
          • Custom Slots
            • List Slots
            • Machine Learning Slots
            • Regex Slots
            • LLM Slots
          • Prebuilt Slots
            • DTMF Slot
        • Text Snippets
        • Dictionary
      • Variables
        • Intents
        • Slots
        • Storage
        • Text Snippets
        • Environments
        • Platform
        • Context
      • Services
        • Service Integration Guide
        • Service Development
        • Service Branches and Error Handling
        • Public Services
          • Date and Birthdate Recognition
          • Spelling Post-Processing for Phone
          • IBAN Validation
          • License Plate Validation
          • Address Search
          • Street Names per Postal Code
          • Email Service
          • SMS Service
          • API Adapter
          • Salesforce-Flow Connector
          • Opening Hours
          • Speech-to-Text Hints
          • Fuzzy Match Names
          • Delay Service
      • Debugger
        • Phone 2
        • WhatsApp
        • Textchat 2
    • Environments Interface
      • Service Keys
    • Deployments Interface
      • Creating a Release
      • Editing a Release
    • Text-to-Speech
      • Azure
      • ElevenLabs
      • OpenAI via Azure (Preview)
      • SSML
        • Audio
        • Break
        • Emphasis
        • Prosody
        • Say-as
        • Substitute
        • Paragraph and Sentence
        • Voice
    • Autocomplete
    • Parloa APIs
      • CallData Service and API
      • Conversation History API
      • Textchat V2 API
    • Phone Integrations
      • Genesys Cloud
        • Setting up the SIP Trunk
        • Sending/Receiving UUI Data
        • Creating a Script to Display UUI
      • SIP
      • Tenios
        • Setting Up an Inbound Connection
        • Setting Up an Outbound Connection
        • Transferring a Call
      • Twilio
      • Public IPs and Port Information
    • AI Integration Overview
      • Dual Intent Recognizer (DIR)
      • Dual Tone Multifrequency (DTMF) Intent
    • Analytics and Debugging
      • Understanding Conversations and Transactions
      • Managing Caller ID Data
      • Hangup Events and Triggered Analytics
      • Analytics Transactions: Data Structure and Insights
      • Dialog Analytics
      • Audit Logs
      • Parloa-hosted Analytics
    • Data Privacy
      • Anonymizing Personally Identifiable Information
    • NLU Training
      • NLU Training Best Practices
    • How To
      • Create a Scalable and Maintainable Bot Architecture
      • Implement OnError Loop Handling
      • Resolve the 'Service Unavailable' Error
    • Reference
      • Parloa Keyboard Shortcuts
      • Frequently Asked Questions (FAQ)
      • JavaScript Cheat Sheet
        • Using Regular Expressions (Regex)
  • 🧠Knowledge Skill
    • Introduction
    • Knowledge Collections
    • Knowledge Sources
    • Knowledge Skill Setup
      • Step 1 – Create a Knowledge Skill Agent
      • Step 2 – Configure a Knowledge Skill Agent
      • Step 3 – Configure a Knowledge Skill Agent
Powered by GitBook
On this page
  • Technical Configuration
  • Additional Details
  • Usage in Parloa
  • Important Points to Note
  • Decision-Making Criteria

Was this helpful?

Export as PDF
  1. Rule-based Automation
  2. Dialog Interface
  3. Services
  4. Public Services

Fuzzy Match Names

PreviousSpeech-to-Text HintsNextDelay Service

Last updated 1 year ago

Was this helpful?

Available lang-locales: This service is configured for en-US. Note that it can also be used for other languages, such as de-DE, but the graphemic-phonetic mapping may be slightly different in other languages.

The Fuzzy Match Service (FMS) is designed to enhance caller experiences by significantly improving the accuracy and efficiency of name verification processes. It adeptly handles simple spelling variations (such as, "Jon" vs. "John", "Annike" vs. "Annika"), which often challenge basic text-matching systems. By leveraging advanced matching algorithms, the FMS ensures minor discrepancies in name transcription do not obstruct the verification process. This service is invaluable in scenarios demanding high precision in name matching or verification, such as during user authentication in customer support calls or product name confirmation in sales interactions.

Technical Configuration

The service is configured within the bot as follows:

  • success: The service was able to process the provided input.

  • else: Added by default; indicates a failure of the service.

  • originalString: (required, String) The value you want the input to be tested against, i.e. the "correct" string you are comparing to.

  • stt: (required, String or Array) User input as a string, or the array of stt_candidates returned by the platform.

  • lang: (optional, String) Currently this parameter is optional, as the service is only configured to use graphemic-phonetic mapping for en-US. Input is expected in the 4-character lang-REGION format.

  • MatchStatus: Either exact, fuzzy, or not a match

  • operations: Only relevant for fuzzy matches; this output contains an object explaining the operations/steps used to get a match e.g. ["Spurious 'h' between nicXolas and nicholas;"]; if not relevant, this will

    • Example: looks like: {"originalString": "Nicolas","Stt": "Nicolas","Ops": {}}

  • stt_candidates: If MatchStatus is fuzzy AND stt contains the stt_candidates it will return all the fuzzy matches inside an array; otherwise this will be an empty array.

  • URL: https://parloaservices.azurewebsites.net/api/FuzzyMatchNames?clientId=<CLIENT_ID>

  • Header: x-functions-key: <AUTHCODE>

For authentication, replace <AUTHCODE> and <CLIENTID> with the values provided by your Parloa representative.

Additional Details

EU only

curl --location 'https://parloaservices.azurewebsites.net/api/FuzzyMatchNames?clientId=<CLIENTID>' \
--header 'Content-Type: application/json' \
--header 'x-functions-key: <AUTHCODE>'
--data '{
    "input": {
        "originalString": "Nicolas",
        "stt": [{"text":"Nikolas","confidence":0.5439518},{"text":"nikolas","confidence":0.48069397},{"text":"nicola","confidence":0.3820934},{"text":"Nicolas","confidence":0.47726634}],
        "lang": "EN"
    }
}'
# Single string, no stt_candidates, exact match:
{
    "input": {
        "originalString": "Nicolas",
        "stt": "Nicolas",
        "lang": "EN"
    }
}

{
    "choice": "success",
    "output": {
        "MatchStatus": "exact",
        "operations": {
            "originalString": "Nicolas",
            "Stt": "Nicolas",
            "Ops": {}
        },
        "stt_candidates": []
    }
}

# Single string, no stt_candidates, fuzzy match:
{
    "input": {
        "originalString": "Nicolas",
        "stt": "Nicholas",
        "lang": "EN"
    }
}

{
    "choice": "success",
    "output": {
        "MatchStatus": "fuzzy",
        "operations": {
            "originalString": "Nicolas",
            "Stt": "Nicholas",
            "Ops": [
                "Spurious 'h' between nicXolas and nicholas;"
            ]
        },
        "stt_candidates": []
    }
}

# Single string, stt_candidates, exact match:
{
    "input": {
        "originalString": "Nicolas",
        "stt": [{"text":"Nikolas","confidence":0.5439518},{"text":"nikolas","confidence":0.48069397},{"text":"nicola","confidence":0.3820934},{"text":"Nicolas","confidence":0.47726634}],
        "lang": "EN"
    }
}

{
    "choice": "success",
    "output": {
        "MatchStatus": "exact",
        "operations": {
            "firstName": "Nicolas",
            "firstNameStt": "Nicolas",
            "MatchStatus": "exact"
        },
        "stt_candidates": []
    }
}

# Single string, stt_candidates, no exact match:
{
    "input": {
        "originalString": "Nicolas",
        "stt": [{"text":"nicolas","confidence":0.5439518},{"text":"nikolas","confidence":0.48069397},{"text":"nicola","confidence":0.3820934},{"text":"nicholas","confidence":0.47726634}],
        "lang": "enUS"
    }
}

{
    "choice": "success",
    "output": {
        "MatchStatus": "fuzzy",
        "operations": {
            "originalString": "Nicolas",
            "Stt": "nicholas",
            "MatchStatus": "fuzzy",
            "operations": [
                "Spurious 'h' between nicXolas and nicholas;"
            ]
        },
        "stt_candidates": [
            [
                {
                    "originalString": "Nicolas",
                    "Stt": "nicolas",
                    "MatchStatus": "fuzzy",
                    "operations": [
                        "all differences are vowel-only;"
                    ]
                },
                {
                    "originalString": "Nicolas",
                    "Stt": "nikolas",
                    "MatchStatus": "fuzzy",
                    "operations": [
                        "corresponding c:k;"
                    ]
                },
                {
                    "originalString": "Nicolas",
                    "Stt": "nicholas",
                    "MatchStatus": "fuzzy",
                    "operations": [
                        "Spurious 'h' between nicXolas and nicholas;"
                    ]
                }
            ]
        ]
    }
}

Usage in Parloa

Sample configurations with Output

The correct name of the user as obtained from the database is provided to the service here via the variable firstName_stt.

The user input is provided here via the variable firstName_stt.

In this case, the system transcribed Annika and the service was able to fuzzy-match that to the first name Anike provided from the database.

In this case, the system transcribed Monika; the service was not able to match that to the first name Anike provided from the database due to the additional consonant M at the start of the word. For situations like this, it would make sense to design the dialogue with a second question or a fallback option in case of failed validation.

Important Points to Note

Ensure to handle all customer data with utmost care, adhering to data privacy regulations. Additionally, always verify that CRM or other service lookups are functioning correctly to fetch accurate customer details.

  • Our service maps letters to their sounds, focusing on common phonetic (sound) patterns. This approach is highly effective but can be challenging for languages without direct spelling-to-sound correspondence.

  • Differences in vowel sounds alone are treated as fuzzy matches by our service (such as "Multi" vs. "Malta"), reflecting our design to accommodate variations across dialects and second-language pronunciation. This can be seen in the operations output parameter, where in such cases, it will note the operation 'all differences are vowel-only'.

Decision-Making Criteria

When deciding on match acceptance:

âš™ī¸

Exact Match

Proceed with confidence.

Fuzzy Match

Use Operations details to determine if the match is acceptable based on context.

No Match

Re-confirm the details with the customer.