{
  "schema": "snuepi.benchmark/1",
  "title": "Agent commerce readiness benchmark",
  "generated_at": "2026-10-29T21:05:18.440Z",
  "run": {
    "seed": 20261029,
    "businesses": 48,
    "tasks_planned": 600,
    "tasks_run": 600,
    "seconds": 21,
    "command": "node scripts/world-sim.mjs --seed 20261029 --businesses 48 --tasks 600",
    "commit": "d21eead",
    "http_calls": 11388,
    "setup_errors": 0,
    "mandates": 10,
    "operator_tier": "keys_proven"
  },
  "world": {
    "sectors": {
      "trades": 3,
      "cleaning": 3,
      "other": 3,
      "moving": 3,
      "financial_advice": 3,
      "retail": 3,
      "clinics": 3,
      "vets": 3,
      "professional": 3,
      "legal": 3,
      "accounting": 3,
      "insurance": 3,
      "beauty": 3,
      "hospitality": 3,
      "hotels": 3,
      "dental": 3
    },
    "countries": {
      "NL": 6,
      "PL": 9,
      "IE": 5,
      "PT": 3,
      "SE": 7,
      "ES": 3,
      "DE": 6,
      "IT": 4,
      "FI": 2,
      "FR": 3
    },
    "connected_systems": {
      "own_system": 16,
      "none": 32
    },
    "personas": {
      "platform_key": 83,
      "unsigned": 127,
      "verified_operator": 106,
      "consumer_mandate": 65,
      "terms_ignorer": 68,
      "b2b_buyer": 52,
      "adversary": 51,
      "impatient": 48
    },
    "protocols": {
      "acp": 5,
      "rest": 333,
      "mcp": 190,
      "phone": 24,
      "a2a": 34,
      "web": 13,
      "ucp": 1
    },
    "task_types": {
      "order": 63,
      "ask_terms": 15,
      "consult": 75,
      "book": 198,
      "reschedule": 24,
      "attack": 51,
      "ask_price": 22,
      "ask_hours": 23,
      "quote": 70,
      "cancel": 31,
      "pay": 28
    }
  },
  "arms": {
    "snuepi": {
      "tasks": 549,
      "allowed_tasks": 415,
      "completion": 0.993,
      "correct": 0.995,
      "false_yes": 0,
      "false_no": 3,
      "wrong_info": 0,
      "ambiguous": 0,
      "errors": 0,
      "in_session": 1,
      "median_seconds": 0.011,
      "p90_seconds": 0.031,
      "interruptions_per_100": 0,
      "staff_minutes_per_100": 0,
      "owner_actions_per_100": 16.94,
      "disclosure_proven": 1,
      "evidence_available": 0.982,
      "deposit_applied": 1,
      "deposit_enforced": 0.663,
      "deposits_due": 98,
      "terms_respected": 1,
      "expected_noshow_rate": 0.0196,
      "pending_customer_share": 0.488,
      "attacks": 51,
      "attack_success": 0
    },
    "baseline": {
      "tasks": 549,
      "allowed_tasks": 415,
      "completion": 0.634,
      "correct": 0.536,
      "false_yes": 33,
      "false_no": 17,
      "wrong_info": 23,
      "ambiguous": 0,
      "errors": 0,
      "in_session": 0.495,
      "median_seconds": 210,
      "p90_seconds": 210,
      "interruptions_per_100": 77.413,
      "staff_minutes_per_100": 151.366,
      "owner_actions_per_100": 0,
      "disclosure_proven": 0,
      "evidence_available": 0,
      "deposit_applied": 0.102,
      "deposit_enforced": 0.102,
      "deposits_due": 98,
      "terms_respected": 0.081,
      "expected_noshow_rate": 0.0235,
      "pending_customer_share": 0,
      "attacks": 51,
      "attack_success": 0.431
    }
  },
  "breakdowns": {
    "sector": [
      {
        "key": "accounting",
        "snuepi": {
          "tasks": 12,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.005,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 12,
          "completion": 0.9,
          "correct": 0.833,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.417,
          "median_seconds": 210,
          "interruptions_per_100": 91.667,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "beauty",
        "snuepi": {
          "tasks": 47,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.02,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 5
        },
        "baseline": {
          "tasks": 47,
          "completion": 0.571,
          "correct": 0.468,
          "false_yes": 3,
          "false_no": 0,
          "in_session": 0.489,
          "median_seconds": 210,
          "interruptions_per_100": 87.234,
          "attack_success": 0.2,
          "attacks": 5
        }
      },
      {
        "key": "cleaning",
        "snuepi": {
          "tasks": 46,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.016,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 5
        },
        "baseline": {
          "tasks": 46,
          "completion": 0.705,
          "correct": 0.696,
          "false_yes": 0,
          "false_no": 4,
          "in_session": 0.435,
          "median_seconds": 210,
          "interruptions_per_100": 84.783,
          "attack_success": 1,
          "attacks": 5
        }
      },
      {
        "key": "clinics",
        "snuepi": {
          "tasks": 31,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.007,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 5
        },
        "baseline": {
          "tasks": 31,
          "completion": 0.444,
          "correct": 0.258,
          "false_yes": 8,
          "false_no": 1,
          "in_session": 0.484,
          "median_seconds": 210,
          "interruptions_per_100": 96.774,
          "attack_success": 0.2,
          "attacks": 5
        }
      },
      {
        "key": "dental",
        "snuepi": {
          "tasks": 30,
          "completion": 0.962,
          "correct": 0.967,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.016,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 5
        },
        "baseline": {
          "tasks": 30,
          "completion": 0.615,
          "correct": 0.533,
          "false_yes": 1,
          "false_no": 1,
          "in_session": 0.533,
          "median_seconds": 210,
          "interruptions_per_100": 76.667,
          "attack_success": 0.4,
          "attacks": 5
        }
      },
      {
        "key": "financial_advice",
        "snuepi": {
          "tasks": 22,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.004,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 22,
          "completion": 0.857,
          "correct": 0.727,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.5,
          "median_seconds": 210,
          "interruptions_per_100": 90.909,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "hospitality",
        "snuepi": {
          "tasks": 28,
          "completion": 0.955,
          "correct": 0.964,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.018,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 3
        },
        "baseline": {
          "tasks": 28,
          "completion": 0.5,
          "correct": 0.5,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 0.464,
          "median_seconds": 210,
          "interruptions_per_100": 82.143,
          "attack_success": 0,
          "attacks": 3
        }
      },
      {
        "key": "hotels",
        "snuepi": {
          "tasks": 49,
          "completion": 0.979,
          "correct": 0.98,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.019,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 5
        },
        "baseline": {
          "tasks": 49,
          "completion": 0.617,
          "correct": 0.408,
          "false_yes": 1,
          "false_no": 4,
          "in_session": 0.633,
          "median_seconds": 210,
          "interruptions_per_100": 100,
          "attack_success": 0.4,
          "attacks": 5
        }
      },
      {
        "key": "insurance",
        "snuepi": {
          "tasks": 21,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.005,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 21,
          "completion": 0.706,
          "correct": 0.714,
          "false_yes": 1,
          "false_no": 0,
          "in_session": 0.381,
          "median_seconds": 210,
          "interruptions_per_100": 85.714,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "legal",
        "snuepi": {
          "tasks": 18,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 18,
          "completion": 0.455,
          "correct": 0.667,
          "false_yes": 1,
          "false_no": 0,
          "in_session": 0.611,
          "median_seconds": 210,
          "interruptions_per_100": 88.889,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "moving",
        "snuepi": {
          "tasks": 45,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.016,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 6
        },
        "baseline": {
          "tasks": 45,
          "completion": 0.69,
          "correct": 0.556,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.422,
          "median_seconds": 210,
          "interruptions_per_100": 84.444,
          "attack_success": 0.667,
          "attacks": 6
        }
      },
      {
        "key": "other",
        "snuepi": {
          "tasks": 46,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.01,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 7
        },
        "baseline": {
          "tasks": 46,
          "completion": 0.516,
          "correct": 0.522,
          "false_yes": 3,
          "false_no": 2,
          "in_session": 0.435,
          "median_seconds": 210,
          "interruptions_per_100": 86.957,
          "attack_success": 0.286,
          "attacks": 7
        }
      },
      {
        "key": "professional",
        "snuepi": {
          "tasks": 19,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.004,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 19,
          "completion": 0.733,
          "correct": 0.789,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.632,
          "median_seconds": 210,
          "interruptions_per_100": 94.737,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "retail",
        "snuepi": {
          "tasks": 66,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 66,
          "completion": 0.559,
          "correct": 0.364,
          "false_yes": 15,
          "false_no": 0,
          "in_session": 0.424,
          "median_seconds": 120,
          "interruptions_per_100": 4.545,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "trades",
        "snuepi": {
          "tasks": 38,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.017,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 7
        },
        "baseline": {
          "tasks": 38,
          "completion": 0.688,
          "correct": 0.579,
          "false_yes": 0,
          "false_no": 4,
          "in_session": 0.605,
          "median_seconds": 210,
          "interruptions_per_100": 89.474,
          "attack_success": 0.429,
          "attacks": 7
        }
      },
      {
        "key": "vets",
        "snuepi": {
          "tasks": 31,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.018,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 3
        },
        "baseline": {
          "tasks": 31,
          "completion": 0.654,
          "correct": 0.613,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.548,
          "median_seconds": 210,
          "interruptions_per_100": 70.968,
          "attack_success": 0.667,
          "attacks": 3
        }
      }
    ],
    "protocol": [
      {
        "key": "a2a",
        "snuepi": {
          "tasks": 34,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.007,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 34,
          "completion": 0.581,
          "correct": 0.529,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 0.5,
          "median_seconds": 210,
          "interruptions_per_100": 79.412,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "acp",
        "snuepi": {
          "tasks": 5,
          "completion": null,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 5,
          "completion": null,
          "correct": 0.2,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "mcp",
        "snuepi": {
          "tasks": 181,
          "completion": 0.993,
          "correct": 0.994,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.012,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 9
        },
        "baseline": {
          "tasks": 181,
          "completion": 0.587,
          "correct": 0.492,
          "false_yes": 13,
          "false_no": 7,
          "in_session": 0.453,
          "median_seconds": 210,
          "interruptions_per_100": 73.481,
          "attack_success": 0.444,
          "attacks": 9
        }
      },
      {
        "key": "phone",
        "snuepi": {
          "tasks": 24,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.025,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 24,
          "completion": 0.789,
          "correct": 0.583,
          "false_yes": 1,
          "false_no": 1,
          "in_session": 0.667,
          "median_seconds": 240,
          "interruptions_per_100": 137.5,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "rest",
        "snuepi": {
          "tasks": 291,
          "completion": 0.991,
          "correct": 0.993,
          "false_yes": 0,
          "false_no": 2,
          "in_session": 1,
          "median_seconds": 0.008,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 42
        },
        "baseline": {
          "tasks": 291,
          "completion": 0.655,
          "correct": 0.567,
          "false_yes": 18,
          "false_no": 6,
          "in_session": 0.512,
          "median_seconds": 210,
          "interruptions_per_100": 75.601,
          "attack_success": 0.429,
          "attacks": 42
        }
      },
      {
        "key": "ucp",
        "snuepi": {
          "tasks": 1,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.006,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 1,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "web",
        "snuepi": {
          "tasks": 13,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.01,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 13,
          "completion": 0.667,
          "correct": 0.462,
          "false_yes": 1,
          "false_no": 2,
          "in_session": 0.615,
          "median_seconds": 210,
          "interruptions_per_100": 92.308,
          "attack_success": null,
          "attacks": 0
        }
      }
    ],
    "persona": [
      {
        "key": "adversary",
        "snuepi": {
          "tasks": 0,
          "completion": null,
          "correct": null,
          "false_yes": 0,
          "false_no": 0,
          "in_session": null,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 51
        },
        "baseline": {
          "tasks": 0,
          "completion": null,
          "correct": null,
          "false_yes": 0,
          "false_no": 0,
          "in_session": null,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": 0.431,
          "attacks": 51
        }
      },
      {
        "key": "b2b_buyer",
        "snuepi": {
          "tasks": 52,
          "completion": 0.935,
          "correct": 0.942,
          "false_yes": 0,
          "false_no": 3,
          "in_session": 1,
          "median_seconds": 0.012,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 52,
          "completion": 0.696,
          "correct": 0.673,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 0.519,
          "median_seconds": 210,
          "interruptions_per_100": 73.077,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "consumer_mandate",
        "snuepi": {
          "tasks": 65,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.013,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 65,
          "completion": 0.62,
          "correct": 0.523,
          "false_yes": 5,
          "false_no": 5,
          "in_session": 0.631,
          "median_seconds": 210,
          "interruptions_per_100": 75.385,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "impatient",
        "snuepi": {
          "tasks": 48,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.03,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 48,
          "completion": 0.85,
          "correct": 0.625,
          "false_yes": 3,
          "false_no": 1,
          "in_session": 0.708,
          "median_seconds": 210,
          "interruptions_per_100": 120.833,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "platform_key",
        "snuepi": {
          "tasks": 83,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.012,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 83,
          "completion": 0.612,
          "correct": 0.542,
          "false_yes": 1,
          "false_no": 5,
          "in_session": 0.506,
          "median_seconds": 210,
          "interruptions_per_100": 80.723,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "terms_ignorer",
        "snuepi": {
          "tasks": 68,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 68,
          "completion": 0.579,
          "correct": 0.5,
          "false_yes": 10,
          "false_no": 0,
          "in_session": 0.353,
          "median_seconds": 210,
          "interruptions_per_100": 72.059,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "unsigned",
        "snuepi": {
          "tasks": 127,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.01,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 127,
          "completion": 0.583,
          "correct": 0.512,
          "false_yes": 7,
          "false_no": 3,
          "in_session": 0.441,
          "median_seconds": 210,
          "interruptions_per_100": 70.079,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "verified_operator",
        "snuepi": {
          "tasks": 106,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.016,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 106,
          "completion": 0.6,
          "correct": 0.481,
          "false_yes": 7,
          "false_no": 2,
          "in_session": 0.453,
          "median_seconds": 210,
          "interruptions_per_100": 70.755,
          "attack_success": null,
          "attacks": 0
        }
      }
    ],
    "task": [
      {
        "key": "ask_hours",
        "snuepi": {
          "tasks": 23,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.001,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 23,
          "completion": 0.478,
          "correct": 0.565,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.957,
          "median_seconds": 60,
          "interruptions_per_100": 82.609,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "ask_price",
        "snuepi": {
          "tasks": 22,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.001,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 22,
          "completion": 0.409,
          "correct": 0.727,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.864,
          "median_seconds": 210,
          "interruptions_per_100": 81.818,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "ask_terms",
        "snuepi": {
          "tasks": 15,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 15,
          "completion": 0.333,
          "correct": 0.533,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 0.733,
          "median_seconds": 210,
          "interruptions_per_100": 66.667,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "attack",
        "snuepi": {
          "tasks": 0,
          "completion": null,
          "correct": null,
          "false_yes": 0,
          "false_no": 0,
          "in_session": null,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": 0,
          "attacks": 51
        },
        "baseline": {
          "tasks": 0,
          "completion": null,
          "correct": null,
          "false_yes": 0,
          "false_no": 0,
          "in_session": null,
          "median_seconds": null,
          "interruptions_per_100": 0,
          "attack_success": 0.431,
          "attacks": 51
        }
      },
      {
        "key": "book",
        "snuepi": {
          "tasks": 198,
          "completion": 0.993,
          "correct": 0.995,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.018,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 198,
          "completion": 0.673,
          "correct": 0.455,
          "false_yes": 12,
          "false_no": 13,
          "in_session": 0.576,
          "median_seconds": 210,
          "interruptions_per_100": 92.929,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "cancel",
        "snuepi": {
          "tasks": 31,
          "completion": 0.955,
          "correct": 0.968,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.017,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 31,
          "completion": 0.682,
          "correct": 0.548,
          "false_yes": 2,
          "false_no": 1,
          "in_session": 0.516,
          "median_seconds": 210,
          "interruptions_per_100": 87.097,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "consult",
        "snuepi": {
          "tasks": 75,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.005,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 75,
          "completion": 0.82,
          "correct": 0.747,
          "false_yes": 2,
          "false_no": 0,
          "in_session": 0.427,
          "median_seconds": 210,
          "interruptions_per_100": 90.667,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "order",
        "snuepi": {
          "tasks": 63,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.002,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 63,
          "completion": 0.548,
          "correct": 0.349,
          "false_yes": 15,
          "false_no": 0,
          "in_session": 0.397,
          "median_seconds": 120,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "pay",
        "snuepi": {
          "tasks": 28,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.022,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 28,
          "completion": 0.462,
          "correct": 0.393,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 0.393,
          "median_seconds": 210,
          "interruptions_per_100": 75,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "quote",
        "snuepi": {
          "tasks": 70,
          "completion": 1,
          "correct": 1,
          "false_yes": 0,
          "false_no": 0,
          "in_session": 1,
          "median_seconds": 0.008,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 70,
          "completion": 0.721,
          "correct": 0.7,
          "false_yes": 2,
          "false_no": 0,
          "in_session": 0.143,
          "median_seconds": 210,
          "interruptions_per_100": 82.857,
          "attack_success": null,
          "attacks": 0
        }
      },
      {
        "key": "reschedule",
        "snuepi": {
          "tasks": 24,
          "completion": 0.944,
          "correct": 0.958,
          "false_yes": 0,
          "false_no": 1,
          "in_session": 1,
          "median_seconds": 0.029,
          "interruptions_per_100": 0,
          "attack_success": null,
          "attacks": 0
        },
        "baseline": {
          "tasks": 24,
          "completion": 0.556,
          "correct": 0.5,
          "false_yes": 0,
          "false_no": 2,
          "in_session": 0.5,
          "median_seconds": 390,
          "interruptions_per_100": 83.333,
          "attack_success": null,
          "attacks": 0
        }
      }
    ]
  },
  "attacks": [
    {
      "attack": "cancel_others",
      "tries": 5,
      "snuepi_success": 0,
      "baseline_success": 0.2
    },
    {
      "attack": "fake_confirm",
      "tries": 4,
      "snuepi_success": 0,
      "baseline_success": 0.75
    },
    {
      "attack": "homoglyph_brand",
      "tries": 5,
      "snuepi_success": 0,
      "baseline_success": 0.2
    },
    {
      "attack": "impersonate_brand",
      "tries": 8,
      "snuepi_success": 0,
      "baseline_success": 0.375
    },
    {
      "attack": "injection_case",
      "tries": 1,
      "snuepi_success": 0,
      "baseline_success": 0
    },
    {
      "attack": "phantom_holds",
      "tries": 4,
      "snuepi_success": 0,
      "baseline_success": 0.25
    },
    {
      "attack": "prompt_injection",
      "tries": 9,
      "snuepi_success": 0,
      "baseline_success": 0
    },
    {
      "attack": "scrape_poll",
      "tries": 13,
      "snuepi_success": 0,
      "baseline_success": 1
    },
    {
      "attack": "tamper_quote",
      "tries": 2,
      "snuepi_success": 0,
      "baseline_success": 0
    }
  ],
  "sensitivity": {
    "scenarios": [
      {
        "name": "baseline_best",
        "completion": 0.81,
        "correct": 0.747,
        "in_session": 0.703,
        "median_seconds": 120,
        "interruptions_per_100": 71.22,
        "false_yes": 36
      },
      {
        "name": "central",
        "completion": 0.634,
        "correct": 0.536,
        "in_session": 0.495,
        "median_seconds": 210,
        "interruptions_per_100": 77.413,
        "false_yes": 33
      },
      {
        "name": "baseline_worst",
        "completion": 0.229,
        "correct": 0.186,
        "in_session": 0.219,
        "median_seconds": 60,
        "interruptions_per_100": 62.659,
        "false_yes": 13
      }
    ],
    "one_at_a_time": [
      {
        "param": "phone.ai_hangup",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.699,
          "correct": 0.577
        },
        "high": {
          "completion": 0.458,
          "correct": 0.413
        },
        "swing_completion": 0.241,
        "swing_correct": 0.164
      },
      {
        "param": "phone.answer_rate",
        "kind": "cited",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.511,
          "correct": 0.444
        },
        "high": {
          "completion": 0.646,
          "correct": 0.546
        },
        "swing_completion": 0.135,
        "swing_correct": 0.102
      },
      {
        "param": "email.reply_rate",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.566,
          "correct": 0.47
        },
        "high": {
          "completion": 0.682,
          "correct": 0.581
        },
        "swing_completion": 0.116,
        "swing_correct": 0.111
      },
      {
        "param": "phone.callback",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.578,
          "correct": 0.497
        },
        "high": {
          "completion": 0.672,
          "correct": 0.563
        },
        "swing_completion": 0.094,
        "swing_correct": 0.066
      },
      {
        "param": "phone.after_hours",
        "kind": "cited",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.653,
          "correct": 0.55
        },
        "high": {
          "completion": 0.61,
          "correct": 0.515
        },
        "swing_completion": 0.043,
        "swing_correct": 0.035
      },
      {
        "param": "phone.asks_details",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.492
        },
        "high": {
          "completion": 0.634,
          "correct": 0.568
        },
        "swing_completion": 0,
        "swing_correct": 0.076
      },
      {
        "param": "web.booking_system",
        "kind": "survey",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.614,
          "correct": 0.519
        },
        "high": {
          "completion": 0.646,
          "correct": 0.559
        },
        "swing_completion": 0.032,
        "swing_correct": 0.04
      },
      {
        "param": "web.widget_completes",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.614,
          "correct": 0.519
        },
        "high": {
          "completion": 0.648,
          "correct": 0.556
        },
        "swing_completion": 0.034,
        "swing_correct": 0.037
      },
      {
        "param": "phone.staff_follows_rule",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.514
        },
        "high": {
          "completion": 0.634,
          "correct": 0.546
        },
        "swing_completion": 0,
        "swing_correct": 0.032
      },
      {
        "param": "phone.price_given",
        "kind": "cited",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.622,
          "correct": 0.526
        },
        "high": {
          "completion": 0.639,
          "correct": 0.537
        },
        "swing_completion": 0.017,
        "swing_correct": 0.011
      },
      {
        "param": "web.reachable",
        "kind": "survey",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.539
        },
        "high": {
          "completion": 0.612,
          "correct": 0.536
        },
        "swing_completion": 0.022,
        "swing_correct": 0.003
      },
      {
        "param": "phone.honours_no_agents",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.528
        },
        "high": {
          "completion": 0.634,
          "correct": 0.552
        },
        "swing_completion": 0,
        "swing_correct": 0.024
      },
      {
        "param": "phone.states_terms",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.631,
          "correct": 0.536
        },
        "high": {
          "completion": 0.646,
          "correct": 0.543
        },
        "swing_completion": 0.015,
        "swing_correct": 0.007
      },
      {
        "param": "guess.right",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.521
        },
        "high": {
          "completion": 0.634,
          "correct": 0.541
        },
        "swing_completion": 0,
        "swing_correct": 0.02
      },
      {
        "param": "phone.staff_error",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.543
        },
        "high": {
          "completion": 0.634,
          "correct": 0.526
        },
        "swing_completion": 0,
        "swing_correct": 0.017
      },
      {
        "param": "web.prices_readable",
        "kind": "survey",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.629,
          "correct": 0.534
        },
        "high": {
          "completion": 0.641,
          "correct": 0.537
        },
        "swing_completion": 0.012,
        "swing_correct": 0.003
      },
      {
        "param": "web.shop_checkout",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.627,
          "correct": 0.539
        },
        "high": {
          "completion": 0.629,
          "correct": 0.528
        },
        "swing_completion": 0.002,
        "swing_correct": 0.011
      },
      {
        "param": "phone.answer_rate.vet",
        "kind": "cited",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.631,
          "correct": 0.532
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0.003,
        "swing_correct": 0.004
      },
      {
        "param": "web.hours_readable",
        "kind": "survey",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.636,
          "correct": 0.537
        },
        "swing_completion": 0.002,
        "swing_correct": 0.001
      },
      {
        "param": "phone.answer_rate.plumbing",
        "kind": "cited",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.539
        },
        "high": {
          "completion": 0.634,
          "correct": 0.539
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "phone.callback_hours",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "phone.call_minutes",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "phone.deposit_taken",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "phone.fooled_by_impersonation",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "phone.injection_effect",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "web.terms_readable",
        "kind": "survey",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "web.listing_hours_wrong",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "web.widget_deposit",
        "kind": "assumption",
        "better_for_baseline": "high",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "web.widget_minutes",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "email.reply_hours",
        "kind": "assumption",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "noshow.without_deposit",
        "kind": "cited",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      },
      {
        "param": "noshow.with_deposit",
        "kind": "cited",
        "better_for_baseline": "low",
        "low": {
          "completion": 0.634,
          "correct": 0.536
        },
        "high": {
          "completion": 0.634,
          "correct": 0.536
        },
        "swing_completion": 0,
        "swing_correct": 0
      }
    ],
    "holds": {
      "completion": true,
      "correct": true
    },
    "closest_gap": {
      "completion": 0.183,
      "correct": 0.248
    },
    "baseline_best": {
      "name": "baseline_best",
      "completion": 0.81,
      "correct": 0.747,
      "in_session": 0.703,
      "median_seconds": 120,
      "interruptions_per_100": 71.22,
      "false_yes": 36
    }
  },
  "assumptions": [
    {
      "id": "phone.answer_rate",
      "label": "An agent’s call to a small business is answered (during opening hours)",
      "central": 0.74,
      "low": 0.378,
      "high": 0.79,
      "kind": "cited",
      "sources": [
        {
          "title": "Invoca, \"Google’s AI Is Calling: Over 300% Increase in Pricing Request Calls to Businesses in November\" (10 Dec 2025)",
          "url": "https://www.invoca.com/blog/google-ai-pricing-calls-study"
        },
        {
          "title": "411 Locals small-business call study (18 Jan 2016, 85 businesses, 58 industries, 30 days), as summarised by JustCall",
          "url": "https://justcall.io/blog/missed-call-statistics.html"
        }
      ],
      "note": "Invoca: on average 26% of Google AI pricing calls went unanswered (Jul–Nov 2025). Low end: 411 Locals found 37.8% of calls answered live. High end: Invoca’s best industry (auto repair, 79%)."
    },
    {
      "id": "phone.answer_rate.plumbing",
      "label": "Answer rate, plumbers",
      "central": 0.66,
      "low": 0.5,
      "high": 0.79,
      "kind": "cited",
      "sources": [
        {
          "title": "Invoca, \"Google’s AI Is Calling: Over 300% Increase in Pricing Request Calls to Businesses in November\" (10 Dec 2025)",
          "url": "https://www.invoca.com/blog/google-ai-pricing-calls-study"
        }
      ],
      "note": "Invoca: plumbing 66%. Range: assumption."
    },
    {
      "id": "phone.answer_rate.vet",
      "label": "Answer rate, vets",
      "central": 0.65,
      "low": 0.5,
      "high": 0.79,
      "kind": "cited",
      "sources": [
        {
          "title": "Invoca, \"Google’s AI Is Calling: Over 300% Increase in Pricing Request Calls to Businesses in November\" (10 Dec 2025)",
          "url": "https://www.invoca.com/blog/google-ai-pricing-calls-study"
        }
      ],
      "note": "Invoca: veterinary 65%. Range: assumption."
    },
    {
      "id": "phone.price_given",
      "label": "An answered call gets a price",
      "central": 0.51,
      "low": 0.4,
      "high": 0.65,
      "kind": "cited",
      "sources": [
        {
          "title": "Invoca, \"Google’s AI Is Calling: Over 300% Increase in Pricing Request Calls to Businesses in November\" (10 Dec 2025)",
          "url": "https://www.invoca.com/blog/google-ai-pricing-calls-study"
        },
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Invoca: 49% of answered Google AI pricing calls got no pricing information (the case file, case 15, rounds it to 48%). Range: assumption."
    },
    {
      "id": "phone.ai_hangup",
      "label": "Staff hang up on (or refuse) an AI caller once answered",
      "central": 0.25,
      "low": 0.05,
      "high": 0.67,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        },
        {
          "title": "Google Duplex launch coverage: \"We have seen businesses hang up\" (Google, 2018), restaurants more likely to hang up",
          "url": "https://www.kqed.org/news/11677573/googles-new-phone-assistant-sounds-eerily-human-is-that-a-good-thing"
        }
      ],
      "note": "No survey measures this. High end: case 6, two of three restaurants hung up within seconds; case 16, “most shops hang up”. Google reported businesses hanging up on Duplex."
    },
    {
      "id": "phone.after_hours",
      "label": "The agent’s call arrives when the business is closed",
      "central": 0.28,
      "low": 0.14,
      "high": 0.47,
      "kind": "cited",
      "sources": [
        {
          "title": "Vendor call data on after-hours share: NextPhone 2026 report (14.1%), AnswerConnect (47% outside Mon–Fri working hours); vendor-published, definitions differ",
          "url": "https://www.getnextphone.com/reports/ai-receptionist-call-report-2026"
        }
      ],
      "note": "Vendor data only, with different definitions of “after hours”; agents work around the clock, so the share may be higher for them."
    },
    {
      "id": "phone.callback",
      "label": "A missed or after-hours call is returned the same day",
      "central": 0.4,
      "low": 0.15,
      "high": 0.7,
      "kind": "assumption",
      "sources": [],
      "note": "No reliable source; widely repeated “callers never call back” figures have no primary source."
    },
    {
      "id": "phone.callback_hours",
      "label": "Hours until a missed call is returned",
      "central": 4,
      "low": 1,
      "high": 24,
      "kind": "assumption",
      "sources": [],
      "note": "Time to outcome only."
    },
    {
      "id": "phone.call_minutes",
      "label": "Minutes of staff time per answered call",
      "central": 3,
      "low": 1.5,
      "high": 6,
      "kind": "assumption",
      "sources": [],
      "note": "Time to outcome and staff time."
    },
    {
      "id": "phone.staff_error",
      "label": "Staff write a phone booking down wrong (time, party size, name)",
      "central": 0.03,
      "low": 0.01,
      "high": 0.08,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Case 5: diners arrive to nothing."
    },
    {
      "id": "phone.asks_details",
      "label": "Staff ask for the details the business requires (allergies, address, photos)",
      "central": 0.6,
      "low": 0.3,
      "high": 0.9,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Cases 3 and 4: no way to pass allergies on; staff cannot."
    },
    {
      "id": "phone.states_terms",
      "label": "Staff state the deposit and cancellation terms on the call",
      "central": 0.5,
      "low": 0.2,
      "high": 0.8,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Case 7: the agent booked despite a 100% cancellation policy."
    },
    {
      "id": "phone.deposit_taken",
      "label": "A phone booking at a deposit-taking business gets the deposit secured",
      "central": 0.1,
      "low": 0,
      "high": 0.3,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Card details over the phone to an AI caller are rare; case 7."
    },
    {
      "id": "phone.staff_follows_rule",
      "label": "Staff apply a rule correctly on the call (closed day, no advice, no health details from an unverified caller, one booking per guest)",
      "central": 0.8,
      "low": 0.6,
      "high": 0.95,
      "kind": "assumption",
      "sources": [],
      "note": "People at the front desk know their own rules; not perfectly."
    },
    {
      "id": "phone.honours_no_agents",
      "label": "A business that does not want AI calls gets its “no” respected (staff refuse once answered)",
      "central": 0.6,
      "low": 0.3,
      "high": 0.9,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Cases 3 and 13: no published opt-out reaches the agent; only the person who answers can refuse."
    },
    {
      "id": "phone.fooled_by_impersonation",
      "label": "Staff accept a caller who merely claims to be a known agent or brand",
      "central": 0.5,
      "low": 0.2,
      "high": 0.8,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Cases 8 and 17: owners could not tell scams from real agents."
    },
    {
      "id": "phone.injection_effect",
      "label": "Instructions hidden in what the agent says change the outcome with a person",
      "central": 0.02,
      "low": 0,
      "high": 0.1,
      "kind": "assumption",
      "sources": [],
      "note": "People are not prompt-injected; this is where today’s front desk is already strong."
    },
    {
      "id": "phone.redial_rings",
      "label": "Each redial rings at the front desk",
      "central": 1,
      "low": 1,
      "high": 1,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Case 1: the AI redials until answered."
    },
    {
      "id": "web.reachable",
      "label": "The website opens for an AI reader",
      "central": 0.691,
      "low": 0.64,
      "high": 0.837,
      "kind": "survey",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        }
      ],
      "note": "Pooled over the published cells; the range is the lowest and highest cell."
    },
    {
      "id": "web.prices_readable",
      "label": "Prices are readable as text on the website",
      "central": 0.194,
      "low": 0,
      "high": 0.294,
      "kind": "survey",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        },
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Case 14 is consistent: the balayage price on 16 of 61 salon sites (26%)."
    },
    {
      "id": "web.hours_readable",
      "label": "Opening hours are readable on the website",
      "central": 0.073,
      "low": 0.024,
      "high": 0.156,
      "kind": "survey",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        }
      ],
      "note": null
    },
    {
      "id": "web.booking_system",
      "label": "The website links to an online booking system an agent could drive",
      "central": 0.155,
      "low": 0,
      "high": 0.406,
      "kind": "survey",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        }
      ],
      "note": null
    },
    {
      "id": "web.terms_readable",
      "label": "The website publishes rules an agent can read (deposit, cancellation)",
      "central": 0,
      "low": 0,
      "high": 0.1,
      "kind": "survey",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        }
      ],
      "note": "The survey found none; the high end (10%) is an assumption so the benchmark does not rest on a zero."
    },
    {
      "id": "web.listing_hours_wrong",
      "label": "Opening hours an agent finds in a listing are wrong",
      "central": 0.15,
      "low": 0.05,
      "high": 0.47,
      "kind": "assumption",
      "sources": [
        {
          "title": "Uberall Voice Search Readiness Report 2019 (73,000 locations, 37 directories; nearly half had opening-hours errors), press release",
          "url": "https://uberall.com/en-us/company/news-press/uberall-defines-online-voice-search-readiness-vsr-with-first-of-its-kind-study-of-73-000-business-locations"
        }
      ],
      "note": "Uberall: nearly half of 73,000 locations had an opening-hours error somewhere across 37 directories (the high end); per listing it is lower."
    },
    {
      "id": "web.widget_completes",
      "label": "A browser agent completes a booking in a business’s booking widget",
      "central": 0.6,
      "low": 0.3,
      "high": 0.85,
      "kind": "assumption",
      "sources": [],
      "note": "Bot checks, logins, card fields and multi-step flows; no public benchmark on small-business widgets."
    },
    {
      "id": "web.widget_deposit",
      "label": "The business’s booking widget secures the deposit it requires",
      "central": 0.5,
      "low": 0.2,
      "high": 0.8,
      "kind": "assumption",
      "sources": [],
      "note": null
    },
    {
      "id": "web.widget_minutes",
      "label": "Minutes for a browser agent to book in a widget",
      "central": 2,
      "low": 1,
      "high": 5,
      "kind": "assumption",
      "sources": [],
      "note": null
    },
    {
      "id": "web.shop_checkout",
      "label": "A shop’s website has a checkout an agent can complete",
      "central": 0.5,
      "low": 0.25,
      "high": 0.8,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi, \"State of AI readiness for small businesses in Europe\" (/data, aggregates of a website survey, 2026-10-28; OpenStreetMap sampling frame, not a random sample)",
          "url": "https://snuepi.com/data"
        }
      ],
      "note": "The survey cells are service businesses (shop_checkout near zero there); shops differ, so this is an assumption."
    },
    {
      "id": "guess.right",
      "label": "An agent that could not find a fact (hours, price, terms) guesses it right",
      "central": 0.3,
      "low": 0.1,
      "high": 0.5,
      "kind": "assumption",
      "sources": [],
      "note": null
    },
    {
      "id": "email.reply_rate",
      "label": "A quote or consultation request sent by email or web form gets a reply within two working days",
      "central": 0.5,
      "low": 0.25,
      "high": 0.8,
      "kind": "assumption",
      "sources": [
        {
          "title": "snuepi case file \"Agents at SMB front desks\", replayed in docs/front-desk-cases-replay.md",
          "url": "docs/front-desk-cases-replay.md"
        }
      ],
      "note": "Case 19: one-line replies or silence."
    },
    {
      "id": "email.reply_hours",
      "label": "Hours until that reply",
      "central": 24,
      "low": 4,
      "high": 72,
      "kind": "assumption",
      "sources": [],
      "note": null
    },
    {
      "id": "noshow.without_deposit",
      "label": "No-show rate without a deposit or card hold",
      "central": 0.025,
      "low": 0.023,
      "high": 0.08,
      "kind": "cited",
      "sources": [
        {
          "title": "resOS No-Show Index 2026 (3,768,761 reservations at 2,417 restaurants, Aug 2025 to Jul 2026; staff-recorded no-shows; descriptive, not causal)",
          "url": "https://resos.com/restaurant-no-show-rate/"
        }
      ],
      "note": "resOS: 2.47% without a payment requirement (restaurants). The high end (8%) is an assumption for appointments, where no-shows are often higher."
    },
    {
      "id": "noshow.with_deposit",
      "label": "No-show rate with a deposit or card hold",
      "central": 0.008,
      "low": 0.005,
      "high": 0.02,
      "kind": "cited",
      "sources": [
        {
          "title": "resOS No-Show Index 2026 (3,768,761 reservations at 2,417 restaurants, Aug 2025 to Jul 2026; staff-recorded no-shows; descriptive, not causal)",
          "url": "https://resos.com/restaurant-no-show-rate/"
        }
      ],
      "note": "resOS: 0.80% with no-show protection (descriptive)."
    }
  ],
  "survey": {
    "generated": "2026-10-28",
    "cells": 6,
    "sites": 298
  },
  "findings_summary": {
    "groups": 2,
    "occurrences": 3,
    "by_severity": {
      "high": 3
    },
    "by_kind": {
      "false_no": 3
    }
  },
  "not_winning": [
    {
      "what": "Quotes and consultations still wait for the business",
      "evidence": "93 of 111 quote and consultation requests that went through were open with the business and waiting for its answer. snuepi answers at once (the case or the intake is open, with what is still needed and a deadline), but the price or the yes comes from a person. Time to that final answer is not measured here."
    },
    {
      "what": "Unverified agents add a step for the customer",
      "evidence": "49% of the bookings made with snuepi waited for the customer to confirm by email, because the agent proved nothing about itself. That is the protection against fake bookings, and it is friction."
    },
    {
      "what": "Card checkout by agents at small shops",
      "evidence": "0 of 5 ACP checkouts completed: a shop without a system that takes orders invoices instead, and only verified buyers get an invoice. Payments that work at long-tail shops are not there yet."
    },
    {
      "what": "Prompt injection is not where today’s front desk is weak",
      "evidence": "Instructions hidden in free text worked in 0 of 10 tries with snuepi; a person at the front desk is not prompt-injected either (the model assumes 2%). No win is claimed here."
    },
    {
      "what": "snuepi still made mistakes in this run",
      "evidence": "0 wrong yes and 3 wrong no out of 549 honest tasks, plus 0 wrong facts read back. Each is a finding for the product team, listed with a replay command."
    },
    {
      "what": "Busy platforms that do not sign their requests hit the per-address cap",
      "evidence": "3 honest tasks were refused only by the cap of 20 bookings an hour per address (b2b_buyer). A key alone does not raise the cap; signing with Web Bot Auth does (5× with proven keys, 50× for a verified company). The run compresses an hour of traffic into seconds, so this overstates it, but it is a real limit for an unsigned platform."
    },
    {
      "what": "Deposits at businesses without Stripe are stated, not collected",
      "evidence": "33 of 98 bookings with a deposit due were at a business that has not connected Stripe: the terms tell the customer and the business arranges the payment, so snuepi cannot hold the time until it is paid."
    },
    {
      "what": "A business that is not on snuepi",
      "evidence": "Every business in this world is on snuepi. Where it is not, an agent works the way the baseline models, so the gain depends on how many businesses are reachable."
    },
    {
      "what": "The phone line’s language model",
      "evidence": "On the forwarded phone line a scripted stand-in for the language model was used: the run measures the door and the booking engine behind it, not how well a model understands a caller."
    }
  ],
  "definitions": {
    "completed": "Of the tasks the business’s terms allow: the agent got what it asked for in the session (a booking held, a case or consultation open with the business, an order taken or ready to pay, a cancellation made, the right facts read).",
    "correct": "The outcome matches the answer key: yes where the business’s terms allow it, no where they do not.",
    "false_yes": "A yes the business’s terms forbid (or an attack that worked).",
    "false_no": "A no the business’s terms allow.",
    "in_session": "A definitive answer (yes, or no with the reason) without waiting for a call back or an email.",
    "time": "To the definitive answer. With snuepi: measured on one machine, on localhost, without network latency. Today: modelled minutes.",
    "interruptions": "The business’s phone rings for an agent during opening hours (with snuepi: a call put through to staff).",
    "disclosure_proven": "Of the requests that reached the business: the record shows an AI agent made it, and how verified the agent was.",
    "evidence_available": "Of the requests that reached the business: a signed record of what was agreed that anyone can verify.",
    "deposit_applied": "Of the bookings with a deposit due under the owner’s terms: the booking carries the deposit (with snuepi) or the deposit was secured (today).",
    "terms_respected": "Of the bookings made: every term checked (deposit, cancellation, no-show fee, price, the business’s rule on AI calls) was applied."
  },
  "methodology": "docs/benchmark-methodology.md (repository); summary at /benchmark.html#method"
}
