Suggestions

  1. Scheduled trigger: We send out suggestions at specific time intervals. On such an interval cycle, we trigger the TechWolf Teams Bot Backend. The interval can be changed depending on your needs, but usually we send suggestions daily. This might seem like a lot, but this is only the first few days, when the integration kicks off; after the initial period, suggestions will slow down anyways (you probably do not have infinite skills).

  2. Fetch suggestions: To get those suggestions, we fetch them from our own API. More specifically, from the Suggestions Skill Profile endpoint, for all employees.
    We also fetch the Custom Properties for all employees, so that we can figure out the Azure ID for them. This way we know how to link Employees in TechWolf with Teams Users.

  3. Filter employees:

    For each employee that did not validate their previous card we do one of the following:

    • If it was ignored longer than the configured time-period, the previous suggestions are closed. We send suggestions again, with a message indicating that it is a reminder.
    • If it was more recent, we skip suggestions for them, until the next cycle.

    Filter suggestions:

    • For each Skill Cluster, we suggest a maximum number of skills (4 by default). This keeps the variety of the suggestions high. If a Skill Cluster is selected for skill suggestions, we take the maximum number of skills, unless there is less available in the cluster.
    • Enough skill clusters are gathered to reach a minimum number of skills (10 by default).
  4. Send suggestions: We send out the suggestions to the azure service.

  5. Azure to Teams: The azure service sends them to the correct Teams environment, and the employees receive their suggestions.

Validations

  1. The user submits a card, which informs the bot service that it should send an update to the configured endpoint, which is the TechWolf bot backend.

  2. The message is received by the bot backend, which receives a list of confirmed and rejected skills with their Clusters.

  3. The TechWolf bot stores this information, such as which skills, but also when and by whom (might be different from the subject employee).

  4. The feedback is sent to the TechWolf API, using the Employee Skill Profile feedback endpoint and can be tracked with the source field as "tw-teams-bot". To retrieve these sources in an employee’s profile, use the query parameter &include=sources, which returns the Skill’s source_event with "event_type": "skill_profile_feedback" and "source": "tw-teams-bot".

    If this is enabled, the corresponding Skill Clusters are also marked by their validation status. This information is ready to be used for more downstream applications.

Employee Skill Management Tab

In addition to our Skill Assistant Bot:

We offer an interactive tab that enables employees to efficiently manage and track their skills. Within this tab, employees can:

  • View and Reevaluate Skills: Access their validated and rejected skills for assessment and potential updates.
  • Add Missing Skills: Identify and add any skills that may be lacking.

Linking users through Graph

TechWolf will read the Employee ID from the Microsoft Graph API through the following endpoint:

https://graph.microsoft.com/v1.0/users/<user id>?$select=employeeId

Notice the employeeId query parameter to filter out the Employee ID of the given Teams user.

Data flows

General overview

Components

Microsoft Teams

The Microsoft Teams environment used by the customer.

Azure infrastructure

TechWolf utilizes Azure infrastructure to facilitate communication between Microsoft Teams and the Skill Assistant. This infrastructure comprises:

  • Bot Service: Required by Microsoft Teams to create a bot. It acts as the intermediary between Teams and the Skill Assistant, handling message exchanges and event triggers from Teams users.
  • Entra Application: Handles authentication and authorization with Microsoft Teams and the Graph API.
  • Front Door: Routes incoming requests from the Bot Service or Skill Profile tab to the appropriate Skill Assistant deployment (EU/US).

Skill Assistant

TechWolf’s backend system responsible for generating skill suggestions, processing feedback, and managing data for the Skill Profile tab.

Skill Engine API

The main TechWolf product. Handles skill-related data processing and integration.

Data processing

Types of data that is processed

  • Skill Suggestions: Automatically inferred skills for an employee, retrieved from the Skill Engine API.
  • Skill Feedback: Employee feedback on their suggested skills. Either validating that they have the skills, or rejecting the skills.
  • Skill Profile: A list of validated and rejected skills maintained in the Skill Engine API.
  • Microsoft User Data: Employee details retrieved from Microsoft systems, including name and email.

Data Processing Overview

Managed bySuggestionsFeedbackSkill ProfileMicrosoft User Data
Microsoft TeamsCustomerXXXX
Azure: Entra ApplicationTechWolf
Azure: Bot ServiceTechWolfXXX
Azure: Front DoorTechWolfXXXX
Skill AssistantTechWolfXXXX

Data storage

Overview of Data Storage Locations

Managed bySuggestionsFeedbackSkill ProfileMicrosoft User Data
Microsoft TeamsCustomerXXX
AzureTechWolf
Skill AssistantTechWolfXXX (No personal identifiable information stored)

Communication Protocols

All data exchanges occur over REST APIs secured by TLS 1.2 or higher.

Suggesting Skills

Process

  1. Fetch suggestions: On a daily basis, the Skill Assistant will fetch suggestions generated by the API.
  2. Routing the suggestion: The suggestion is sent to the Azure Tenant, where it is routed to the concerning employee.
  3. Sending the suggestion: The suggestion is sent through the ‘adaptive card’ format by the Bot Service to the customer Teams tenant.

Data Involved

  1. Teams ID, Internal ID, Suggestion
  2. Teams ID, Suggestion
  3. Teams ID, Suggestion

User Input

User input entails button clicks, messages and installation events.

  1. User input request: When a user interacts with a suggestion, it is sent to the Bot service in the TechWolf Azure instance.
  2. Routing to Skill Assistant: The request is processed and routed by the Bot Service to the Skill Assistant. Only necessary information is retained, and names and email addresses are dropped.
  3. Execution of request: The Skill Assistant directs the request in proper format to the API, where the request is executed on the customer’s data.
  4. Response to user: A response, based on the request’s proper execution, is sent back to the Bot Service to route it back to the concerning user.
  5. Sending the response: The response is sent to the user by the Bot Service.

Data Involved

  1. Event Data, Feedback, MS User Data (Contains first name, last name and email address which cannot be dropped from the request. ref)
  2. Event Data, Feedback, MS User Data (Contains first name, last name and email address which cannot be dropped from the request. ref)
  3. Internal ID, Teams ID, Depending on the event: Feedback, Request suggestions or Skill Profile
  4. Teams ID, Custom response, Depending on the event: Suggestion or Skill Profile
  5. Teams ID, Custom response, Depending on the event: Suggestion or Skill Profile