Next Better Iteration: Building a Chat Moderation Filter with Looker
If we wait for perfection in business - or the exact right thing to do - we get nothing done and become a bottleneck.
In this blog post, I report steps taken to address pain points for a customer support team in need of new tools designed to facilitate more efficient workflow processes while educating and delighting customers. I discuss the process of introducing new SOPs, automation, and a Looker dashboard.
The objective is to demonstrate how placing emphasis on automation/continuous improvement processes can unlock value for the business.
Software Tools:
- Google Looker
- Slack
- LucidChart
Example: Chat Moderation Filter Tool using Looker
Background:
The product team has launched a new chat feature designed to facilitate communication between two parties within a technology marketplace (B2B business model). Early signs signal product fit, however, the lag in training/education has left a gap for the customer support team to respond to as new issues arise.
Internal reporting has flagged numerous cases whereby users falsely assume Company X is actively monitoring chat between company A or B. Due to the nature of the business, urgent unanswered requests on behalf of either party have resulted in a poor outcome for the customer (payer). Timely behavioral intervention reduces the risk of customer churn and repeated instances of said behavior.
Problem:
Scaling up the business has increased demands on the chat moderation aspect of the customer support role. The product team has limited resourcing in the short-to-medium term to build product 2.0 with improved tooling for internal use.
Proposed solution:
Build an operational Looker dashboard to filter/screen out irrelevant chat notifications
Introduce a revised workflow within the current scope of work functions
Key Findings:
1/ Information Gathering – Consulting Team Members
No detail is too small. To understand the whole scope of the problem consultation with team members should give rise to a narrative that addresses the 5W1H.
- New chat replies trigger notifications in Slack
- The current workflow is highly repetitive; lacks automation
- Most responses do not require moderator intervention
- Increased daily chat inbound predicts omitted chat requests
- Internal-facing Product UI not designed for chat moderation
- Estimate 0.5 to 2 minutes performing tasks related to function (opening and closing windows, changing tabs, reviewing chat history, documentation, triaging, etc.)
- At least 7 data fields necessary to assist chat moderators in effective decision making
- Information gathering from internal stakeholders (staff) yielded task-related time allocation estimates of approximately 30 seconds spent addressing FA vs. 2 minutes for requests that require intervention (INV). False alarms are thought to represent 90% or 9/10 messages.
2/ Information Gathering – Technical Requirements
Main Findings:
- Data fields required to analyze chat demand over time are available as are the fields necessary to build an operational tool
- Data warehouse refresh rate every two hours on even hours
- Data flow (source BI tools) under 15 minutes
- No code integration between Looker Slack
3/ Descriptive Analyis
Using descriptive analytics we can drill down on data from the last 8 months dating back to the initial launch of the product.
Data fields (2):
- round(mean(total messages sent per day),2)
- Last message sent date
Filters(3):
- User type is not equal to system – chat messages auto-generated by product
- Chat Messaging First Message Sent Day of Week - is not Saturday AND is not Sunday)
- Chat Messaging Last Message Sent Date – is in the past 30 days
The line chart shows engagement increased significantly between January and May 22' and then plateaued thereafter. Furthermore, a consistent trend is observed for weekly seasonality whereby weekdays (regular business hours) remain higher versus weekends.
Filtering weekends, dates = 30 days, and NOT computer-generated messages, the average daily messages count is 126 (range 82-162).
3/ Looker Dashboard
The first order of operations is to determine what types of visualization(s) will be most conducive to informing chat moderation decision-making while screening out FA.
A table chart will do the trick. Recall that consultations resulted in the identification of 7 data fields that provide all the relevant info to make an informed decision. Let's add those fields to the table as new columns and then determine if there are new table calculations that further assist the decision-making process.
How about the element of time passing? Let's include a field that keeps track of the amount of time the sender is left unread by the recipient. The calculation is as follows:
diff_minutes(${dim_work_order.last_client_chat_message_sent_time}, ${dim_work_order.last_service_partner_chat_message_sent_time})
Lastly, let's also add a simple calculation that assigns the value '1' to each chat conversation. This field can serve as a trigger should the team prefer single or multiple-value scheduling alerts (see the section below).
Filters:
The 'chat-msg content' field is applied as a filter to screen keywords/phrases that might cue staff that timely urgent intervention is needed (e.g. "please help!" or "this is an emergency...").
Instead of guessing the exact keywords, phrasing, or sentence, we can leverage filter string patterns that introduce more flexibility into the filter. Looker filter expression (aka. SQL Regex function) 'matching(advanced) --> %insert_string% identifies patterns from the entire conversation.
Other filters might include said time passing since the last 'urgent' unread msg over a given time period and exclusion of chat messages auto-generated by a bot or program.
Alerts and Schedules:
Alerts are set on query-based or 'Look-linked tiles' on dashboards and apply to at least one numeric measure or table calculation in the tile's visualization. Single-value alerts and time-series alerts can be configured to the end-users preference.
We can anticipate said keyword filter going through many iterations before the dashboard is ready to replace the current process. For this reason, scheduled Slack reminders that map the data refresh rate will help ensure that staff review the most recent chat history (e.g. 8:20am; 10:40am; 1:00pm...).
If using single value alerts (as opposed to timer) create a new field using table calculations and then assigned conditional scheduling that triggers alerts when X value is shown in the dashboard.
value=1 so that all conversations (rows) in the table that meet the filter criteria are flagged in a timely manner.
Looker Dashboard:
Here is a screenshot of the Looker view applied to a dashboard. Note, that black rectangles are annotated to prevent visibility of customer data. As an aside, if you choose a similar approach for your team, consider the impact of ordering fields in such as way that is most likely to lead to a decision the fastest.
5/ Proposed Customer Support Workflow Process
The two diagrams below illustrate the proposed changes to the existing workflow process.
4/ Calculating Efficiency Gains
Self-reported values provided by the customer support team and calculated average daily chat count will serve as inputs to determine efficiency gains at the current inbound volume (last 30 days).
Inputs:
- Average daily chat count = 126
- False Alarm (FA) Rate = 90%
- Intervention (INV) Rate = 10%
- FA review (mins) = 0.5
- INV review (mins = 2.0
Formula:
Daily Chat Total * probability of FA/INV = total per chat type
Total per chat type * time allocated per msg = total moderation time
FA Calculations:
126 * 0.9 = 113.4 --> 113.4 * 0.5 = 56.7 mins
INV Calculations:
126 * 0.1 = 12.6 --> 12.6 * 2 = 25.2 mins
Dashboard Performance Goals:
A. reduce review of FA by 90%
56.7 - (56.7* 0.9) = 5.67 review mins/day
B. Increase speed of review for INV by 20%
25.2 - (25.2 * 0.2) = 20.16 review mins/day
Total efficiency gains:
((5.67 + 20.16) / (56.5 + 25.2) - 1) = 68.4%*
*higher efficiency returns on larger N of chat replies
Conclusion
In conclusion, there are observed gaps in customer support that (for the time being) can not be resolved through productization due to company resource constraints and prioritization. Existing data infrastructure and automation tools are available to streamline implementation. Customer support team members are anticipated to benefit from reduced context switching which may result in higher quality work, less burnout, and opportunities to reallocate labor to the completion of higher value tasks within the department.
Strengths, Weaknesses, and Limitations:
- Cost-effective (free!)
- Rapid implementation with minimal re-training
- Efficiency gains of ~68% relative to the current workflow
- Reduce chat-related slack notifications by 92.8%
- Reduced mouse clicks and movements
- Limited upside for keyword-based filter expressions
- Data refresh rate constraints





