Skip to content

WerkAI

WerkAI is the AI layer of WerkOS. Recruiters reach it through the Ask WerkAI field in the header, and what it writes appears in the AI card, where they read it, accept it or discard it.

The field and the card

Candidates

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.

The field is the way in and the card is the way out. Both carry the blue of WerkAI: the glyph in the field, the gradient in the card.

When to use it

Use one ask field per screen, in the header: at the center of the desktop header, and across the phone header's row. The field is only for talking to WerkAI.

Use the AI card for text the model wrote that a person reads or accepts. Values WerkAI fills on a board stay in their cells, as the Generated content page shows.

The ask field

A gray field with the WerkAI glyph and the words Ask WerkAI. The glyph is its only color, so the way in is recognizable without a colored fill.

Rest

Hover

Focus

Phone header

Height
36 px
Padding
16 px, 12 px in the phone header
--space-4, --space-3
Corner
8 px
--radius-lg
Fill
Control gray, no border
--surface-control
Glyph
17 px, stroke 2.25, blue gradient
--brand-true
Gap
8 px
--space-2
Label
14/20, weight 500
--text-muted

The AI card

One blue gradient field with the WerkAI mark. A suggested action follows the text as a second paragraph at weight 500. A suggestion adds Discard and Accept under the text.

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.

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

Fill
Gradient at 135 degrees, two stops
--ai-from, --ai-to
Ink
One blue for text and buttons
--ai-ink
WerkAI mark
20 px, beside the first line
Gap
8 px
--space-2
Text
14/20
Padding
12 by 16 px; 12 px inside a reply box
--space-3, --space-4
Corner
12 px when the card stands alone
--radius-xl
Buttons
Text only, 13/18, 32 px high, 44 px on touch

States

The field turns blue on hover and focus, and its label moves to full ink so it stays readable on the tint. The card waits, types, shows its text, or fails with one sentence.

Waiting

Writing a suggested reply

Shown

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

Failed

Too many requests. Try again in a minute.

Field hover
Fill tinted 14 percent blue, label in full ink
--brand-blue, --text
Field focus
2 px ring, 2 px out
--focus-ring
Waiting
Three 6 px dots, one lit each 260 ms
--ai-ink
Typing
Text appears over 600 ms at its final height
Failed
One sentence, Try again and Discard
--ai-ink
Button hover
A 10 percent wash of the ink
--ai-ink

Behavior

On the home page, the field types example requests once per session, such as Find the candidates from Nepal. The first move to another page ends it. With reduced motion the field shows Ask WerkAI and nothing moves.

Choosing the field opens WerkAI.

Keyboard and screen readers

The field is a button named Ask WerkAI. The typed examples are hidden from screen readers, so the name holds still while the text moves.

The card is a region named AI summary or Suggested reply. It holds the whole text as soon as it appears, so a screen reader never reads half a sentence.

Tab
The field; in a suggestion, Discard then Accept
Enter or Space
Opens WerkAI, or presses the focused button

Content

Write WerkAI as one word with capital W, A and I. The field reads Ask WerkAI. Card buttons read Accept, Discard and Try again.

Example requests start with a verb and name a real task: Draft an offer for a new client. The phone keeps shorter ones that fit its row: Draft an offer.

Color, shape and glyphs

Permitted

  • One ask field per screen

    Search keeps its own place in the rail.

  • The glyph as the only color at rest

    The field stays gray until you point at it.

Not permitted

  • Blue label text on the blue hover tint

    It falls below readable contrast in both themes. Keep full ink.

  • A bordered or filled ask field

    It competes with the page's primary button.

  • A second glyph inside the card

    The WerkAI mark is the only one.

NextCountry mark

WerkAI

The field in the WerkOS header that opens WerkAI, and the card in which WerkAI's text is read, accepted or discarded.

  • Kind: component
  • Page: https://design.werklist.com/components/werkai
  • Version: 2.1.2

When to use it

  • Ask field: once per screen, at the center of the desktop header and across the phone header row.
  • AI card, summary: above the newest message in the reading pane.
  • AI card, suggestion: inside the reply box, above the editor.

When not to use it

  • Search: it keeps its own place in the rail and the command palette.
  • Board values WerkAI fills: they stay in their cells (Generated content).
  • Any icon inside the card other than the WerkAI mark.
  • A colored, bordered or capsule shaped ask field.

