Front-end Development, Custom Software Development

EVA AI assistant that can be accessed via a mobile-friendly chat widget on the Nedgroup Investments website, with the option to host on other channels like Facebook Messenger.

Project Overview

Problem: Direct investors prefer to connect with a business on the channel of their choice, instead of having to remember a password to log onto a desktop-focused website.

Solution:The EVA AI assistant that can be accessed via a mobile-friendly chat widget on the Nedgroup Investments website, with the option to host on other channels like Facebook Messenger.


Nedgroup Investments saw the potential of automation and robotics in their investment business and approached Atura to build South Africa's first fully transactional AI assistant, EVA, which went live in early 2017

Initially EVA allowed end users to speak to a live agent or to query information available on the public Nedgroup Investments website, but through a convenient chat widget embedded on the website. In the next phase we enhanced EVA further so that users could “log in” and query balances, retrieve statements and tax certificates. In the following phase EVA got the ability to do transactions: transferring money to and from an investor's accounts via the chat interface.

We helped lighten the load on the Nedgroup Investment call center, since EVA can answer many questions without any human intervention. Nedgroup Investments staff and financial planners also use EVA to quickly load relevant pieces of information, instead of having to trawl the website.

Technical requirements

  • Industry-leading security.
  • Scalable to handle thousands of conversations per minute.
  • Fast, automated, zero down time deployments.
  • Isolated environment for each client.
  • Flexibility to support many chat “channels”.

Feature Highlights

Fully customised AI assistant


The Atura platform is built with abstraction in mind so that we can easily build customized client instances by leveraging our core infrastructure.

The EVA conversation flows were mocked-up on paper without any constraint, and then translated to the running AI Assistant visible today on the Nedgroup Investments website. Since our bots are built with C# code running on the MS Bot Framework, they are extremely flexible and fast to build.

Deep integration into Nedgroup Investments systems

EVA integrates with the Nedgroup Investments web services via standardized HTTPS protocols, giving her access to user data (context) and the ability to perform financial transactions on behalf of the user:

  • Adding funds to accounts.
  • Requesting statements.
  • Requesting tax certificates.
  • Checking balances.

Service desk

AI assistants may be able to answer all questions in future, but that is not possible yet. In situations where EVA is unsure, she gives the user the option to chat to a client services agent, while still in the chat window, so that a real person can help resolve issues and answer questions. When the agent has finished helping the user, control is passed back to EVA.

Following is a screenshot of the agent service desk with new and unresolved “conversations” awaiting attention:


Natural language understanding

EVA allows users to type questions in plain text. Internally we send the user's text to Microsoft's LUIS service that uses machine learning models to translate the user's query into an “Intent”. This allows the user to ask things like: “How risky is your guraded[sic] fund?” and EVA will know the user is asking about the “Risk Category” for the “Nedgroup Investments Guarded Fund”.


When EVA does not understand what a user has asked, she prompts the user to try asking in a different way or transferring to a live agent.

Remembering conversation context

EVA remembers conversation context. For example: when a user asks for information about a fund, they can follow up with other questions about the same fund, without having to specify the fund name again. This is important for natural-sounding conversations:


Login via USSD or SMS

Login is done by requesting the user's ID number, then prompting for approval via the user's pre-existing cell phone number on the back-end system. Notice how no username or password is required, because the user has to accept/reject the login request on their mobile device:


“Web Views” for complex input

Some input is better suited for entry on a typical web form, for example: where one user “Addition” is meant for multiple funds. This kind of functionality would have been very cumbersome to represent via text chat. EVA supports rendering “web views” that are custom web pages embedded in the chat window.


Multi-channel support

It is possible for us to expose EVA over various channels (not just via a chat widget) with minimal changes to the code, since we use the MS Bot Framework as an intermediate layer that translates messages to the appropriate format for different channels. For example: our webchat channel shows richly formatted buttons, while rendering plain text in WhatsApp. For example:

In Webchat
In WhatsApp

Reporting and Analytics

Atura has a reporting function that gives insight to: conversation duration, messages per support agent, nr of help requests within and out of office hours, most popular “Intents”, etc.





Technology stack

  • Microsoft Bot Framework
  • React, ES6+, Babel, Webpack
  • Azure
    • Key Vault
    • App Services
    • Table Store
    • Service Bus
    • Functions
    • CosmosDb
    • Active Directory
    • LUIS


We take security very seriously, so required that EVA be scanned by an automated vulnerability scanner, as well as undergo multiple audits by an external information security company. All communication is done over secure channels, so data is encrypted over the wire and at rest.

Useful technical features

  • Consultant/agent takeover capability - allows the AI assistant to pause a Bot Framework flow and let a real human to take over the conversation.
  • Multiple channel support – Facebook Messenger, Slack, custom embedded webchat widget, etc. with a common codebase.
  • Forms engine - allows the use of the powerful and flexible Atura Forms Engine to guide users through populating many fields of input (as is usually done on traditional web forms)
  • Unit testing base classes - makes unit testing full conversation flows simple and facilitates a TDD approach to AI assistant writing.
  • Flexible NLP engine - allows the use of Microsoft LUIS, or an alternative NLP engines, wip.ai or IBM Watson for example.
  • Helper dialogs - a collection of dialogs that assist with complex tasks such as handling waiting for slow external web service calls.
  • Auto-publishing to a service bus - automatically sends conversations to a service bus for further processing by external systems.
  • Auto-archiving of conversations - all conversations are saved for reporting and analytics purposes.
  • Root coordinator dialogs - creates a consistent way to generate “Root” dialog that branch off into other dialog.