OpenConsultant · Draft specification 0.1.0

Examples

Complete, valid files you can copy. Every example on this page is checked against the published schema each time the site is built.

The company and the consultant in these examples are fictional. The files are real: they are served from this site and can be fetched by any client.

A consultant profile

A consulting company, Example Consulting, publishes one of its consultants on its own website. The company is the source, and the profile is served from the company’s address.

The page on the left is generated from the JSON on the right. Change the JSON and the page changes with it.

Human readable

Anna Andersson

Senior Frontend Developer, Example Consulting

Available from 1 February 2027

Works in
Stockholm, SE · Uppsala, SE
Way of working
Hybrid
Engagement
Full-time, Part-time
Contact
Example Consulting, sales, consultants@example.com

Frontend developer with twelve years of experience building accessible web applications and design systems for retail and the public sector. This is a fictional profile used to demonstrate OpenConsultant.

Skills

  • Frontend development · TypeScript, Vue, React, Astro
  • Design systems · Storybook, Design tokens, Component libraries
  • Accessibility · WCAG 2.2, Assistive technology testing

Experience

  • Senior Frontend Developer, Example Consulting · Mar 2019 to present
  • Frontend Developer, Example Retail Group · Aug 2014 to Feb 2019

Reference projects

  • Design system for a national retailer · Component library and design tokens shared by web and app teams.

Education and certificates

  • Bachelor, Computer Science, Example University
  • Certified Professional in Web Accessibility, Example Accessibility Board

Languages

  • Swedish (Native speaker)
  • English (Fluent)

Published by Example Consulting. Updated 1 October 2026.
Source: https://openconsultant.io/examples/profile.json

JSON, the same data

{
  "$schema": "https://openconsultant.io/schemas/v0.1/schema.json",
  "basics": {
    "name": "Anna Andersson",
    "label": "Senior Frontend Developer",
    "summary": "Frontend developer with twelve years of experience building accessible web applications and design systems for retail and the public sector. This is a fictional profile used to demonstrate OpenConsultant.",
    "location": {
      "city": "Stockholm",
      "countryCode": "SE"
    }
  },
  "work": [
    {
      "name": "Example Consulting",
      "position": "Senior Frontend Developer",
      "startDate": "2019-03",
      "summary": "Consultant in design systems and accessibility.",
      "highlights": [
        "Led the frontend work on a shared design system used by nine product teams",
        "Introduced automated accessibility testing in the delivery pipeline"
      ]
    },
    {
      "name": "Example Retail Group",
      "position": "Frontend Developer",
      "startDate": "2014-08",
      "endDate": "2019-02",
      "summary": "Built and maintained the e-commerce storefront."
    }
  ],
  "skills": [
    {
      "name": "Frontend development",
      "level": "Senior",
      "keywords": [
        "TypeScript",
        "Vue",
        "React",
        "Astro"
      ]
    },
    {
      "name": "Design systems",
      "level": "Senior",
      "keywords": [
        "Storybook",
        "Design tokens",
        "Component libraries"
      ]
    },
    {
      "name": "Accessibility",
      "level": "Senior",
      "keywords": [
        "WCAG 2.2",
        "Assistive technology testing"
      ]
    }
  ],
  "education": [
    {
      "institution": "Example University",
      "area": "Computer Science",
      "studyType": "Bachelor",
      "startDate": "2011-08",
      "endDate": "2014-06"
    }
  ],
  "certificates": [
    {
      "name": "Certified Professional in Web Accessibility",
      "issuer": "Example Accessibility Board",
      "date": "2023-05"
    }
  ],
  "projects": [
    {
      "name": "Design system for a national retailer",
      "description": "Component library and design tokens shared by web and app teams.",
      "startDate": "2022-01",
      "endDate": "2024-06",
      "roles": [
        "Lead frontend developer"
      ],
      "keywords": [
        "Vue",
        "Storybook",
        "WCAG 2.2"
      ]
    }
  ],
  "languages": [
    {
      "language": "Swedish",
      "fluency": "Native speaker"
    },
    {
      "language": "English",
      "fluency": "Fluent"
    }
  ],
  "openconsultant": {
    "schemaVersion": "0.1.0",
    "id": "urn:uuid:6f1d2c3a-8b4e-4f7a-9c21-5d0e7a3b9f10",
    "canonicalUrl": "https://openconsultant.io/examples/profile.json",
    "company": {
      "name": "Example Consulting",
      "url": "https://openconsultant.io/examples/"
    },
    "availability": {
      "status": "available-from",
      "availableFrom": "2027-02-01"
    },
    "locations": [
      {
        "city": "Stockholm",
        "countryCode": "SE"
      },
      {
        "city": "Uppsala",
        "countryCode": "SE"
      }
    ],
    "remote": "hybrid",
    "engagementTypes": [
      "full-time",
      "part-time"
    ],
    "contact": {
      "name": "Example Consulting, sales",
      "email": "consultants@example.com"
    },
    "updatedAt": "2026-10-01T08:00:00Z",
    "htmlUrl": "https://openconsultant.io/examples/#profile"
  }
}

Download: /examples/profile.json

The smallest valid profile

Only a name and six fields in the openconsultant object are required. Everything else is optional and can be added over time.

/examples/profile.minimal.jsonDownload /examples/profile.minimal.json
{
  "basics": {
    "name": "Erik Example"
  },
  "openconsultant": {
    "schemaVersion": "0.1.0",
    "id": "urn:uuid:2b9c1e54-7a3d-4c8f-b6e0-91f4d2a7c355",
    "canonicalUrl": "https://openconsultant.io/examples/profile.minimal.json",
    "company": {
      "name": "Example Consulting"
    },
    "availability": {
      "status": "unknown"
    },
    "updatedAt": "2026-10-01T08:00:00Z"
  }
}

The entry file

This is what a consulting company serves at /openconsultant.json on its own domain. It lists one profile, the one above.

/examples/manifest.jsonDownload /examples/manifest.json
{
  "$schema": "https://openconsultant.io/schemas/v0.1/manifest.schema.json",
  "standard": "OpenConsultant",
  "schemaVersion": "0.1.0",
  "publisher": {
    "name": "Example Consulting",
    "url": "https://openconsultant.io/examples/"
  },
  "updatedAt": "2026-10-01T08:00:00Z",
  "consultants": [
    {
      "id": "urn:uuid:6f1d2c3a-8b4e-4f7a-9c21-5d0e7a3b9f10",
      "url": "https://openconsultant.io/examples/profile.json",
      "updatedAt": "2026-10-01T08:00:00Z",
      "htmlUrl": "https://openconsultant.io/examples/#profile"
    }
  ]
}

Reading the example

The files allow cross-origin requests, so this runs in a browser console as well as in Node.js. A real publisher’s entry file is at /openconsultant.json on their own domain. The example lives under /examples/ on this site.

const entryFile = 'https://openconsultant.io/examples/manifest.json';

const manifest = await fetch(entryFile).then((response) => response.json());
if (manifest.standard !== 'OpenConsultant') throw new Error('Not an OpenConsultant entry file');

for (const entry of manifest.consultants) {
  const profile = await fetch(entry.url).then((response) => response.json());
  const { availability, company } = profile.openconsultant;

  console.log(`${profile.basics.name}, ${profile.basics.label} at ${company.name}`);
  console.log(`Availability: ${availability.status} ${availability.availableFrom ?? ''}`);
  console.log(`Source: ${profile.openconsultant.canonicalUrl}`);
}

The same thing from a terminal:

curl -s https://openconsultant.io/examples/manifest.json
curl -s https://openconsultant.io/examples/profile.json

Next