Skip to content

Generated content

WerkAI writes email summaries, reply suggestions and fields on a board. Each piece shows that WerkAI wrote it, leaves WerkOS only through a person, and stays easy to change or throw away.

Where WerkAI writes

In email, a summary sits above the newest message, and a suggested reply appears in the reply box when you answer.

On boards, WerkAI fills fields as a row arrives: the job description on a project board, or the skills read from a CV on a candidate board.

Showing who wrote it

Ana confirms the start date and asks for the signed contract by Thursday. Send the contract.

Ana Kovač 09:41

Could you send the signed contract? I want to confirm the start date before I book the flight.

Position, written by WerkAI
Job description, written by WerkAI
Client
Welder, MIG and TIG
Welding of steel structures on a production line in two shifts, with a trade test on video before the interview.
Metalworks Maribor

Text from WerkAI sits in the AI card: a blue gradient field with the WerkAI mark. A screen reader meets the card by its name, AI summary or Suggested reply.

A board column that WerkAI fills carries the WerkAI glyph after its name. Text you accept from a suggestion becomes your text and carries no mark.

Card fill
Blue gradient at 135 degrees, two stops
--ai-from, --ai-to
Card ink
One blue, at least 4.5 to 1 on both stops in both themes
--ai-ink
WerkAI mark
20 px, beside the first line
Column glyph
14 px, after the column name
--text-muted

While WerkAI writes

The card appears only when a result is on its way, at its final height, so nothing under it moves. Three dots pulse while the model works.

The text then types in, or appears whole with reduced motion. A screen reader hears the whole text at once.

A board cell WerkAI is filling shows a soft bar and tells a screen reader so.

Writing a suggested reply
Dots
6 px, one lit each 260 ms
--ai-ink
Reveal
600 ms
Cell bar
8 px high, three quarters of the cell
--text-muted

A person decides

A suggestion is not a draft. Accept puts it into the reply as your text, with the caret in it. Discard removes the card for good and returns the caret to the reply.

The summary is for reading and holds no buttons. WerkAI sends, deletes and publishes nothing by itself.

Ana Kovač 09:41

Could you send the signed contract? I want to confirm the start date before I book the flight.

Thank you, Ana. The signed contract is attached, and the start date of 6 October stands.

Correcting it

Edit a field WerkAI filled as you edit any field. A cell that reads Not processed runs again when you select it, together with the cells that depend on it.

Board owners use Reset WerkAI to run unfinished cells again, on the whole board or in the selected rows.

Position, written by WerkAI
Job description, written by WerkAI
Client
Welder, MIG and TIG
Metalworks Maribor
1 row selected

When it cannot answer

A failure is one sentence in the card's own ink, with Try again and Discard. It does not take the red error style, since nothing the person did went wrong.

Name the cause in plain words: Too many requests. Try again in a minute.

How WerkAI writes

Output is plain text in sentence case, without links, markup or dashes.

WerkAI reports facts and does not speak as a person: no I think, no praise, no apology unless it made the mistake.

Review and wording

Permitted

  • Accept and Discard as text buttons in the card's ink

    Accept takes the heavier weight. Neither takes a second color.

  • Saying what the source does not contain

    No start date is agreed yet.

Not permitted

  • Saving a suggestion as a draft before Accept

    A reply the person did not write could be sent.

  • A skeleton for a summary that may not come

    Reserving space for a card that may not arrive moves the conversation for nothing.

  • Wording that suggests a person

    I think and Great question claim a mind the model does not have.

NextMarketing pages

Generated content

How text and values that WerkAI writes are marked, reviewed by a person before they leave WerkOS, and corrected or thrown away.

  • Kind: pattern
  • Page: https://design.werklist.com/patterns/generated-content
  • Version: 2.1.2

When to use it

  • The summary above the newest message in the reading pane.
  • The suggested reply in the reply box.
  • The fields WerkAI fills on a project board, a company board and a candidate board.

When not to use it

  • Writing a draft, sending, deleting, publishing, or changing the owner or stage of a record without a person's action.
  • A skeleton for a result that may not arrive. The waiting card shows only when a result is on its way.
  • First person, praise, emotion or apology in the text WerkAI writes.
  • A disclaimer on each card. The name and the mark of the card say who wrote it.