Anatomy

  • Field container: a button, 36 px high, the full width of its slot, padding 16 px (12 px compact), radius 8 px, no border, no shadow (--surface-control, --radius-lg, --space-4, --space-3)
  • Field glyph: sparkle glyph 17 px, stroke 2.25, in a gradient of the button blue, mixed with white at the bottom left and with navy at the top right; the same in both themes (--brand-true, --on-brand, --navy)
  • Field label: 14/20 weight 500, one line with an ellipsis; while examples type, a 1 px caret follows the text (--type-product-body, --text-muted)
  • Field gap: 8 px between the glyph and the label (--space-2)
  • Card container: a gradient at 135 degrees; the summary has padding 12 by 16 px and runs to the edges of the reading pane; the suggestion has padding 12 px, radius 12 px, 12 px from the sides of the reply box, 8 px above the editor (--ai-from, --ai-to, --space-3, --space-4, --radius-xl, --space-2)
  • WerkAI mark: the WerkAI sparkle at 20 px in the card ink, 2 px below the top of the first line, the only glyph in the card (--ai-ink)
  • Card text: 14/20, line breaks kept; a suggested action follows as a second paragraph, 8 px below, at weight 500 (--type-product-body, --ai-ink)
  • Card buttons: text buttons at least 32 px high (44 px on touch screens and below 768 px), padding 10 px, radius 8 px, 13/18; Accept at weight 500, Discard and Try again at 400; at the right, 4 px apart, 8 px under the text (--type-product-dense, --radius-lg, --ai-ink)

Variants

  • Ask field: At the center of the desktop header.
  • Ask field, compact: In the phone header row, with its own short examples.
  • AI card, summary: In the reading pane; no buttons; always in English.
  • AI card, suggestion: In the reply box; Discard and Accept; in the language of the email.

Sizes

  • Field: height 36 px, padding 16 px, type 14/20 weight 500
  • Field, compact: height 36 px, padding 12 px, type 14/20 weight 500

States

  • Field rest: The control fill and a muted label (--surface-control, --text-muted)
  • Field hover and focus: The fill takes 14 percent of --brand-blue over the control fill; the label turns to full ink; with motion allowed, the glyph turns 12 degrees and grows to 1.1 over 300 ms (--brand-blue, --surface-control, --text, --duration-slow, --ease-standard)
  • Field focus visible: A 2 px ring, 2 px out (--focus-ring, --focus-ring-width, --focus-ring-offset)
  • Field pressed: Scale 0.99
  • Field examples: On the home page, once per session, the field types a few example requests behind a blinking caret and erases each one; it stops when the person moves to another page
  • Card waiting: The final height held; three 6 px dots 4 px apart, the lit dot moving every 260 ms, the others at 40 percent (--ai-ink)
  • Card typing: The text appears over 600 ms at its final height
  • Card shown: The full text and, in a suggestion, the two buttons
  • Card failed: One sentence at 13/18 with Try again and Discard; the sentence is at least 192 px wide, so the buttons wrap under it on narrow screens (--ai-ink)
  • Card button hover: A wash of the ink at 10 percent (--ai-ink)
  • Card button focus: A 2 px ring, 2 px out (--focus-ring)
  • Reduced motion: No examples, no caret, no glyph turn, no typing, still dots; the text appears whole

Keyboard

  • Tab: Moves to the field; in a suggestion, to Discard, then Accept
  • Enter or Space: Opens WerkAI from the field, or presses the focused card button

Accessibility

  • The field is a button named Ask WerkAI that opens WerkAI. The typed examples are hidden from screen readers.
  • The card is a region named AI summary or Suggested reply. The summary is marked as English.
  • A screen reader receives the whole card 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: Preparing the summary, Writing a suggested reply.
  • After Accept the caret is in the editor. After Discard focus returns to the reply.
  • The field label and the card text meet 4.5 to 1 in both themes.

Content

  • Name: WerkAI, one word with capital W, A and I.
  • Field label: Ask WerkAI.
  • Card names: AI summary; Suggested reply. Buttons: Accept, Discard, Try again.
  • Desktop examples: Send an email to Martina; Show me what is overdue this week; Draft an offer for a new client; Find the candidates from Nepal; Who is working on the Bosnia project?; Summarize yesterday's meeting notes.
  • Phone examples: Email Martina; What is overdue?; Draft an offer; Nepal candidates; Tasks for today.

