Skip to content
the way it works

DOCS

The data model

A capture is an OCEL 2.0 object-event graph with exactly two additions, held in clearly namespaced fields so that import and export stay lossless.

Why an open standard

OCEL 2.0 is an open standard for object-centric process records. Using it rather than a private format buys two things. Your record is portable: you can take it to any tool that reads the standard, which is the practical meaning of “not locked in”. And because design-time and run-time share one schema, a real event log arriving later is an import rather than a remodel.

That second point is the reason the roadmap can fairly say mine follows define. It is a property of the data model, not an intention.

The two extensions

Everything we add lives under a twiw: namespace. A consumer that only knows standard OCEL can ignore those fields entirely and still read a valid record.

1. Provenance on every object, event, relation and facet: whether it was stated in the source or inferred, a confidence score, the quoted evidence, a locator naming the artifact and page, and the human review state.

2. Enrichment: the twelve typed facets, attached to the most specific element they concern rather than to the document. Each facet carries its own provenance, because a policy drawn from a different page than the step it constrains needs to say so.

An example capture

Trimmed to one object and one event so the shape is visible. Note that the event is marked inferred and awaiting review, while the policy attached to it was stated outright: that distinction is the whole point.

{
  "ocel:version": "2.0",
  "ocel:objectTypes": [
    { "name": "BillingDocument", "attributes": [
      { "name": "amount", "type": "float" },
      { "name": "billingPeriod", "type": "string" }
    ]},
    { "name": "MeterRead", "attributes": [
      { "name": "readType", "type": "string" }
    ]}
  ],
  "ocel:eventTypes": [
    { "name": "RebillRaised", "attributes": [
      { "name": "reason", "type": "string" }
    ]},
    { "name": "RebillApproved", "attributes": [
      { "name": "approverRole", "type": "string" }
    ]}
  ],
  "ocel:objects": [
    {
      "ocel:id": "bd-0001",
      "ocel:type": "BillingDocument",
      "ocel:attributes": [
        { "ocel:name": "amount", "ocel:value": 1840.5 }
      ],
      "ocel:o2o": [
        { "ocel:oid": "mr-0007", "ocel:qualifier": "derivedFrom" }
      ],

      // ── extension 1 of 2: provenance ──────────────────────────────
      "twiw:provenance": {
        "mode": "stated",
        "confidence": 0.98,
        "evidence": "Each rebill produces a new billing document referencing the original.",
        "locator": { "artifact": "billing-design-v4.pdf", "page": 34 },
        "reviewState": "confirmed",
        "reviewedAt": "2026-07-18T09:12:00Z"
      }
    }
  ],
  "ocel:events": [
    {
      "ocel:id": "ev-0042",
      "ocel:type": "RebillApproved",
      "ocel:timestamp": "2026-03-11T14:05:00Z",
      "ocel:relationships": [
        { "ocel:objectId": "bd-0001", "ocel:qualifier": "approves" }
      ],

      "twiw:provenance": {
        "mode": "inferred",
        "confidence": 0.71,
        "evidence": "Approval is required before the corrected invoice is issued.",
        "locator": { "artifact": "billing-design-v4.pdf", "page": 34 },
        "reviewState": "awaiting-review"
      },

      // ── extension 2 of 2: enrichment (typed facets) ───────────────
      "twiw:enrichment": [
        {
          "kind": "policy",
          "name": "Rebill approval threshold",
          "value": "Rebills above the stated threshold require credit manager approval.",
          "provenance": {
            "mode": "stated",
            "confidence": 0.96,
            "evidence": "Rebills above the threshold require approval by the credit manager.",
            "locator": { "artifact": "billing-design-v4.pdf", "page": 34 },
            "reviewState": "confirmed"
          }
        },
        {
          "kind": "person",
          "role": "Credit Manager",
          "responsibility": "approves",
          "provenance": { "mode": "stated", "confidence": 0.96, "reviewState": "confirmed" }
        }
      ]
    }
  ]
}

Every tier exports this, including the free trial. See a full worked example →