Open specification · version 1.0
Human Handoff 1.0
How any machine passes a typed question to a person and gets a typed answer back.
1. Request
HandoffRequest {
state?: any // what the machine saw; opaque to the person
questions: { [id: string]: Question } // 1..n
machine?: { answers: { [id]: MachineAnswer }, confidence?: number }
threshold: number // 0..1
}
Question =
| { type: "likelihood", question: string }
| { type: "levels", question: string, levels: string[] } // ordered, 2..10
| { type: "pick", question: string, options: { id, label? }[] }
MachineAnswer =
| { value: number, confidence?: number } // likelihood, 0..1
| { index: number, confidence?: number } // levels, 0..levels.length-1
| { pick: string, confidence?: number } // pick2. Ticket
Ticket {
id: string // stable, opaque
question_id: string // which question went to the person
url: string // where the person answers (unguessable)
poll: string // where the machine collects the answer
}3. Answer
Answer {
kind: "likelihood" | "levels" | "pick"
value?: number // likelihood
level?: string, index?: number // levels
pick?: string // pick
distribution: { [outcome: string]: number } // sums to 1
confidence: number | null // 0..1
source: "human" | "machine"
}4. Rules
- If every question's machine confidence is at or above the threshold, the implementation returns the machine answers unchanged, with source "machine", and no person is asked.
- Otherwise it issues a ticket for a question below the threshold. A person answers it.
- The machine's answer must never be shown, hinted at or ordered before the person commits. It may be shown after.
- The person's answer is returned in the same shape as a machine answer, with source "human" and a confidence derived from the person's own input.
- A person's answer is theirs. Implementations must not sell it or show it to anyone the person has not agreed to.
- Aggregates shown beyond the people who answered carry no names and are withheld below a floor the implementation publishes.
- Implementations may accept other typed shapes (for example noul, score and choice) if they map them one to one onto these three kinds and answer in the caller's shape.
- Versions are named; a caller can pin one. A breaking change needs a new version name.
License
This specification is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0). Attribution: "Human Handoff 1.0, Enriching Ventures."
The specification is open. The Ergo Thumb interaction that implements it is patent pending (U.S. 64/012,779).