Current job boards are siloed, inconsistent, and inaccessible to AI. Learn why we need an open protocol for jobs.
Structured data on Nostr. LLM-friendly. Decentralised. Open to humans and AI agents alike.
How we're building this with Nostr events, structured tags, and MCP servers for AI integration.
No, but it's decentralised, and ideally suited. If you wish, you can use the schema elsewhere
No, but it can save you time once an LLM it has access to structured jobs data
Yes, 100%
We are creating a schema and system to add structured jobs to a decentralised system, so humans can access and leverage LLMs to help match jobs to people
Yes, the code already works, and sends listings to and from Nostr View the Nostr event
event id : e4b7ddeb6ab3c197e7931e8ce48454c29e3cfab92aaccef20694f170d1a602ab
The traditional employment system was built for a centralized era. Job seekers depend on intermediaries, companies rely on expensive recruitment processes, and the global workforce remains fragmented by geography and platforms.
A decentralised jobs protocol removes unnecessary intermediaries, enabling direct connections between talent and opportunity. Workers retain control over their data and reputation, while employers access a global talent pool transparently.
A future where work is frictionless, fair, and accessible to everyone. Where talent flows freely across borders, where reputation is portable and verifiable, and where the true value created is distributed directly to those who create it.
No single entity controls the network. All participants operate as peers with equal access to protocol rules. This eliminates rent-seeking intermediaries and ensures the system evolves transparently.
Users maintain complete ownership and control of their data. Participation is voluntary, and users can exit without losing their history or reputation. Privacy is protected while maintaining verifiable credentials.
The protocol is designed to work with multiple blockchains, storage layers, and identity systems. No vendor lock-in. Users choose the tools and platforms that work best for them.
All job listings, terms, and outcomes are publicly auditable. Smart contracts enforce agreements automatically. This reduces fraud and builds trust through cryptographic proof rather than institutional reputation.
Participants are rewarded for honest behavior. Bad actors face consequences through reputation mechanisms. The protocol creates positive-sum outcomes where all parties benefit from participation.
The protocol is designed to scale to billions of users without compromising decentralisation or security. Layer 2 solutions and efficient data structures enable high throughput.
Anyone should be able to participate regardless of technical sophistication. User interfaces abstract away complexity while maintaining the security guarantees of the underlying protocol.
The protocol operates across three primary layers: identity and reputation (on-chain), job listings and agreements (smart contracts), and coordination and discovery (decentralised networks).
Self-executing contracts define job terms, dispute resolution, and payment escrow. These run on public blockchains, ensuring immutability and enforceability without intermediaries.
Verifiable credentials and DIDs (Decentralised Identifiers) allow workers to build portable reputation across the network. Cryptographic signatures prove ownership without revealing personal data.
On-chain reputation is built through job completion, skill verification, and peer review. The system is resistant to sybil attacks and encourages honest behavior through economic incentives.
Job listings are indexed across IPFS and similar networks, making them censorship-resistant and universally accessible. Parties can discover opportunities without relying on centralised databases.
The protocol uses multi-signature approvals for high-value transactions, timelocks for dispute windows, and cryptographic verification for all claims. Auditable on-chain history provides complete transparency and enables quick resolution of conflicts.
Planned features include privacy-preserving skill verification, autonomous dispute resolution through DAOs, cross-chain job execution, and AI-powered job matching based on skills and preferences.
Matching employers with candidates should be simpler, more trustworthy, and cheaper. Today's legacy systems are hit-and-miss and fundamentally not future-proof for automation.
According to research from the Industrial Skills Strategy Council, 20% of the UK workforce could be significantly underskilled for their jobs by 2030. This issue is likely common across the world.
The future is inevitable: AI agents will participate in job markets alongside humans. We need to build structured, open protocols now—before the chaos of proprietary AI systems competing over unstructured data.
We propose an open protocol that enables everyone—including AI—to search for jobs. Better for humans, structured for machines, and built on decentralised infrastructure.
Nostr is an apolitical communication commons. A simple standard that defines scalable architecture of clients and servers that spread information freely. It provides exactly what we need: a decentralised backbone for job listings.
The protocol uses structured tags and controlled vocabularies, making job data instantly machine-readable. No NLP needed. Standardised fields for title, company, experience level, employment type, location type, and salary ensure consistency across the entire network.
The core structure is handled by tags, while traditional free form 'description' can still use plain text or Markdown (readable by humans and LLMs). The Decentralised Jobs Protocol, DJP, provides the full structure for rich indexing.
A small fee to post jobs funds the relays and drives adoption. It also solves spam by making it economically irrational to flood the network with garbage listings.
The protocol includes forward compatibility for the hybrid world where AI Agents are considered for tasks. Instead of a fee or salary, agents require payment for tokens used and power consumed.
We define specific Nostr event kinds for the job protocol:
Each job posting uses standardised tags to ensure machine-readability:
Core required fields (title, summary, company) keep the protocol clean. Optional fields use custom namespacing for industry-specific requirements (security clearances, certifications, etc.). Tools can ignore unknown namespaces while preserving compatibility.
An MCP (Model Context Protocol) Server queries Nostr relays, allowing foundation models like Claude and ChatGPT to fetch accurate, up-to-date job postings directly. AI agents can autonomously discover and match relevant opportunities.
The protocol builds on Google's schema.org/JobPosting standard for compatibility with existing search and indexing systems. New tech integrates with what already works.
Employers post jobs to Nostr relays with structured tags. Job seekers and AI agents query the network for listings. The decentralised relay network ensures availability and censorship-resistance. No single company controls the data.
A Schema.org-Compatible, AI-Accessible Job Marketplace on Nostr
The Decentralised Jobs Protocol introduces a novel approach to job listings by leveraging Nostr's decentralized infrastructure to create an open, spam-resistant, and AI-accessible employment marketplace. By combining Schema.org's JobPosting standard with Nostr event kinds, this protocol enables both human job seekers and AI agents to discover, filter, and apply for opportunities without platform lock-in or intermediaries.
The global recruitment industry suffers from fundamental structural problems:
As AI agents increasingly perform knowledge work tasks, they require structured, machine-readable job specifications, clear performance requirements, transparent payment mechanisms, and verifiable completion criteria. Current job platforms are designed exclusively for human employment and cannot accommodate AI agents as legitimate applicants.
The protocol defines five event kinds:
| Kind | Purpose | Status |
|---|---|---|
| 39993 | Job Posting / Listing | Proposed |
| 39994 | Job Application Submission | Future |
| 39995 | Professional Profile / Credential Verification | Future |
| 39996 | Employer Verification / Claims | Future |
| 39997 | Skill Graph / Endorsements | Future |
The content field MUST contain UTF-8 JSON following Schema.org conventions where applicable.
Unknown fields MUST be ignored by clients to ensure forward compatibility.
Every event in this family MUST include:
{
"type": "string",
"version": 1
}
type describes the subtype for that event kind (e.g., "job", "resume", "skill")
version supports future schema evolution
For job postings specifically, the content MUST be valid Schema.org JobPosting JSON-LD.
To reduce spam, events MAY include a payment_proof object:
{
"payment_proof": {
"amount_sats": 1000,
"invoice": "lnbc1...",
"preimage": "<payment_preimage>",
"txid": "<optional on-chain txid>"
}
}
amount_sats — the amount paid in satoshis
invoice — Lightning invoice (BOLT-11)
preimage — Lightning payment preimage (proof of payment)
txid — optional on-chain transaction ID for larger payments
Clients MAY prioritize or filter events based on the presence and validity of payment_proof.
Relays MAY require payment proofs for posting privileges but MUST NOT reject events during normal propagation.
The primary schema for professional data. Content MUST be valid Schema.org JSON-LD for job postings.
Full Schema.org-compliant job posting:
{
"@context": "https://schema.org",
"@type": "JobPosting",
"type": "job",
"version": 1,
"identifier": "acme-senior-rust-dev-a3f7c8d1",
"title": "Senior Rust Developer",
"description": "Build distributed systems using Rust and Nostr protocol. 5+ years experience required.",
"datePosted": "2025-01-15",
"validThrough": "2025-12-31",
"eligibleWorkerType": ["Human"],
"hiringOrganization": {
"@type": "Organization",
"name": "Acme Corp",
"url": "https://acme.com",
"logo": "https://acme.com/logo.png",
"sameAs": [
"https://twitter.com/acmecorp",
"https://github.com/acmecorp"
]
},
"jobLocation": [{
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressCountry": "US",
"addressRegion": "CA"
}
}],
"jobLocationType": ["TELECOMMUTE"],
"employmentType": ["FULL_TIME"],
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 120000,
"maxValue": 180000,
"unitText": "YEAR"
}
},
"skills": ["Rust", "Nostr", "Distributed Systems", "WebAssembly"],
"qualifications": "Bachelor's degree or equivalent experience",
"responsibilities": "Design and implement decentralized protocols",
"applicantLocationRequirements": [{
"@type": "Country",
"name": "US"
}],
"applyUrl": "https://acme.com/careers/apply/rust-dev",
"nostrEmployerPubkey": "npub1...",
"lightningAddress": "hiring@acme.com",
"nip05Verified": "jobs@acme.com",
"payment_proof": {
"amount_sats": 1000,
"invoice": "lnbc1...",
"preimage": "abc123..."
}
}
For tasks designed for AI agents:
{
"@context": "https://schema.org",
"@type": "JobPosting",
"type": "job",
"version": 1,
"identifier": "taskplatform-image-classification-b4e8d2f3",
"title": "Image Classification Task",
"description": "Classify product images into categories with 95%+ accuracy.",
"datePosted": "2025-01-15",
"validThrough": "2025-12-31",
"eligibleWorkerType": ["AIAgent"],
"hiringOrganization": {
"@type": "Organization",
"name": "TaskPlatform AI"
},
"jobLocationType": ["TELECOMMUTE"],
"employmentType": ["TASK_BASED"],
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 0.05,
"maxValue": 0.10,
"unitText": "TASK"
}
},
"requiredCapabilities": [
{
"name": "Image Classification",
"level": "Advanced"
},
{
"name": "Multi-category Recognition",
"level": "Intermediate"
}
],
"responseTimeMax": {
"value": 5.0,
"unit": "SECOND"
},
"accuracyMin": {
"value": 95.0,
"unit": "PERCENT"
},
"throughputMin": {
"value": 1000,
"unit": "TASKS_PER_HOUR"
},
"interfaceType": "API",
"protocol": "REST",
"humanOversight": "Required",
"applyUrl": "https://api.taskplatform.com/apply"
}
{
"eligibleWorkerType": ["Human", "AIAgent"],
"humanOversight": "Required",
...
}
{
"type": "resume",
"version": 1,
"name": "Alice Example",
"headline": "Backend Engineer",
"skills": ["rust", "python", "grpc"],
"work_history": [
{
"role": "Backend Engineer",
"company": "Acme Corp",
"start": "2020-01",
"end": "2024-05"
}
]
}
{
"type": "skill",
"version": 1,
"name": "rust",
"level": "expert"
}
Job posting events (kind 39993) MUST include structured tags for filtering and discovery:
["d", "<unique-job-identifier>"]
["t", "Jobs"]
["company", "<company-name>"]
["title", "<job-title>"]
["employment-type", "FULL_TIME|PART_TIME|CONTRACTOR|TEMPORARY|INTERN|VOLUNTEER|TASK_BASED|MICRO_TASK"]
["location-type", "TELECOMMUTE|ON_SITE|HYBRID"]
["skill", "<skill-name>"]
["salary", "<min>", "<max>", "<currency>", "<period>"]
["country", "<ISO-3166-code>"]
["region", "<state/province>"]
["expires", "<ISO-8601-date>"]
["worker-type", "Human|AIAgent"]
["employer-pubkey", "<npub-or-hex>"]
["lightning", "<lightning-address>"]
["company-url", "<https://...>"]
["nip05", "<verified@domain.com>"]
["capability", "<capability-name>", "<level>"]
["response-time-max", "<value>", "<unit>"]
["accuracy-min", "<value>"]
["throughput-min", "<value>", "<unit>"]
["interface", "API|RPC|WEBHOOK|WEB_PORTAL"]
["protocol", "REST|GraphQL|gRPC"]
["oversight", "Required|Optional|None"]
By embedding Schema.org-compliant JSON-LD in the content field, job postings become eligible for Google's Job Search rich results. Employers can publish to Nostr relays, embed on their website, and validate with Google's Rich Results Test.
An MCP Server exposes job data to AI assistants (Claude, ChatGPT, etc.) via standardized 'tools'. This enables natural language job search through AI assistants, automatic skill matching, and conversational application workflows.
Relays may require small Lightning payments for posting jobs (100-1000 sats, ~$0.03-$0.30). This creates economic friction against spam while remaining accessible to legitimate employers.
Employers can verify their identity using NIP-05 (internet identifier), creating a web-of-trust where verified employers build reputation over time.
The reference implementation provides a Rust library for creating, validating, and publishing job listings to Nostr relays with automatic Schema.org JSON generation.
The MCP server exposes three tools:
Applications use NIP-04 encrypted DMs or external URLs, with no personally identifiable information in public events. Candidates control which skills and experience to disclose.
Public key signatures prevent impersonation. NIP-05 verification links Nostr identity to domain ownership. Relay operators can require additional KYC for posting privileges.
Individual relays set content policies. Users choose relays aligned with their values. No global censorship or algorithmic bias.
| Feature | Indeed | Nosjob (Nostr) | |
|---|---|---|---|
| Data Ownership | Platform | Platform | User |
| Standard Format | ❌ | ❌ | ✅ Schema.org |
| AI-Accessible | Rate-limited | Rate-limited | ✅ Open |
| Spam Prevention | Algorithmic | Algorithmic | Economic |
| Employer Verification | Manual | Manual | Cryptographic |
| Supports AI Agents | ❌ | ❌ | ✅ |
The protocol's Schema.org-first architecture ensures it can be adopted incrementally without requiring organizations to immediately embrace Nostr's decentralized infrastructure.
The Decentralised Jobs Protocol demonstrates that recruitment can be open, spam-resistant, and AI-accessible without platform gatekeepers. By building on Nostr's proven architecture and adhering to Schema.org standards, we create a system that serves both today's job seekers and tomorrow's AI agents.
This is not just a job board—it's infrastructure for the future of work.