Skip to content

Spec sheet / Workplace chat

Workplace chat dataset spec

A workplace chat dataset is a set of Slack or Microsoft Teams conversations delivered as one JSON object per thread or channel-day, with ordered turns, pseudonymised authors, reply links and channel labels. This spec lists the fields to expect, what drives size and quality, the checks to run on a sample, and where chat earns its place in SFT, RL and evals.

A product team typing messages at laptops in an open-plan office at dusk, a woman with braids focused on her screen in the foreground

Common sources

SlackMicrosoft Teams

One line holds

One thread or one channel-day per line

Format

JSONL in the published schema

Volume

Assembled to spec

Record structure

How this type uses the shared conversation schema. Fields not listed here follow the general definition.

Fields specific to workplace chat records
FieldWhat it holds
source.kindchat_thread, or channel_day where a channel has no threads
labels.channel_typepublic, private, shared or direct, as licensed
labels.channel_purposeGeneralised purpose such as incidents or regional sales, never a client name
turns[].reply_toPosition of the turn being answered inside the same object
turns[].kindmessage, reply, or event for joins, renames and pins
turns[].reactionsCounts per emoji, without who reacted
turns[].bottrue for integrations and workflow posts

What one record holds

Chat is the noisiest enterprise source and the one closest to how people actually think aloud at work. A useful delivery groups messages into conversations before anything else happens. Where a team used threads, the thread is the natural unit; the Slack thread dataset schema guide maps each Slack field onto that record. Where a channel is a running stream, a channel-day is the fallback: all messages in one channel on one calendar day, with replies kept attached to their parent. Either way, each line of the file is a complete conversation in the published schema, so a loader never has to stitch turns back together.

Individual chat messages are short and lean on what came before. A message that reads "ok, ship it" means nothing alone and a great deal after twelve turns of debate. That is why the conversation, not the message, is the record, and why the reply_to field matters: it lets a model see which earlier point someone is answering when several discussions overlap.

Where it comes from

Chat should leave a workspace through the platform's own admin export, run by the organisation that holds the rights. On Slack, what an export contains depends on the plan and on the owner's permissions, so the supplier should state exactly which conversation types the files cover (Slack's export documentation). Teams content is normally collected through a Microsoft Purview eDiscovery export (Microsoft's export guide). Ask for the route in writing: it tells you what can and cannot be in the set.

Where identity hides in chat

A structured author field is the easy part. The harder cases sit in the text: first names in greetings, nicknames, initials, @mentions rendered as display names, custom emoji named after colleagues, and channel names that carry a client's name. A good supplier builds its list of people from the workspace member directory and expands it into the variants people type, then replaces every match with a typed token. Your sample review should go looking for exactly these cases. The full list of checks is on the de-identification checklist.

Writing the spec

State the languages, the team functions you care about (engineering, operations, sales, support), the period, and whether you want threads only or channel-days as well. Say how much bot traffic you will tolerate. If you plan to link chat to tickets or code from the same organisation, ask for shared cross-references in the links field from the start; adding them later is much harder.

Size, sample checks and questions to ask

What drives size

  • Which conversations the admin export can reach on the workspace's plan
  • Years of active use and the number of active members
  • Share of talk inside threads versus loose channel chatter
  • Bot and integration traffic, often large and usually filtered out
  • Whether private channels and direct messages are in licensed scope

Checks on a sample

  • Timestamps rise within each object after the date offset
  • Every reply_to points at an earlier turn in the same object
  • Bot posts flagged, and their share within the agreed limit
  • One person keeps one token for the whole conversation
  • No raw email addresses, phone numbers, handles or display names in text
  • Language tags match the text on a random sample

Ask the supplier

  • Which export route and plan produced the files, and what that route leaves out
  • How bot posts, joins and channel events were handled
  • Whether private channels or direct messages are included, and who authorised it
  • How conversations were grouped, and the median turns per object
  • How names typed inside messages were matched to tokens

Where workplace chat data fits in training

SFT on multi-party dialogue

Turn-taking, hand-offs and implied context between several people, which single-user assistant logs never show.

Agent skills

Summarising a thread, finding the decision and its owner, drafting the follow-up message in the team's own register.

Evals

Held-out conversations for summarisation and question answering. Private workspace data cannot have leaked into pretraining.

RL environments

Chat as the channel through which an agent receives requests and reports back while it acts in other systems.

More on this topic

Guides on workplace chat data

All guides

FAQ

Workplace chat datasets: questions

What is the best unit for a chat training record?

The conversation. Use the thread where the team used threads, and a channel-day where it did not. Single messages are too short to carry meaning on their own, so a record should hold the whole exchange with reply links intact.

Should bot and integration messages stay in a chat dataset?

Usually not as training text. Ask the supplier to flag them so you can decide. Alerts from monitoring tools can be useful context in incident threads, but in many workspaces they are a large share of all posts.

Can a chat dataset include direct messages?

Only where the organisation explicitly licensed them and the de-identification policy covers them. Direct messages carry more personal content than channels, so many buyers exclude them by default.

How do I check that names were removed from chat text?

Pull a random sample of a few hundred conversations and search for greetings, @ signs, capitalised words next to verbs of speech, and channel names. Ask the supplier for its own leak-scan results and compare.

Why does Slack export coverage matter for a dataset spec?

Because the plan and permissions decide which conversation types an export can contain. The supplier should state the route used, so you know whether private channels could even be present.

How large is a typical workplace chat dataset?

There is no typical size. It depends on members, years of use and how much is filtered. Size it in conversations and tokens after filtering, and ask the datasheet to state both.

Keep reading

Next step

Need workplace chat data built to this spec?

Send the languages, period, functions and intended use. We reply by email with what can be assembled.