Ambient Precision

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 }   // pick

2. 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

  1. 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.
  2. Otherwise it issues a ticket for a question below the threshold. A person answers it.
  3. The machine's answer must never be shown, hinted at or ordered before the person commits. It may be shown after.
  4. 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.
  5. A person's answer is theirs. Implementations must not sell it or show it to anyone the person has not agreed to.
  6. Aggregates shown beyond the people who answered carry no names and are withheld below a floor the implementation publishes.
  7. 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.
  8. 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).