{
  "schemaVersion": 1,
  "methodologyVersion": "1.0.0",
  "effectiveDate": "2026-08-30",
  "publication": {
    "downloadable": true,
    "pages": [
      {
        "site": "tair",
        "pageId": "TAIR-21",
        "canonicalPath": "/comparison-methodology/"
      },
      {
        "site": "tacs",
        "pageId": "TACS-24",
        "canonicalPath": "/comparison-methodology/"
      }
    ]
  },
  "reviewCadence": {
    "maximumMonthsBetweenMethodologyReviews": 6,
    "maximumDaysBetweenCommercialSourceChecks": 30,
    "incrementVersionImmediatelyOn": [
      "criteria-change",
      "weight-change",
      "source-hierarchy-change",
      "disclosure-change"
    ]
  },
  "history": [
    {
      "version": "1.0.0",
      "effectiveDate": "2026-08-30",
      "summary": "Initial machine-readable publication of the comparison gates, criteria, scenario weights, scoring rules, and owner-product safeguards."
    }
  ],
  "universalGates": [
    {
      "id": "channel-eligibility",
      "label": "Channel eligibility"
    },
    {
      "id": "geography",
      "label": "Geography"
    },
    {
      "id": "regulated-data-fit",
      "label": "Regulated-data fit"
    },
    {
      "id": "required-system-integration",
      "label": "Required system/integration"
    },
    {
      "id": "action-requirement",
      "label": "Action requirement"
    },
    {
      "id": "human-workspace-requirement",
      "label": "Human-workspace requirement"
    },
    {
      "id": "budget-contract-requirement",
      "label": "Budget/contract requirement"
    },
    {
      "id": "implementation-model",
      "label": "Implementation model"
    },
    {
      "id": "source-freshness",
      "label": "Source freshness"
    }
  ],
  "gatePolicy": {
    "scoreOnlyAfterMustHaveGatesPass": true,
    "failedMustHaveResult": "eliminated-for-scenario-regardless-of-score"
  },
  "sharedCriteria": [
    {
      "id": "task-coverage",
      "label": "Task coverage",
      "measurement": "Exact eligible jobs, not generic feature count",
      "evidence": "official docs/test"
    },
    {
      "id": "action-completion",
      "label": "Action completion",
      "measurement": "Read/write/confirm/recover behavior",
      "evidence": "official docs/test"
    },
    {
      "id": "human-escalation",
      "label": "Human escalation",
      "measurement": "Trigger, availability truth, context transfer",
      "evidence": "official docs/test"
    },
    {
      "id": "setup-effort",
      "label": "Setup effort",
      "measurement": "Buyer work, vendor work, configuration control",
      "evidence": "official source/user test"
    },
    {
      "id": "ongoing-operation",
      "label": "Ongoing operation",
      "measurement": "Content updates, QA, reporting, staffing",
      "evidence": "official source/test"
    },
    {
      "id": "price-predictability",
      "label": "Price predictability",
      "measurement": "Unit, allowance, overage, dependencies",
      "evidence": "official pricing"
    },
    {
      "id": "total-cost",
      "label": "Total cost",
      "measurement": "Same scenario, required plans/seats/usage",
      "evidence": "formula + official pricing"
    },
    {
      "id": "limitations",
      "label": "Limitations",
      "measurement": "Geography, data, channels, use cases",
      "evidence": "official source/terms"
    },
    {
      "id": "evidence-confidence",
      "label": "Evidence confidence",
      "measurement": "Quality and freshness of proof",
      "evidence": "source ledger"
    },
    {
      "id": "accessibility-privacy",
      "label": "Accessibility/privacy",
      "measurement": "Public commitments and tested behavior",
      "evidence": "official policy/test"
    }
  ],
  "scenarioModels": {
    "tair": {
      "weightColumns": [
        {
          "id": "taskAction",
          "label": "Task/action"
        },
        {
          "id": "humanEscalation",
          "label": "Human escalation"
        },
        {
          "id": "setupOperation",
          "label": "Setup/operation"
        },
        {
          "id": "pricePredictability",
          "label": "Price predictability"
        },
        {
          "id": "cost",
          "label": "Cost"
        },
        {
          "id": "limitationsFit",
          "label": "Limitations fit"
        },
        {
          "id": "evidence",
          "label": "Evidence"
        }
      ],
      "scenarios": [
        {
          "id": "managed-small-business-voice-receptionist",
          "label": "Managed small-business voice receptionist",
          "weights": {
            "taskAction": 25,
            "humanEscalation": 10,
            "setupOperation": 20,
            "pricePredictability": 15,
            "cost": 10,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "human-backed-reception",
          "label": "Human-backed reception",
          "weights": {
            "taskAction": 15,
            "humanEscalation": 30,
            "setupOperation": 10,
            "pricePredictability": 10,
            "cost": 10,
            "limitationsFit": 15,
            "evidence": 10
          }
        },
        {
          "id": "lowest-viable-entry-cost",
          "label": "Lowest viable entry cost",
          "weights": {
            "taskAction": 15,
            "humanEscalation": 5,
            "setupOperation": 10,
            "pricePredictability": 20,
            "cost": 30,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "appointment-booking-and-routing",
          "label": "Appointment booking and routing",
          "weights": {
            "taskAction": 30,
            "humanEscalation": 15,
            "setupOperation": 15,
            "pricePredictability": 10,
            "cost": 10,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "diy-workflow-control",
          "label": "DIY workflow control",
          "weights": {
            "taskAction": 25,
            "humanEscalation": 5,
            "setupOperation": 25,
            "pricePredictability": 10,
            "cost": 10,
            "limitationsFit": 10,
            "evidence": 15
          }
        }
      ]
    },
    "tacs": {
      "weightColumns": [
        {
          "id": "taskAction",
          "label": "Task/action"
        },
        {
          "id": "humanWorkspace",
          "label": "Human workspace"
        },
        {
          "id": "setupOperation",
          "label": "Setup/operation"
        },
        {
          "id": "channels",
          "label": "Channels"
        },
        {
          "id": "pricePredictability",
          "label": "Price predictability"
        },
        {
          "id": "limitationsFit",
          "label": "Limitations fit"
        },
        {
          "id": "evidence",
          "label": "Evidence"
        }
      ],
      "scenarios": [
        {
          "id": "managed-small-business-website-assistant",
          "label": "Managed small-business website assistant",
          "weights": {
            "taskAction": 25,
            "humanWorkspace": 5,
            "setupOperation": 25,
            "channels": 10,
            "pricePredictability": 15,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "live-chat-team-with-ai",
          "label": "Live-chat team with AI",
          "weights": {
            "taskAction": 20,
            "humanWorkspace": 25,
            "setupOperation": 15,
            "channels": 15,
            "pricePredictability": 10,
            "limitationsFit": 5,
            "evidence": 10
          }
        },
        {
          "id": "help-desk-native-ai",
          "label": "Help-desk-native AI",
          "weights": {
            "taskAction": 25,
            "humanWorkspace": 20,
            "setupOperation": 10,
            "channels": 15,
            "pricePredictability": 10,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "visual-bot-builder",
          "label": "Visual bot builder",
          "weights": {
            "taskAction": 20,
            "humanWorkspace": 10,
            "setupOperation": 25,
            "channels": 10,
            "pricePredictability": 15,
            "limitationsFit": 10,
            "evidence": 10
          }
        },
        {
          "id": "complex-action-taking-agent",
          "label": "Complex action-taking agent",
          "weights": {
            "taskAction": 30,
            "humanWorkspace": 15,
            "setupOperation": 10,
            "channels": 15,
            "pricePredictability": 10,
            "limitationsFit": 10,
            "evidence": 10
          }
        }
      ]
    }
  },
  "scoring": {
    "scale": [
      {
        "score": 0,
        "label": "explicitly does not meet"
      },
      {
        "score": 1,
        "label": "severe limitation"
      },
      {
        "score": 2,
        "label": "partial"
      },
      {
        "score": 3,
        "label": "meets"
      },
      {
        "score": 4,
        "label": "strong"
      },
      {
        "score": 5,
        "label": "exceptional, supported by evidence"
      }
    ],
    "unknownValue": null,
    "unknownReceivesPositiveOrNegativeScore": false,
    "materialUnknownVerdict": "insufficient-evidence",
    "winnerWhenMaterialCriteriaUnknown": null,
    "scoresAreDecisionAids": true,
    "shortAnswerMustExplain": "actual requirement and tradeoff"
  },
  "recommendationPolicy": {
    "basis": "best-fit-by-scenario",
    "universalWinnerAllowed": false,
    "deceptiveOrdinalRankingAllowed": false,
    "ownerProductAutomaticPlacementAdvantageAllowed": false,
    "vendorsCanPayForPlacementOrScores": false,
    "directComparisonsRequireAtLeastOne": "competitor-or-neither-fit-scenario",
    "ownershipDisclosureBeforeRecommendations": true
  },
  "sampleEvaluations": {
    "tair": {
      "synthetic": true,
      "disclaimer": "Illustrative fictional candidates only. This sample asserts no product, vendor, price, capability, or performance fact.",
      "site": "tair",
      "scenarioId": "managed-small-business-voice-receptionist",
      "candidates": [
        {
          "id": "synthetic-provider-alpha",
          "label": "Synthetic Provider Alpha",
          "gateResults": {
            "channel-eligibility": "pass",
            "geography": "pass",
            "regulated-data-fit": "pass",
            "required-system-integration": "pass",
            "action-requirement": "pass",
            "human-workspace-requirement": "pass",
            "budget-contract-requirement": "pass",
            "implementation-model": "pass",
            "source-freshness": "pass"
          },
          "scores": {
            "taskAction": 4,
            "humanEscalation": 3,
            "setupOperation": 3,
            "pricePredictability": 4,
            "cost": 3,
            "limitationsFit": 4,
            "evidence": 4
          },
          "weightedScore": 3.6
        },
        {
          "id": "synthetic-provider-beta",
          "label": "Synthetic Provider Beta",
          "gateResults": {
            "channel-eligibility": "pass",
            "geography": "pass",
            "regulated-data-fit": "pass",
            "required-system-integration": "pass",
            "action-requirement": "pass",
            "human-workspace-requirement": "pass",
            "budget-contract-requirement": "pass",
            "implementation-model": "pass",
            "source-freshness": "pass"
          },
          "scores": {
            "taskAction": 3,
            "humanEscalation": 4,
            "setupOperation": 4,
            "pricePredictability": 3,
            "cost": 4,
            "limitationsFit": 3,
            "evidence": 3
          },
          "weightedScore": 3.4
        }
      ],
      "verdict": "best-fit-by-scenario",
      "winner": "synthetic-provider-alpha",
      "shortAnswer": "For the fictional managed-receptionist scenario, Synthetic Provider Alpha is the sample best fit because price predictability and documented evidence outweigh Synthetic Provider Beta's stronger human-escalation and setup scores. This is an arithmetic demonstration, not a real recommendation."
    },
    "tacs": {
      "synthetic": true,
      "disclaimer": "Illustrative fictional candidates only. This sample asserts no product, vendor, price, capability, or performance fact.",
      "site": "tacs",
      "scenarioId": "managed-small-business-website-assistant",
      "candidates": [
        {
          "id": "synthetic-provider-alpha",
          "label": "Synthetic Provider Alpha",
          "gateResults": {
            "channel-eligibility": "pass",
            "geography": "pass",
            "regulated-data-fit": "pass",
            "required-system-integration": "pass",
            "action-requirement": "pass",
            "human-workspace-requirement": "pass",
            "budget-contract-requirement": "pass",
            "implementation-model": "pass",
            "source-freshness": "pass"
          },
          "scores": {
            "taskAction": 4,
            "humanWorkspace": 2,
            "setupOperation": 3,
            "channels": 4,
            "pricePredictability": 3,
            "limitationsFit": 4,
            "evidence": 4
          },
          "weightedScore": 3.5
        },
        {
          "id": "synthetic-provider-beta",
          "label": "Synthetic Provider Beta",
          "gateResults": {
            "channel-eligibility": "pass",
            "geography": "pass",
            "regulated-data-fit": "pass",
            "required-system-integration": "pass",
            "action-requirement": "pass",
            "human-workspace-requirement": "pass",
            "budget-contract-requirement": "pass",
            "implementation-model": "pass",
            "source-freshness": "pass"
          },
          "scores": {
            "taskAction": 3,
            "humanWorkspace": 5,
            "setupOperation": 4,
            "channels": 4,
            "pricePredictability": 2,
            "limitationsFit": 3,
            "evidence": 3
          },
          "weightedScore": 3.3
        }
      ],
      "verdict": "best-fit-by-scenario",
      "winner": "synthetic-provider-alpha",
      "shortAnswer": "For the fictional managed website-assistant scenario, Synthetic Provider Alpha is the sample best fit because task coverage, price predictability, limitations fit, and evidence outweigh Synthetic Provider Beta's stronger human-workspace and setup scores. This is an arithmetic demonstration, not a real recommendation."
    }
  },
  "evidenceCoverage": {
    "studyId": "official-source-coverage",
    "title": "How much of an AI answering-service purchase can a buyer settle from official pages?",
    "method": "Count every normalized vendor fact the publication tracks and read its recorded evidence state. A fact counts as settled only when a current official vendor page states it plainly. Configuration-dependent, not-stated and not-offered-explicit each leave the buyer with an open question, so none of them count as settled. No fact is estimated, inferred from a competitor, or carried over from an expired source.",
    "asOf": "2026-10-20",
    "settledState": "verified-official",
    "vendorsMeasured": 9,
    "factsMeasured": 44,
    "settledOnAnOfficialPage": 32,
    "openQuestions": 12,
    "byField": [
      {
        "fieldId": "live-human-backup",
        "vendorsMeasured": 8,
        "settledOnAnOfficialPage": 0
      },
      {
        "fieldId": "setup-model",
        "vendorsMeasured": 9,
        "settledOnAnOfficialPage": 7
      },
      {
        "fieldId": "billing-unit",
        "vendorsMeasured": 9,
        "settledOnAnOfficialPage": 8
      },
      {
        "fieldId": "starting-price",
        "vendorsMeasured": 9,
        "settledOnAnOfficialPage": 8
      },
      {
        "fieldId": "product-class",
        "vendorsMeasured": 9,
        "settledOnAnOfficialPage": 9
      }
    ],
    "headlineFindings": [
      "Across 9 AI reception and customer-service vendors, 32 of 44 normalized procurement facts are stated plainly on a current official page.",
      "live-human-backup is the least settled fact in the category: of the 8 vendors that carry a record, 0 state it plainly on an official page.",
      "Product class is the only one of the 5 tracked facts with full official coverage. Every vendor says what it is; the category is far less clear about what happens when the software cannot finish the call."
    ],
    "limitations": [
      "The study measures what official pages state, not what a product does. A vendor may support a capability it does not document.",
      "Five normalized facts do not describe a whole purchase. They are the fields the publication normalizes for every vendor in both categories.",
      "One of the 9 vendors is First AI Employee, which the publisher owns. Its records carry the same evidence rules and source dates. It carries no live-human-backup record at all, so it is absent from that row rather than scoring well on it. The publisher could not normalize that field for its own product either, which is part of the finding.",
      "A vendor with no record on a field is excluded from that field's row. It is never counted as settled and never counted as an open question, so no row is inflated in either direction.",
      "Sales conversations, trials and private documentation are out of scope. The measurement is limited to publicly readable official pages."
    ],
    "reproduce": "node scripts/analysis/evidence-coverage.mjs"
  }
}
