# Exxat DS — Jobs library

> **What:** Canonical reference per **job-to-be-done**, not per component.
> **Why:** Components answer "how to render". Jobs answer "what to build".
> **Who:** Humans + AI agents writing design briefs
> ([`exxat-ux-discovery-protocol.mdc`](../../../.cursor/rules/exxat-ux-discovery-protocol.mdc)).

A **job** is what the user is trying to accomplish — not the screen they end
up on. Two products with the same component stack can ship different jobs;
two products with different stacks can ship the same job. **The job is the
contract.**

## When to use this library

- The user prompt names a screen ("student detail", "settings page", "compose
  form"). Map it to a **job** first, then pick the reference.
- Before building, the design brief MUST cite the relevant job doc as a
  reference.
- If no job doc matches, **write one** (even short) as part of the work.

## Job → screen mapping

| Job | Doc | Canonical references |
|-----|-----|----------------------|
| **Review a record's full state** | [`record-detail.md`](./record-detail.md) | Students / Placements / Library detail |
| **Triage a list of records** (find at-risk / actionable) | *future* | `PlacementsClient`, `ComplianceClient` |
| **Compose / create a new record** | *future* | `new-library-item-form.tsx` |
| **Configure preferences or workspace settings** | *future* | `src/views/settings.tsx` |
| **Scan many metrics for anomalies** | *future* | Dashboard route, `DashboardTabs` |
| **Search / find anything** | *future* | `CommandMenu`, `DedicatedSearch*` |
| **Onboarding / first-run setup** | *future* | `getting-started.tsx`, `CoachMark` |
| **Approve / review submitted work** | *future* | (TBD) |

## How a job doc is structured

Every job doc must include:

1. **The job** — one paragraph; user pain, decision, action.
2. **When this job applies** — triggers, scale, frequency.
3. **Pattern: route vs sheet vs inline** — with a decision table.
4. **Information architecture** — ASCII diagram of the IA.
5. **Layers, in priority order** — identity → status → groups → activity →
   related.
6. **When to use tabs / subsections.**
7. **Navigation — the way back** (P1 enforcement).
8. **Actions** — primary, overflow, inline.
9. **States** — loading, empty, error, stale.
10. **Accessibility** — A11y concerns specific to the job.
11. **Modern SaaS analogues** — cite by product + Mx codes.
12. **Anti-patterns** — what NOT to do.
13. **Quick checklist** for the post-build audit.

## See also

- [`../modern-saas-patterns.md`](../modern-saas-patterns.md) — the canon
- [`../component-selection-guide.md`](../component-selection-guide.md) —
  decision tree from job → composition
- [`../blueprints/`](../blueprints/) — framework-agnostic specs
- [`../../../.cursor/skills/exxat-senior-ux/SKILL.md`](../../../.cursor/skills/exxat-senior-ux/SKILL.md)
