Job Posting
A job opening with title and hiring organization as the durable identity.
Fields
2 required · 4 recommended. Every field points at its schema.org property — the definition lives in one place, so nothing drifts. The full inherited superset stays available through @0xintuition/schema-org.
| Field | Type | Description | |
|---|---|---|---|
title |
string | required | The title of the role. schema.org/title |
hiringOrganization |
string | required | The organization hiring for the role. schema.org/hiringOrganization |
jobLocation |
string | optional | The location of the role if needed. schema.org/jobLocation |
datePosted |
iso-date | optional | The date the job was posted. schema.org/datePosted |
url |
url | optional | The canonical job posting URL. schema.org/url |
sameAs |
string[] | optional | Canonical URLs that identify the same job posting. schema.org/sameAs |
The canonical shape
What a Job Posting atom's data looks like. These exact bytes are what calculateAtomId hashes — shared shape is shared identity.
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "Senior Protocol Engineer",
"hiringOrganization": "Intuition Labs",
"jobLocation": "Remote",
"datePosted": "2026-01-01"
}
import { buildAtomData } from "@0xintuition/classifications";
import { calculateAtomId } from "@0xintuition/ids";
const atomData = buildAtomData("job-posting", {
title: "Senior Protocol Engineer",
hiringOrganization: "Intuition Labs",
jobLocation: "Remote",
});
// deterministic — same bytes, same ID, offchain and on
const atomId = calculateAtomId(atomData);
What a Job Posting can say
The recommended triple vocabulary for this classification — each row is a claim shape the graph already understands, with the kind of atom expected on the other end.
Enrichment
Paste a bare reference and the enrichment engine fills a Job Posting in from its sources (default pipeline: job-posting) — titles, canonical sameAs URLs, and the fields above, merged onto the same deterministic atom.