{
  "apiVersion": "v1",
  "passage": {
    "id": "customer-io-most-ai-code-review-tools-stop-comments-approves-2025",
    "text": "Most AI code review tools stop at comments. They suggest improvements, flag issues, and point out problems. We built a system that approves PRs for merging.",
    "context": null,
    "speaker": "Joey Bates",
    "speakerId": "joey-bates",
    "speakerUrl": "https://the-ai-record.com/people/joey-bates",
    "speakerLevel": "practitioner",
    "role": "Developer Enablement",
    "voice": "person",
    "organization": "Customer.io",
    "organizationId": "customer-io",
    "organizationUrl": "https://the-ai-record.com/organizations/customer-io",
    "aiVendor": false,
    "work": {
      "title": "How we taught AI to approve pull requests (not just review them)",
      "type": "post",
      "date": "2025-11-10",
      "publisher": "Customer.io",
      "locator": "Problem: The cognitive weight of waiting",
      "url": "https://customer.io/learn/how-we-work/how-we-taught-ai-to-approve-pull-requests"
    },
    "grade": "B",
    "gradeMeaning": "The organization's own post, paper or talk.",
    "verification": {
      "status": "verified",
      "meaning": "An independent second reader re-fetched the source and confirmed the wording.",
      "reviewedOn": "2026-11-04"
    },
    "topics": [
      "code-review",
      "autonomy-and-oversight",
      "ai-approves-code"
    ],
    "functions": [
      "engineering"
    ],
    "figures": [],
    "url": "https://the-ai-record.com/passages/customer-io-most-ai-code-review-tools-stop-comments-approves-2025",
    "json": "https://the-ai-record.com/api/v1/passages/customer-io-most-ai-code-review-tools-stop-comments-approves-2025.json"
  },
  "notice": [
    "Every passage is reproduced word for word from the cited source.",
    "Check the verification status: \"reported\" means not yet confirmed by an independent second reader.",
    "Organizations flagged aiVendor sell AI tools or services and have a reason to publish flattering numbers.",
    "An empty result means the archive holds nothing on it, not that nobody has said anything."
  ]
}