All work07 / 07
Alight Consulting GmbHOttobrunn, Germany (remote)
2020Jul – Sep 2020

Conversational AI · NLP

Smart-Bot

A learning assistant that understands what you ask.

A conversational assistant for an e-learning library: Azure LUIS interprets each request, Microsoft Graph fetches matching books, courses and trainings from SharePoint, and the bot answers with product cards.

  • 9user intents understood by the language model, with a fallback for off-topic requests
  • 3SharePoint catalogues queried live: books, courses, trainings
  • AzureBot Framework, LUIS, Microsoft Graph and SharePoint, deployed on Azure

Overview

The problem

Learners on the company's e-learning site had to browse long catalogues of books, courses and trainings to find what they needed. The goal was an assistant that answers natural-language requests in French and returns the right items directly, with a link to each.

What was missing

The company worked on Microsoft technologies, so the assistant had to be built from Azure services end to end: Bot Framework for the conversation, LUIS for language understanding, Microsoft Graph for data access and SharePoint as the catalogue.

Architecture

INPUTLearnerasks in French, innatural languageSERVICEAzure Bot Servicechannel registration· web chatBOT APPLICATION · PYTHON, BOT FRAMEWORK SDK V4, AIOHTTPPROCESSINGMessages endpoint/api/messages · adapter with error handlerPROCESSINGWelcome handleradaptive welcome card + sitenamePROCESSINGSmartBot dialogroutes on top intent andentitiesPROCESSINGConversation stateuser and conversation memoryPROCESSINGLUIS recognizertop intent · entities ·instance dataOUTPUTAdaptive Cardsproduct card: title, author,type, price, link, add tocartPROCESSINGCatalogue matchingentity matched againstproduct titlesSERVICEAzure LUIS appintents · entities ·utterancesSERVICEMicrosoft GraphAPIOAuth 2.0 token fromAzure ADDATASharePointe-learning sitelists: books, courses,trainingsSERVICEAzure cloudhosting and deploymentreplyhosted on

Swipe to see the whole diagram →

Request flow: the learner's message reaches the bot through Azure Bot Service; LUIS returns intent and entities; Microsoft Graph reads the SharePoint catalogue; the bot replies with adaptive cards.
1 · AUTHORING THE MODELINTENTSDepartementdomaineserviceslistes_courslistes_livrelistes_formationAcheter_livresuivre_courssuivre_formationNoneENTITIES · DOMAINSITjava · cisco · security …Managementleading · RH …Soft skillscommunication · stress …EXAMPLE UTTERANCES (FRENCH)labelled with their intent and entity spansphrase-level examples per intent, including None2 · TRAIN AND PUBLISHLEARNEDTrainingsupervised intent classificationand entity extraction from thelabelled utterancesPROCESSINGVersioned modelPROCESSINGPublishingstaging and production slots behinda REST endpoint3 · PREDICTION IN THE BOTQUERYUser message“je veux suivre un cours de java”SERVICEPrediction endpointcalled by LuisRecognizer for every turnOUTPUTJSON resulttop intent: suivre_coursscores for all intentsentities with character offsets ($instance)Example query and result fields are illustrative of the format.

Swipe to see the whole diagram →

Inside the LUIS app: the intents and entities we authored, training and publishing, and the prediction call made for every message.
Technical details
  • Intents: Departement, domaine, services, listes_cours, listes_livre, listes_formation, Acheter_livre, suivre_cours, suivre_formation, plus None for out-of-scope requests.
  • LuisRecognizer called with all-intent scores and instance data; the dialog routes on the top intent and the extracted entities.
  • Graph: one token per session, then GET on the site's lists (books, courses, trainings) with expanded fields; descriptions trimmed for the cards.
  • Microsoft has since retired LUIS (2025) in favour of Conversational Language Understanding in Azure AI Language.
  • Microsoft: LUIS retirement

What I built

  1. 01

    The language model

    Designed and trained the LUIS app: intents for domains, services, catalogue listings and purchases, domain entities (IT, management, soft skills) and labelled French example utterances.

  2. 02

    The bot

    Built with the Python Bot Framework SDK v4 on aiohttp: welcome flow with an adaptive card, intent routing, conversation and user state, error handling.

  3. 03

    Live catalogue access

    Connected Microsoft Graph with an Azure AD OAuth 2.0 token to read the SharePoint lists, and matched the recognised entity against product titles.

  4. 04

    Answers people can act on

    Adaptive product cards with title, author, type, price, description and links to the product and the cart; deployed on Azure.

Main results

Outcome

A working assistant, demonstrated end to end: greeting with the site name, answers about available domains and services, catalogue listings with links, and product cards for a requested course, book or training.

Limits and next steps

LUIS works from labelled example utterances, so new phrasings need new examples; the catalogue match is a substring search on titles rather than semantic retrieval.

Beyond this project

Natural-language access to enterprise content: intent recognition, entity extraction and API orchestration over company data.

Contact

Interested in the work?

I'm looking for AI research engineer roles in computer vision and video understanding, ideally in sports analytics, though not only. Ready to start a new journey.

Paris, France

jouiniahmed66@gmail.com Email me