Skip to content

grans label export: emit self-contained labeling HTML for a meeting #70

Description

@dmwyatt

Part of #66. Depends on the derivation module (#68) and storage (#69).

Scope

grans label export <meeting> [--out <path>] writes a self-contained HTML file: the labeling template with a JSON payload embedded. Opened locally in a browser; no server, no network (real meeting content never leaves the machine).

Payload (the contract between granz and the template):

  • Meeting metadata: id, title, date, segmentation_version.
  • Candidate speakers from document_people (name, email/id, role), plus the fixed unknown and media sentinels. The local user is implicit (mic channel).
  • Utterances in order: id, channel, start/end as seconds from meeting start, text, sentences[], tick (bool), bridge (bool), gap seconds (raw material alongside the derived flags, for display and threshold experimentation).
  • Existing labels, if any: speakers, label_source, confidence (drives the review-queue state).

Also --json to emit the payload alone (scripting, debugging).

Template

Seeded from docs/prototypes/labeling-ui.html with its semantic JS (sentences(), tick/bridge/timeline computation) deleted in favor of payload fields. Interaction behavior is specified by the prototype: queue of unlabeled runs and low-confidence flags, number keys label-and-advance, Shift stacks co-speakers, S splits an utterance into per-sentence labels, drag-select, undo, JSON export download.

Constraints

  • Only meetings whose utterances have source IS NOT NULL can be labeled; fail with a clear message otherwise.
  • Update README (new command) per repo docs policy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio: p2Medium priority, normal queuesize: lLarge, multiple daysstatus: readyReady to be worked ontype: featureNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions