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.

Common sources
One line holds
Format
Volume
Record structure
How this type uses the shared conversation schema. Fields not listed here follow the general definition.
| Field | What it holds |
|---|---|
| source.kind | chat_thread, or channel_day where a channel has no threads |
| labels.channel_type | public, private, shared or direct, as licensed |
| labels.channel_purpose | Generalised purpose such as incidents or regional sales, never a client name |
| turns[].reply_to | Position of the turn being answered inside the same object |
| turns[].kind | message, reply, or event for joins, renames and pins |
| turns[].reactions | Counts per emoji, without who reacted |
| turns[].bot | true 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
Agent skills
Evals
RL environments
Guides on workplace chat data
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.