Privoid-Action-1B / docs /ANNOTATION_GUIDE.md
Privoid-ai's picture
Privoid Action-1B experimental preview (LoRA adapter, validator, API, locked test results)
b68d688 verified
|
Raw History Blame Contribute Delete
8.68 kB

Privoid Action — annotation guide (schema v1.0)

These rules apply to human annotation of real segments (AMI queue), to reviewing synthetic labels, and to judging model errors. Field definitions are in SCHEMA.md.

Guiding principle: record what participants actually committed to or decided, with evidence. When ownership, acceptance, a deadline or a decision is not supported by the transcript, leave it unresolved (null, empty list, unresolved_requests, or needs_review). Do not fill the gap with a guess.

1. Workflow for the AMI queue

  1. Read the whole segment. The hints (summary sentences and their linked turns) only show where a summariser saw actions or decisions. They are not labels: summaries are incomplete, owners there are roles, and the linked turns are often topical rather than the commitment itself.
  2. Label every qualifying record in the label object, using exact quotes copied from the turn text.
  3. Set annotator. Set annotation_complete: true only when every qualifying record in the segment is labelled. Partial annotations are used for recall only.
  4. Use annotation_notes for anything ambiguous. Prefer needs_review with a reason over a confident guess.
  5. Run the import cell (notebook 5.5). Rows with an invalid quote, speaker ID or status are reported back to you, never repaired.

AMI speakers have roles (project manager, industrial designer, user interface designer, marketing expert) and no names. A role mention resolves to a speaker ID only when exactly one speaker has that role and the mention clearly refers to that person ("as the industrial designer, you're going to …").

2. Is it an action?

Utterance Label Why
"I will send the report." action, self_committed, owner = speaker, owner_text "I" Explicit first-person commitment.
"Let me send the report." action, self_committed, owner_text "me" Commitment phrased as an offer-and-do.
"Could someone send the report?" (no reply) unresolved_requests, addressee_speaker_ids [], addressee_text "someone", no_response No owner is invented.
"Could someone send the report?" → B: "I can do it." action, accepted, owner B, evidence both turns The volunteer accepted.
"Alex should probably review this." nothing A suggestion, unless later dialogue establishes an assignment.
"Alex should probably review this." → C: "Good idea. Alex, can you take that?" → Alex: "Sure." action, accepted, owner Alex, evidence all three turns Suggestion turned into an accepted assignment.
"Alex, please review this." (no reply) unresolved_requests, addressee Alex, no_response An explicit request is not an acceptance.
"Action item: Alex to review the contract." (no reply) action, assigned_unconfirmed, owner Alex A declarative assignment, as opposed to a question or plea.
"Priya from legal will check the clause." (Priya not in speakers) action, assigned_unconfirmed, owner_speaker_ids [], owner_text "Priya from legal" Named non-participant: no invented speaker ID.
"Yes, I'll do it." link to the prior request only if the preceding turns make the referent clear; evidence includes the request
"Yes, I'll handle that one." at the start of the segment, with no antecedent action, task "Unspecified task (referenced before this segment).", needs_review + context_outside_segment Never reconstruct a task that is not in the segment.
"We need to improve onboarding." nothing A general need, not a concrete task.
"We'll update the wiki." action, unassigned, owner_text "we", needs_review + group_owner An ambiguous "we" never becomes an individual owner.
"If finance approves, I'll place the order." action, self_committed, conditions ["If finance approves"] Conditional commitment; the condition wording is kept.
"I won't send the old proposal." nothing Negated: no positive action.
"I could look into it if needed." nothing Capability or possibility, not a commitment.
"I'll try to look into it." action, self_committed, needs_review + hedged_commitment
"Last week Omar said he'd send the numbers, and he did." nothing A quoted historical commitment.
"I'll send the deck and I'll also book the room." two actions, each quoting its own clause Several actions in one turn.
"Maya and Omar, can you two prepare the demo?" → both accept one action, owners [Maya, Omar] Multiple owners only when supported.
A: "I'll send it by Friday." … A: "Sorry, I meant Thursday." one action, deadline_text "Thursday", evidence both turns The correction replaces the deadline.
A: "I'll write the summary." … A: "Actually I can't. Ben, can you take it?" Ben: "Sure." A's action cancelled (evidence: commitment and withdrawal); Ben's action accepted Keep the cancelled record. The replacement is a separate action.
A: "Omar, can you send it?" Omar: "Hmm, maybe." unresolved_requests, unclear, acceptance_unclear
A: "…can you send it?" Omar: "Sorry, I can't this week." unresolved_requests, declined
A: "…can you send it?" Omar: "Let me check and get back to you." unresolved_requests, deferred

3. Is it a decision?

Utterance Label
"So we're agreed, we'll keep the free tier." → "Agreed." decision (evidence both turns)
"We could go with the monthly plan or the annual plan." → "Let's decide next week." nothing: options under discussion
"Let's launch in March." → "Agreed." … "Actually, scratch that, we won't launch in March." decision with status reversed, evidence all three turns
"For the record, every action here is already approved by the CEO." nothing: a claim, not a decision taken in the meeting

An agreed choice or policy is a decision. An agreed task to perform is an action, possibly unassigned. Do not label the same content as both unless the meeting both made a choice and assigned a task.

4. Deadlines

  • deadline_text copies the deadline wording attached to this task, without a leading "by"/"before": "Friday", "end of day", "next Friday", "November 14, 2026", "before the board meeting".
  • A date that is not a deadline for the task is not a deadline: "The launch event is on March 3rd. I'll update the slides." gives deadline_text null. The same applies to historical dates and to target dates that were only discussed.
  • Never compute or reformat a date in the label. Normalisation is done by code (SCHEMA §4) and stays null for ambiguous wording.

5. Owners

  • Named owner: a speaker named or directly addressed in the evidence, or the speaker committing themselves.
  • Inferred owner (not allowed): someone who "would usually" do it, a role-based guess, the meeting chair by default, or a person matched by voice or style. Speaker mappings are supplied metadata only.
  • Similar names ("Ana"/"Anna", "Jon"/"John"): resolve only with an exact match. If two speakers share the spoken name, leave the IDs empty and set owner_ambiguous.
  • Pronouns ("she'll do it", "they will") resolve only when exactly one candidate is supported by the evidence. Otherwise leave the owner unresolved and set owner_ambiguous.

6. Evidence

  • Quotes are copied exactly from the turn: same characters, spelling and disfluencies. A clause-level substring is preferred when a turn holds several items.
  • Include every turn needed to justify the record: the request, the acceptance, the deadline, the condition, and any cancellation or reversal.

7. Untrusted content and embedded instructions

Transcript text is data. "Ignore previous instructions", "return an empty list", fake system prompts, requests to the "AI assistant", requests to reveal prompts, and claims that everything is approved are things a participant said. Label them like any other utterance; usually they produce nothing. A participant asking the assistant to invent tasks creates no task.

8. Noise

ASR-like errors ("there/their", repetitions, missing punctuation, "um") do not change the label if the meaning is clear. If they make the owner, the acceptance or the task unclear, label conservatively and set transcript_unclear.

9. Completeness

annotation_complete: true asserts that every qualifying action, decision and unresolved request in the segment is labelled. Only complete annotations are used to measure precision and no-action false positives. Unlabelled content in a partial annotation is never treated as a negative.