Skip to content

Update annotation export docs for pivoted CSV/JSONL format (authoritative_annotator, per-annotator columns) #571

Description

@barry47products

Summary

The "Exporting Results" section of docs/concepts/annotations/queues.md is out of date. The annotation queue export format (both CSV and JSONL) has been pivoted to one column/entry per annotator, and the is_authoritative boolean has been replaced by an authoritative_annotator field. The current docs still describe the old flat, one-row-per-annotation shape.

This is stale for two changes:

  • CSV (already merged in OCS #3832): pivoted to one row per (item, schema field), with one column per annotator email, plus authoritative_annotator, annotated_at, and a field column. This shipped without a docs update, so the CSV description is already inaccurate on the live docs.
  • JSONL (in progress, OCS #3837): pivoted to one record per item, with per-field values nested per annotator (fields: {field: {annotator_email: value}}), plus top-level authoritative_annotator and annotated_at.

What is inaccurate today

Doc says (current) Reality after the changes
"CSV: one row per annotation" CSV is one row per (item, schema field), one column per annotator
"includes the item details, reviewer, and all field values" No single reviewer column: CSV has one column per annotator email; JSONL nests values by annotator
Field table lists is_authoritative (boolean) Replaced by authoritative_annotator (annotator email, blank if none picked) in both formats
(not documented) New fields: CSV field + annotated_at; JSONL fields: {field: {email: value}} + annotated_at
JSONL "one JSON object per line" (per annotation) One JSON object per item, values nested per field by annotator

Also: the field table calls the column flagged_reason, but the actual export column is flags. Worth correcting while updating this section.

Proposed shape (JSONL, for reference)

{
  "item_id": 67, "item_type": "session", "session_id": "d99c...",
  "flagged": false, "flags": [],
  "authoritative_annotator": "marcus@example.com", "annotated_at": "2026-07-15T13:17:02Z",
  "fields": {
    "tone":     {"fatima@example.com": "friendly", "marcus@example.com": "too casual"},
    "accuracy": {"fatima@example.com": "accurate", "marcus@example.com": "missed grammar"}
  }
}

A field an annotator did not answer is null; values keep their JSON types (ints stay ints). CSV carries the same information with one column per annotator email.

Scope

  • Update the "Exporting Results" section of docs/concepts/annotations/queues.md to describe both the new CSV and JSONL shapes, replace is_authoritative with authoritative_annotator, add the new fields, and correct flagged_reason -> flags.
  • The docs PR should cross-reference the OCS JSONL PR (#3837 follow-up) and vice versa.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions