Project Statement

For our Collaborative assignment, we created a Slackbot that sends teams weekly or daily updates on their metric health and an abbreviated summary of the project. 

Project Context

The Data Team was responsible for the management of data flow and organization throughout the process, ensuring other teams could navigate through the dashboard and update their metrics periodically as they worked towards them. Most of our organization revolved around Speckle models, where teams uploaded their geometry and related metadata on a weekly basis to allow for routine updates to the dashboard. 

In order to extract the relevant data and push it, we developed a process whereby we could automatically accept required data from the models and then verify it by comparing it against a preset data set. After this validation the algorithm then used the data to calculate the metrics for each team before displaying it in the dashboard. The other teams were asked to send in simplified models and lighter streams to ensure a smoother process of data extraction. 

Explanation

As the Hyper A Data Team we focused on providing and building interoperability tools for the design teams to use. We did not to engage in the modeling tasks but instead validated that all design models were able to be used for data extraction and used for coordination between design teams.

We designed the following:

  1. Data Exchange diagrams between each design team.
  2. Data Dashboard:
    1. Multiple Goals/Uses:
      1. Presents the project to outsiders
      2. Extracts Metric Component data from speckle models using Specklepy
      3. Computes metric values
      4. Compares metric values to goal values to measure team performance
      5. Interactive Calculators for each metric
      6. Configurator for SlackBot
      7. Speckle Model Browser
      8. Speckle Model Attribute Search
      9. Overall Project Statistics
  3. Data Sharing Guide: https://docs.google.com/document/d/1TcoK1byvg1LVtIWXYc0Li7JhvZu-flwLZoPb4L_KR8E/edit?usp=drive_link
  4. Communication Standards
    1. Twice Weekly Standing Project Meetings
    2. #bimsc25-studio-a Slack Channel
      1. With Meeting Agendas and pinned communications
    3. Separate Slack Chats for each Design Team with each Design Team
Fig. Speckle Model Chart

A naming convention was also agreed upon in the beginning of the project for easier manipulation of the data structure for the project, ensuring it would be applicable to any model that followed the steps and was not locally bound to the project it was being built for. This agnostic form of data extraction allowed us to streamline the script for potential future use, following the parametric, data-driven methodology required for this particular studio. This last project is important because design teams want to design and may not check the dashboard as regularly as the data team would like. By using a Slack Message as a delivery message we lower the effort burden and send data directly to the teams instead of asking them to bring themselves to the data.

Fig. Data Workflows

While we maintained a version control system, we were not able to implement a thorough Quality Control method, which is why we wanted to build a slack bot to help us monitor the data flowing into the dashboard more efficiently. Each of the teams has a set number of metrics they were aiming to optimize for, which we fed into our code so that it could send us updates on each of their progress. 

Fig. Data Verification Visualization in Dashboard

Design for the Slackbot

There are a few aspects we cover in our update, recent project activity, data availability, and data analysis.  These aspects are directly related to the dashboard we are developing as a design story, debugging tool, and project health visualization.

Fig. Data Flow for Slackbot Configuration

Recent Project Activity

The update starts with a summary of recent version activity.  It lists out the number of versions since the last update, and which models have been updated.  It then highlights the person who pushed each version and suggests you contact them with any questions.

Data Availability

For each team, the bot scrapes through the latest version of the specified model that should hold the KPI data for that team.  It finds what it can, and verifies that the data format meets expectations.  We had already started a version of this implementation in our dashboard, which is why the slackbot complements the rest of our data organization strategy.

The bot includes in the daily update a report on which teams are missing data in their Speckle model.

Data Analysis

For each team, the bot computes their team’s KPI metric which has been defined in the Studio Class.  This KPI value is on a 0.0 to 1.0 scale, indicating how successful the team currently is in achieving their design goals.

The update includes each team’s metric so the team is able to inform their design.

Implementation

Fig. Inputs and Outputs for Slackbot

Server

The bot is hosted on our Streamlit server and run as a scheduled task.

Webhooks

The bot accesses the Speckle Webhook to automatically log each version update.  This reduces computation as the script will not need to scrape all the models in the project, searching for new versions.

Fig. Slackbot UI on Dashboard
Fig. Slackbot Live

Project Outline

  • The BIMSC25 HyperA Bot SlackBot is a Slack App in the MACAD Slack Workspace.
  • We set up two webhooks in the app:
    • One webhook sends messages to the #hypera_bot_test channel for testing purposes.
    • The other webhook sends messages to the #bimsc25-studio-a channel.
      • This channel is the communication hub for the entire 17 person Hyper A Studio Project.
      • These messages are for delivery, not testing.
  • We added a configurator to our dashboard that allows the data team to manipulate settings for the SlackBot.
  • We added a subprocess to our dashboard that provides a mini-version of the dashboard (based on the configuration settings) in text markdown and sends the text as a message to Slack using the webhooks.
  • Timer functions are used to run the process every 30 seconds and check if it’s the appropriate time to send a message.
Fig. Slackbot Output in Team Channel

Term Review

Positives:

  1. After establishing communication and data sharing standards, Design Teams were able to share and coordinate with minimal input from Data Team.
  2. Metric calculation was implemented early
  3. Meetings and slack communication allowed rapid concensus on conflicting design goals
  4. SlackBot is implemented with MACAD Slack Server and available for all Design Teams
  5. Teams were able to provide all metric component data to Data Team and more granular data to other design teams.
  6. We built a Data Validation Dashboard that allowed us to live monitor the data health of each Design Team with a percentage grade.

Unsolved:

  1. Because the Data Team focused on interoperability our data extraction intentionally limited. A future step of the project would be more granular data extraction and analysis.
  2. We could have focused more on project tracking and statistics.
    1. Ex: monitoring which Design Teams were not keeping pace with other
    2. Ex: we could have built network diagrams breaking down each speckle model
  3. SpecklePy extraction was too slow
    1. We could have focused on data caching or other efficiency methods to increase dashboard speed, making tool building easier
  4. Because of speed issues, we required each team to provide a separate data only model, because this model wasn’t integral to their design tasks, teams did not regularly update their data models.
    1. This could be solved by speeding up data extraction
    2. This could also be solved by requiring teams update their data model on more regular schedule
  5. Teams did not check the dashboard as regularly as Data Team would like for their metric values.
    1. The SlackBot is an attempt to solve this problem.