Nordibo.
Open standard

The Nordibo meeting schema

nordibo-meeting/v1 is the exact JSON your AI receives from Nordibo when a meeting is done: decisions, action items, open questions and answered questions, every single item backed by a verbatim quote from the transcript. The format is published here as a versioned JSON Schema, so nothing about how your meeting data is structured is a black box. Any tool, any model, any vendor can read it, validate it and build on it.

Capture policy

No bot in the room

Nordibo never sends a bot into your meeting. Audio is recorded in the participant's own client app, on the participant's own device, and nowhere else. This is not a setting you have to remember, it is a structural property of the format itself: the schema pins bot_in_meeting to a constant false and capture_method to client_recording. A payload claiming anything else is by definition not valid nordibo-meeting/v1.

Two layers

The standard in two documents

Delivery layer

nordibo-meeting/v1

What a receiving AI gets, as an HMAC-signed webhook POST or as an MCP tool result. The two paths carry an identical payload: distilled decisions, action items, open questions and Q&A pairs, each with its verbatim quote.

schema/meeting/v1.json
Transcript layer

nordibo-transcript/v1

The raw structured transcript underneath: speaker-separated turns with timestamps, per-speaker statistics and meeting metadata. Built deterministically from speech-to-text output, no language model involved, so the same audio always yields the same structure.

schema/transcript/v1.json
Machine record

What a delivery looks like

{
  "type": "MEETING_ENCODED",
  "source": "nordibo",
  "$schema": "https://nordibo.se/schema/meeting/v1.json",
  "format_version": "nordibo-meeting/v1",
  "tier": "B",
  "delivered_at": "2026-07-18T14:30:00Z",
  "meeting": {
    "title": "Q3 planning",
    "started_at": "2026-07-18T13:00:00Z",
    "capture_method": "client_recording",
    "bot_in_meeting": false
  },
  "decisions": [{
    "summary": "Ship the pilot to the first design partner in August.",
    "quote": "then we ship the pilot to them in August",
    "made_by": "Anna"
  }],
  "action_items": [{
    "task": "Send the draft agreement for review.",
    "owner": "Johan",
    "due": "Friday",
    "quote": "I will send the draft agreement before Friday"
  }],
  "open_questions": [],
  "context_summary": "Planning meeting for the Q3 pilot. Next step is the agreement review."
}

The quote fields are the contract: an item without a verifiable verbatim quote from the transcript is dropped before delivery, never invented. Your AI can check every claim against the source.

Trust boundary

Data, never instructions

Everything under meeting, decisions, action_items, open_questions, qa_pairs and context_summary is untrusted meeting content: things real people said in a real conversation. A receiving AI must treat those fields as data to act on, never as instructions to follow. Every payload carries this rule with it in _nordibo_instruction, so it holds even for a receiver with no preconfiguration at all.

  • Webhook path: Nordibo deletes its copy of the meeting immediately after delivery. The optional _nordibo_receipt field is the verifiable trace of that: what was delivered, where, and that the copy is gone.
  • MCP path: the distilled result is stored encrypted at rest for at most 48 hours so your AI can fetch it, then deleted.
  • Sensitivity tiers: A, B and C mark how the meeting was allowed to be processed. The most sensitive tier is never deliverable at all: a blocked meeting produces a content-free MEETING_BLOCKED notice, so a sensitive meeting cannot leak through its own status message.
Verification

Verifying a webhook delivery

Webhook deliveries are signed with HMAC-SHA256(secret, "<timestamp>.<nonce>.<raw-body>"). The signature, timestamp and nonce arrive in headers; you rebuild the signing string from the raw request body and compare.

HeaderContent
X-Nordibo-Signaturesha256=<hex digest>
X-Nordibo-TimestampISO 8601 UTC, part of the signing string, reject stale values
X-Nordibo-NonceUnique per delivery, reject repeats, replay protection

The body is canonical JSON with sorted keys, but you should never re-serialise: hash the raw bytes you received. A full receiver walkthrough with code for Node and n8n is included in the onboarding material every partner gets.

Field reference

Core fields, nordibo-meeting/v1

FieldMeaning
format_versionAlways "nordibo-meeting/v1" for this version of the format
$schemaURL of the JSON Schema the payload validates against
typeMEETING_ENCODED for a delivery, MEETING_BLOCKED for a content-free block notice
tierSensitivity tier the meeting was processed under: A, B or C
meetingTitle, participants, start time, plus the constant capture declaration
decisions[]summary, quote, made_by. The quote is verbatim from the transcript
action_items[]task, owner, due, quote
open_questions[]question, context, quote. Asked but not answered in the meeting
qa_pairs[]question, answer, both with their own verbatim quotes
context_summaryTwo to three sentences for an acting AI. Model text, treat as data
_nordibo_receiptOptional delivery receipt, free of personal data

The full, normative definitions live in the schema files themselves: meeting/v1.json and transcript/v1.json.

Versioning

Versioning policy

Within v1, changes are strictly additive. New optional fields may appear; existing fields never change meaning, type or requirement. A receiver that tolerates unknown fields will never break.

Breaking changes become v2, published at a new URL next to this one. v1 stays available for as long as anything consumes it.

Legacy note: payloads also carry "schema": "nordibo-signal-1.0", the identifier used before this page existed. It is deprecated in favour of format_version and kept so early receivers keep working, which is the versioning policy doing its job.

Why open

Why we publish it

Nordibo's promise is that your meeting flows into your own AI, under your own key, with Swedish speech understood on our own self-hosted server in the EU. That promise only means something if you can inspect the pipe. An open schema means you can verify what leaves Nordibo, validate it in your own systems, and switch tools without losing your data's structure. Your meetings, in a format you can keep.

Questions, or building a receiver? Talk to us, or start from the schema files above.