Rules

  • The text WerkAI writes is plain text in sentence case: no markup, no links and no dashes.
  • No first person, no praise, no emotion. An apology only when WerkAI made the mistake.
  • Name what is missing (an owner, a date, a decision) and do not invent it.
  • Summaries are in English on every conversation. Suggestions use the language of the email.
  • A suggestion appears once, when a reply opens. It does not come back after Discard.
  • Accept hands the text to the reply, which saves it like typed text. Before Accept nothing is written.
  • Fields WerkAI fills are ordinary fields: a person's edit is the value.
  • Reset WerkAI is for the board owner. It runs unfinished cells again and leaves filled ones alone.
  • The card has no feedback buttons.

Anatomy

  • AI card: see the WerkAI component: gradient fill, one ink, the WerkAI mark at 20 px, text 14/20 (--ai-from, --ai-to, --ai-ink, --type-product-body)
  • Column glyph: the WerkAI glyph at 14 px, 4 px after the name of a column WerkAI fills, in muted ink; screen readers hear the column name followed by Written by WerkAI (--text-muted, --space-1)
  • Waiting dots: three 6 px dots, 4 px apart; one lit and two at 40 percent; the lit dot moves every 260 ms (--ai-ink)
  • Reveal: the text types in over 600 ms, and the card has its final height from the start
  • Cell bar: 8 px high, 75 percent of the cell width, full radius, muted ink at 20 percent, pulsing (--text-muted, --radius-full)

States

  • Absent: No card and no space held while no result is on its way
  • Waiting: The card at its final height with the dots; screen readers hear Preparing the summary or Writing a suggested reply (--ai-ink)
  • Revealing: The text types in over 600 ms; screen readers receive the whole text at once
  • Shown: The full text; a suggestion adds Discard and Accept
  • Failed: One sentence in the card ink with Try again and Discard (--ai-ink)
  • Withdrawn: When there is nothing to answer, the card leaves without a word
  • Cell writing: A pulsing bar in place of the value; screen readers hear WerkAI is writing this field (--text-muted)
  • Cell not processed: The words Not processed in muted ink; selecting the cell runs it again, with the cells that depend on it (--text-muted)

Keyboard

  • Tab: In a suggestion: Discard, then Accept
  • Enter or Space: Presses the focused card button; on a Not processed cell, runs it again

Accessibility

  • The card is a region named AI summary or Suggested reply.
  • The summary is marked as English. A suggestion takes the language of the email.
  • A screen reader receives the whole text at once. The typed copy is hidden from it.
  • The dots are hidden from screen readers, and a sentence beside them is read instead.
  • After Accept the caret is in the reply with the text. After Discard focus returns to the reply.
  • The waiting and failed states announce nothing of their own.
  • A Not processed cell is named Not processed, select to run WerkAI again.

Content

  • Card names: AI summary, Suggested reply.
  • Buttons: Accept, Discard, Try again.
  • Waiting: Preparing the summary; Writing a suggested reply.
  • Refusals: AI is not available right now. Too many requests. Try again in a minute. The model could not write this. Try again or say more about it.
  • Board: Not processed; Reset WerkAI.

Tokens

  • --ai-from
  • --ai-to
  • --ai-ink
  • --text-muted
  • --type-product-body
  • --type-product-dense
  • --radius-xl
  • --radius-full
  • --space-1
  • --focus-ring

JSON