Tokens

  • --surface-control
  • --text-muted
  • --text
  • --brand-blue
  • --brand-true
  • --on-brand
  • --navy
  • --focus-ring
  • --focus-ring-width
  • --focus-ring-offset
  • --radius-lg
  • --radius-xl
  • --space-2
  • --space-3
  • --space-4
  • --type-product-body
  • --type-product-dense
  • --ai-from
  • --ai-to
  • --ai-ink
  • --duration-slow
  • --ease-standard

JSON

{
  "title": "WerkAI",
  "path": "/components/werkai",
  "url": "https://design.werklist.com/components/werkai",
  "text": "https://design.werklist.com/agent/components/werkai",
  "summary": "The field where you ask WerkAI, and the card where its answer appears.",
  "version": "2.1.2",
  "kind": "component",
  "name": "WerkAI",
  "purpose": "The field in the WerkOS header that opens WerkAI, and the card in which WerkAI's text is read, accepted or discarded.",
  "use": [
    "Ask field: once per screen, at the center of the desktop header and across the phone header row.",
    "AI card, summary: above the newest message in the reading pane.",
    "AI card, suggestion: inside the reply box, above the editor."
  ],
  "avoid": [
    "Search: it keeps its own place in the rail and the command palette.",
    "Board values WerkAI fills: they stay in their cells (Generated content).",
    "Any icon inside the card other than the WerkAI mark.",
    "A colored, bordered or capsule shaped ask field."
  ],
  "anatomy": [
    {
      "part": "Field container",
      "measure": "a button, 36 px high, the full width of its slot, padding 16 px (12 px compact), radius 8 px, no border, no shadow",
      "token": "--surface-control, --radius-lg, --space-4, --space-3"
    },
    {
      "part": "Field glyph",
      "measure": "sparkle glyph 17 px, stroke 2.25, in a gradient of the button blue, mixed with white at the bottom left and with navy at the top right; the same in both themes",
      "token": "--brand-true, --on-brand, --navy"
    },
    {
      "part": "Field label",
      "measure": "14/20 weight 500, one line with an ellipsis; while examples type, a 1 px caret follows the text",
      "token": "--type-product-body, --text-muted"
    },
    {
      "part": "Field gap",
      "measure": "8 px between the glyph and the label",
      "token": "--space-2"
    },
    {
      "part": "Card container",
      "measure": "a gradient at 135 degrees; the summary has padding 12 by 16 px and runs to the edges of the reading pane; the suggestion has padding 12 px, radius 12 px, 12 px from the sides of the reply box, 8 px above the editor",
      "token": "--ai-from, --ai-to, --space-3, --space-4, --radius-xl, --space-2"
    },
    {
      "part": "WerkAI mark",
      "measure": "the WerkAI sparkle at 20 px in the card ink, 2 px below the top of the first line, the only glyph in the card",
      "token": "--ai-ink"
    },
    {
      "part": "Card text",
      "measure": "14/20, line breaks kept; a suggested action follows as a second paragraph, 8 px below, at weight 500",
      "token": "--type-product-body, --ai-ink"
    },
    {
      "part": "Card buttons",
      "measure": "text buttons at least 32 px high (44 px on touch screens and below 768 px), padding 10 px, radius 8 px, 13/18; Accept at weight 500, Discard and Try again at 400; at the right, 4 px apart, 8 px under the text",
      "token": "--type-product-dense, --radius-lg, --ai-ink"
    }
  ],
  "variants": [
    {
      "name": "Ask field",
      "use": "At the center of the desktop header."
    },
    {
      "name": "Ask field, compact",
      "use": "In the phone header row, with its own short examples."
    },
    {
      "name": "AI card, summary",
      "use": "In the reading pane; no buttons; always in English."
    },
    {
      "name": "AI card, suggestion",
      "use": "In the reply box; Discard and Accept; in the language of the email."
    }
  ],
  "sizes": [
    {
      "name": "Field",
      "height": "36 px",
      "padding": "16 px",
      "type": "14/20 weight 500"
    },
    {
      "name": "Field, compact",
      "height": "36 px",
      "padding": "12 px",
      "type": "14/20 weight 500"
    }
  ],
  "states": [
    {
      "name": "Field rest",
      "change": "The control fill and a muted label",
      "tokens": [
        "--surface-control",
        "--text-muted"
      ]
    },
    {
      "name": "Field hover and focus",
      "change": "The fill takes 14 percent of --brand-blue over the control fill; the label turns to full ink; with motion allowed, the glyph turns 12 degrees and grows to 1.1 over 300 ms",
      "tokens": [
        "--brand-blue",
        "--surface-control",
        "--text",
        "--duration-slow",
        "--ease-standard"
      ]
    },
    {
      "name": "Field focus visible",
      "change": "A 2 px ring, 2 px out",
      "tokens": [
        "--focus-ring",
        "--focus-ring-width",
        "--focus-ring-offset"
      ]
    },
    {
      "name": "Field pressed",
      "change": "Scale 0.99",
      "tokens": []
    },
    {
      "name": "Field examples",
      "change": "On the home page, once per session, the field types a few example requests behind a blinking caret and erases each one; it stops when the person moves to another page",
      "tokens": []
    },
    {
      "name": "Card waiting",
      "change": "The final height held; three 6 px dots 4 px apart, the lit dot moving every 260 ms, the others at 40 percent",
      "tokens": [
        "--ai-ink"
      ]
    },
    {
      "name": "Card typing",
      "change": "The text appears over 600 ms at its final height",
      "tokens": []
    },
    {
      "name": "Card shown",
      "change": "The full text and, in a suggestion, the two buttons",
      "tokens": []
    },
    {
      "name": "Card failed",
      "change": "One sentence at 13/18 with Try again and Discard; the sentence is at least 192 px wide, so the buttons wrap under it on narrow screens",
      "tokens": [
        "--ai-ink"
      ]
    },
    {
      "name": "Card button hover",
      "change": "A wash of the ink at 10 percent",
      "tokens": [
        "--ai-ink"
      ]
    },
    {
      "name": "Card button focus",
      "change": "A 2 px ring, 2 px out",
      "tokens": [
        "--focus-ring"
      ]
    },
    {
      "name": "Reduced motion",
      "change": "No examples, no caret, no glyph turn, no typing, still dots; the text appears whole",
      "tokens": []
    }
  ],
  "keys": [
    {
      "key": "Tab",
      "action": "Moves to the field; in a suggestion, to Discard, then Accept"
    },
    {
      "key": "Enter or Space",
      "action": "Opens WerkAI from the field, or presses the focused card button"
    }
  ],
  "accessibility": [
    "The field is a button named Ask WerkAI that opens WerkAI. The typed examples are hidden from screen readers.",
    "The card is a region named AI summary or Suggested reply. The summary is marked as English.",
    "A screen reader receives the whole card 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: Preparing the summary, Writing a suggested reply.",
    "After Accept the caret is in the editor. After Discard focus returns to the reply.",
    "The field label and the card text meet 4.5 to 1 in both themes."
  ],
  "content": [
    "Name: WerkAI, one word with capital W, A and I.",
    "Field label: Ask WerkAI.",
    "Card names: AI summary; Suggested reply. Buttons: Accept, Discard, Try again.",
    "Desktop examples: Send an email to Martina; Show me what is overdue this week; Draft an offer for a new client; Find the candidates from Nepal; Who is working on the Bosnia project?; Summarize yesterday's meeting notes.",
    "Phone examples: Email Martina; What is overdue?; Draft an offer; Nepal candidates; Tasks for today."
  ],
  "tokens": [
    "--surface-control",
    "--text-muted",
    "--text",
    "--brand-blue",
    "--brand-true",
    "--on-brand",
    "--navy",
    "--focus-ring",
    "--focus-ring-width",
    "--focus-ring-offset",
    "--radius-lg",
    "--radius-xl",
    "--space-2",
    "--space-3",
    "--space-4",
    "--type-product-body",
    "--type-product-dense",
    "--ai-from",
    "--ai-to",
    "--ai-ink",
    "--duration-slow",
    "--ease-standard"
  ]
}

Raw file: https://design.werklist.com/agent/components/werkai