Zendesk LMS Conversation Simulator App

Zendesk LMS Conversation Simulator App

In this article I'll review Zendesk's new LMS Conversation Simulator app and explore its capabilities for training new agents, setting up demo environments or validating your Zendesk setup.

As Senior Technical Architect at Premium Plus one of the parts of my job is building out custom demo's for Zendesk to highlight the possibilities of the Zendesk platform. And while building out technical setups, prototyping advanced AI Agents or configuring Omnichannel Routing setups is fun, one of the elements that often takes the most time is creating relevant and realistic sample tickets to use in demo's and videos.

Similarly for this blog I often need fun sample tickets for screenshots to use in articles. There too, writing up original and fun sample tickets takes time.

One of my most used processes is going into ChatGPT, asking it to write an "email to a customer care team about X and providing the output in HTML". I then copy that response into the body of a Postman payload, which then creates a ticket in Zendesk for a sample user. Which then generates a nice ticket in Zendesk to use in screenshots, or demo's

For a while now I've played around with the idea of turning this process into an app, I even prototyped a few rough versions of a Zendesk app that takes an input and generates a sample ticket. But as always with these hacks, I rather spend time writing actual content and real marketplace apps, than build things to improve my processes. Especially if my current process already works.

LMS Conversation Simulator app

A few weeks ago Zendesk introduced the LMS Conversation Simulator app. The application can be used to create realistic training tickets in your Zendesk instance and assign these tickets to one or more agents.

Agents get served with these tickets (you can define how many they get) and can resolve these tickets one by one. Each ticket is tagged, so a Team lead can look for tickets with that tag to evaluate the tickets, and thus evaluate the quality of an agents work.

Or you can use the tickets to train agents on new procedures, or onboard new employees and serve them with tickets in a real Zendesk environment, while not exposing them to actual customers yet.

Or you can use the LMS to generate tickets about unique complex and rarely occurring scenarios that agents should know but you hope never happen in real life. Fire drills for ticketing.

I myself installed the apps in my own instances not for training purposes, but to generate random sample tickets to use in screenshots or when testing out new apps and workflows. My own attempts and prototypes? Yep. They're rm -rf ~/Developer/AI-tickets now.

Installing the LMS Conversation Simulator app

The Simulator is available on the Zendesk Marketplace as a free app and does not require you to have any Zendesk Advanced AI or ChatGPT license.

Installing the app is as simple as well, click to install I guess?

Installing and using the LMS Conversation Simulator app
The LMS Conversation Simulator ticket generation app by Zendesk Labs assigns realistic, true-to-life training tickets to agents in a structured, easy-to-use way. Thi…

Overview

Once installed you're presented with a wizard to setup new training templates. Similar to SweetHawks' Recurring ticket app (disclaimer they previously sponsored this blog), you can setup a template for specific kinds of tickets you want the app to generate.

The home page shows an overview of all available templates, and the ability to add a new template. Each template shows its name, description, creator and a list of agents the template is assigned too (more on this later).

I'd love to see some insights here too like a link to the actual tickets, or the amount or time the template has run, but for now it's a basic list of templates.

Setting up a template

To make use of the Simulator app you need to create a new Training Template. This starts by setting a title and description for your template. These are only used to identify the template and do not impact its actual contents.

Next up you start defining your scenario. This starts by selecting the intents which match the tickets you want to create. E.g. Subscription Status, or Subscription updates. Or, if you don't find a matching intent but want the tool to base tickets on existing data in your environment, you can also specify a search which will surface tickets that match. (E.g. tickets in the last year that are tagged subscription upgrade with a positive CSAT").

💡
Zendesk does note that you should be careful selecting tickets that contain PII. I assume this data is send to ChatGPT or similar without a filter so this search option might pose a GDPR or security risk.

To conclude you can then add additional context like a tone of voice (friendly, professional, irritated,...) and add some additional refinements that explain what the ticket should contain.

I tested with a few scenarios based on Intents and was pleasantly surprised with the results. Sample tickets were relevant, the tone of voice was often spot on and the content was varied enough that it felt like actual different customers reaching out about a similar topic than just rephrasing of the same ticket each time.

At the end of the setup you can also add links to training information. If you do this will assign a first ticket to the assigned tickets with information for them to read. Once they read the documentation and solve the ticket, the app will start generating the actual training tickets. Quite nice from a training perspective!

Setting up a training for an agent

As mentioned in the previous paragraph, we can use templates to setup a training for your agents. This is done by clicking on assign and going through a second wizard.

This flow asks you to select a template and define an amount of sample tickets to be generated. You can optionally tag tickets (for easier retrieval later, or to exclude them from reporting) and then you can select one or more agents to assign these sample tickets to.

Once saved, the LMS will generate an initial ticket for each agent with a link to the documentation you added in the previous step. If they resolve that ticket, the LMS will generate the training tickets one by one, a new one after they solve the previous one.

I would love to get some insight in what was generated within the LMS app, but for now setting up views that list tickets with the specified tag or a search will make do.

Result

Once you start assigning the training tickets, agents will see the generated tickets in their Agent Home or Views. Ticket subjects are prefixed with [LMS] and they look and act like actual Zendesk tickets (cause they are!)

What's nice is that even though tickets are directly assigned to the agent (and possibly skipping any Omnichannel Routing or assignment rules), all other elements in Agent Workspace work as expected. Tickets get intent and sentiment assigned, we can do Entity detection, summaries, Agent Copilot's auto-assist and macros still work as expected, making the training experience for your agents as close as possible to the real thing.

While playing around with the LMS I found this tool also useful to not only test against but also test new Copilot procedures, validate ticket skills and queue behavior, or test other Zendesk behaviors. Really nice to see how broad this tool can be used.

💡
I haven't been able to trigger the conversation mode though. That might be caused by the fact I have Agent Copilot enabled? No idea but the description mentions replies, which I haven't seen. Once I get it to work I'll update the article.

How does it technically work?

When looking under the hood it seems this app is powered by a combination of custom objects to store the templates, and a script that runs outside of the instance to generate the tickets themselves.

Using Custom Objects as a storage option for configurations is a smart move. It allows for storing the actual values in custom fields, scales nicely and is less cumbersome than storing the configuration payloads as a setting in the app itself.

I've seen this used by the new Service Catalog (article on this one soon!), the Relay app and a few other Marketplace apps. I'd love for an option to hide custom objects though. Making these objects types visible to all agents clutters up that interface and might expose specific types of training tickets you do not want (other) agents to see (yet). But it does lead to opportunities of importing and backing up your configurations if you play around with APIs a bit.

I'd love to have a bit more configuration access to the created tickets though. If I want to train on different user types for example, would be nice to specify a set of tags to be added to the requester. Similarly, in a multi-brand environment being able to set a brand should be possible though. Currently everything is created as the instances primary brand.