job

An open role surfaced to someone who might want it.

A job listing matched to the user.

A rendered job pane (job-v1)
job-v1

Fields in data

The envelope around data (publisher, label, expiresAt…) is the same on every type: see the envelope.

FieldTypeNotes
variant"v1"optionalDesign variant to render (defaults to v1).
rolestringrequired1–120 chars
companystringrequired1–120 chars
locationstringoptionalup to 120 chars
salarystringoptionalup to 60 chars
whystringoptionalup to 240 chars
urlstringoptionalformat: uri

Craft

  • role is the title as posted, nothing appended — no company, no location, no seniority editorializing.
  • location carries the arrangement too: "San Francisco · Hybrid", "Remote (AU/NZ)".
  • salary is a pre-formatted display range: "$220–280K", "£95–120K + equity". Omit it rather than guessing.
  • why is the whole reason this card earns its place — say what about *this person* matched: "ex-Stripe · design systems · 8 yrs".
  • Put the match strength in label ("Match · 94%") so the card leads with the role, not the score.
  • Roles close: set expiresAt to the posting's close date, or ~30 days out.

Avoid

  • Don't send a role with no why — an unexplained job card reads like spam.
  • Don't paste the job description into why; it's one line, not a summary.
  • Don't invent a salary range the posting doesn't state.

Examples

Complete payloads for POST /api/v1/feed/items or the MCP publish_pane tool.

A strong match from a job board

{
  "type": "job",
  "publisher": "LinkedIn",
  "publisherInit": "in",
  "publisherColor": "#0A66C2",
  "label": "Match · 94%",
  "data": {
    "role": "Staff Product Designer",
    "company": "Linear",
    "location": "San Francisco · Hybrid",
    "salary": "$220–280K",
    "why": "Why you · ex-Stripe · design systems · 8 yrs",
    "url": "https://linear.app/careers/example"
  }
}

A contract role where compensation isn't published

{
  "type": "job",
  "publisher": "Hacker News",
  "publisherInit": "Y",
  "publisherColor": "#FF6600",
  "label": "Who's hiring · August",
  "data": {
    "role": "Senior Backend Engineer (Contract)",
    "company": "Volt Grid",
    "location": "Remote (AU/NZ) · 6 months",
    "why": "Why you · Postgres at scale · energy sector · open to contract",
    "url": "https://news.ycombinator.com/item?id=example"
  }
}