ADR-065: Engagement Field and Professional Sites

Adds one engagement field (personal, contract, employer) to case studies and sites. Case studies show it as a label; the sites gallery groups entries into Professional and Personal, and carries employer content work such as reports and glossaries alongside websites.

Last updated

Status

Accepted (2026-10-20, recommended in session and approved by the owner)

Context

The bio leads with fifteen years in marketing and demand generation, but every entry on the site is personal or Clownware work. Chris has employer and contract work to show: content properties built at Coalesce, Saviynt and Knowde, marketing websites for Hustle and Scandit, and the prototype behind the Marketing Truths platform (the grounded RAG case study, a contract engagement).

Issue #145 proposed a separate published collection and a section on /work/. On review, the sites collection already carries the fields that proposal needed (client, url, role, year, screenshot, case-study link), and the owner asked whether contract work should be separated from side projects and whether the sites gallery should split into professional and personal.

Two different questions are tangled here. Lanes (ADR-063) answer what kind of work it is. Who the work was for is a second axis, and it applies to both collections.

Decision Drivers

  • Show the professional record: employer and client work must have a home
  • One vocabulary: the same field and values in both collections
  • No empty views: a group or label with nothing published must not render
  • Keep ADR-063: lanes stay the only filter on /work/

Considered Options

Option 1: A new published collection and section (issue #145)

Pros: content work gets its own shape. Cons: a third card type and listing for fields sites already has.

Option 2: Separate contract case studies into their own section on /work/

Pros: professional work is visibly apart. Cons: today the section would hold one coming-soon card. A second grouping on /work/ competes with the lane pills.

Option 3: One engagement field on both collections (chosen)

engagement: "personal" | "contract" | "employer", default "personal".

Pros: one axis, recorded once per entry; the sites gallery can group by it and case-study cards can label it without a new route or card type. Cons: content work (a report, a glossary) sits in a gallery named Sites.

Decision

Option 3.

Implementation Details

  • src/content.config.ts exports engagements and adds engagement to the projects and sites schemas, defaulting to "personal".
  • sites also gains an optional kind ("site" | "report" | "glossary" | "publication", default "site"). SiteCard shows the kind label for anything other than a site.
  • src/utils/sites.ts groupSites() splits entries into professional (contract and employer) and personal, each sorted by sortOrder then newest year. /sites/ renders Professional first, each group under its own h2, and skips a group with no published entries.
  • WorkCard takes engagement and labels contract and employer work in the metadata row (“Contract”, “Employer”). Personal work carries no label.
  • /work/ gets no new section. Revisit when three or more professional case studies are published.
  • Professional entries ship as drafts until the owner confirms the role wording and permission for each (issue #145).

Consequences

Positive

  • Professional work has a home without a new route or card type
  • One field answers “who was this for” across the site

Negative

  • “Sites” is a loose name for reports and glossaries
  • Every professional entry needs a role and permission check before it shows

Neutral

  • Existing entries default to personal; only professional entries set the field

Validation

  • src/utils/__tests__/sites.test.ts covers groupSites()
  • src/components/molecules/__tests__/WorkCard.test.ts and SiteCard.test.ts cover the engagement and kind labels
  • e2e/sites.spec.ts covers the Personal group and the skipped empty group; e2e/work.spec.ts covers the Contract label on the RAG card
  • The decision is wrong if professional entries outnumber personal ones and the gallery reads as a client list, or if visitors miss the professional group

References

  • Issue #145: the original proposal, superseded by this record
  • Issue #19: the grounded RAG case study and its permission
  • ADR-063: lanes as routes
  • ADR-027: collection schema design