{
  "title": "Generated content",
  "path": "/patterns/generated-content",
  "url": "https://design.werklist.com/patterns/generated-content",
  "text": "https://design.werklist.com/agent/patterns/generated-content",
  "summary": "How WerkAI output is marked, reviewed by a person and corrected before anyone relies on it.",
  "version": "2.1.2",
  "kind": "pattern",
  "name": "Generated content",
  "purpose": "How text and values that WerkAI writes are marked, reviewed by a person before they leave WerkOS, and corrected or thrown away.",
  "use": [
    "The summary above the newest message in the reading pane.",
    "The suggested reply in the reply box.",
    "The fields WerkAI fills on a project board, a company board and a candidate board."
  ],
  "avoid": [
    "Writing a draft, sending, deleting, publishing, or changing the owner or stage of a record without a person's action.",
    "A skeleton for a result that may not arrive. The waiting card shows only when a result is on its way.",
    "First person, praise, emotion or apology in the text WerkAI writes.",
    "A disclaimer on each card. The name and the mark of the card say who wrote it."
  ],
  "anatomy": [
    {
      "part": "AI card",
      "measure": "see the WerkAI component: gradient fill, one ink, the WerkAI mark at 20 px, text 14/20",
      "token": "--ai-from, --ai-to, --ai-ink, --type-product-body"
    },
    {
      "part": "Column glyph",
      "measure": "the WerkAI glyph at 14 px, 4 px after the name of a column WerkAI fills, in muted ink; screen readers hear the column name followed by Written by WerkAI",
      "token": "--text-muted, --space-1"
    },
    {
      "part": "Waiting dots",
      "measure": "three 6 px dots, 4 px apart; one lit and two at 40 percent; the lit dot moves every 260 ms",
      "token": "--ai-ink"
    },
    {
      "part": "Reveal",
      "measure": "the text types in over 600 ms, and the card has its final height from the start"
    },
    {
      "part": "Cell bar",
      "measure": "8 px high, 75 percent of the cell width, full radius, muted ink at 20 percent, pulsing",
      "token": "--text-muted, --radius-full"
    }
  ],
  "states": [
    {
      "name": "Absent",
      "change": "No card and no space held while no result is on its way",
      "tokens": []
    },
    {
      "name": "Waiting",
      "change": "The card at its final height with the dots; screen readers hear Preparing the summary or Writing a suggested reply",
      "tokens": [
        "--ai-ink"
      ]
    },
    {
      "name": "Revealing",
      "change": "The text types in over 600 ms; screen readers receive the whole text at once",
      "tokens": []
    },
    {
      "name": "Shown",
      "change": "The full text; a suggestion adds Discard and Accept",
      "tokens": []
    },
    {
      "name": "Failed",
      "change": "One sentence in the card ink with Try again and Discard",
      "tokens": [
        "--ai-ink"
      ]
    },
    {
      "name": "Withdrawn",
      "change": "When there is nothing to answer, the card leaves without a word",
      "tokens": []
    },
    {
      "name": "Cell writing",
      "change": "A pulsing bar in place of the value; screen readers hear WerkAI is writing this field",
      "tokens": [
        "--text-muted"
      ]
    },
    {
      "name": "Cell not processed",
      "change": "The words Not processed in muted ink; selecting the cell runs it again, with the cells that depend on it",
      "tokens": [
        "--text-muted"
      ]
    }
  ],
  "keys": [
    {
      "key": "Tab",
      "action": "In a suggestion: Discard, then Accept"
    },
    {
      "key": "Enter or Space",
      "action": "Presses the focused card button; on a Not processed cell, runs it again"
    }
  ],
  "accessibility": [
    "The card is a region named AI summary or Suggested reply.",
    "The summary is marked as English. A suggestion takes the language of the email.",
    "A screen reader receives the whole text at once. The typed copy is hidden from it.",
    "The dots are hidden from screen readers, and a sentence beside them is read instead.",
    "After Accept the caret is in the reply with the text. After Discard focus returns to the reply.",
    "The waiting and failed states announce nothing of their own.",
    "A Not processed cell is named Not processed, select to run WerkAI again."
  ],
  "content": [
    "Card names: AI summary, Suggested reply.",
    "Buttons: Accept, Discard, Try again.",
    "Waiting: Preparing the summary; Writing a suggested reply.",
    "Refusals: AI is not available right now. Too many requests. Try again in a minute. The model could not write this. Try again or say more about it.",
    "Board: Not processed; Reset WerkAI."
  ],
  "rules": [
    "The text WerkAI writes is plain text in sentence case: no markup, no links and no dashes.",
    "No first person, no praise, no emotion. An apology only when WerkAI made the mistake.",
    "Name what is missing (an owner, a date, a decision) and do not invent it.",
    "Summaries are in English on every conversation. Suggestions use the language of the email.",
    "A suggestion appears once, when a reply opens. It does not come back after Discard.",
    "Accept hands the text to the reply, which saves it like typed text. Before Accept nothing is written.",
    "Fields WerkAI fills are ordinary fields: a person's edit is the value.",
    "Reset WerkAI is for the board owner. It runs unfinished cells again and leaves filled ones alone.",
    "The card has no feedback buttons."
  ],
  "tokens": [
    "--ai-from",
    "--ai-to",
    "--ai-ink",
    "--text-muted",
    "--type-product-body",
    "--type-product-dense",
    "--radius-xl",
    "--radius-full",
    "--space-1",
    "--focus-ring"
  ]
}

Raw file: https://design.werklist.com/agent/patterns/generated-content