{
  "apiVersion": "v1",
  "topic": {
    "id": "internal-tools",
    "title": "Do organizations build their own AI tools or buy them?",
    "summary": "Internal agents and platforms versus bought tools, and why.",
    "group": "Running AI in an organization",
    "aliases": [
      "build vs buy",
      "internal platform",
      "in-house"
    ]
  },
  "passages": [
    {
      "id": "warp-oz-for-oss-complete-deployable-software-factory-2026",
      "text": "warpdotdev/oz-for-oss is Warp's complete, deployable software factory for GitHub-hosted repositories. It includes all four agent roles, a Vercel webhook layer that handles GitHub events without GitHub Actions boilerplate, and self-improvement loops that propose skill updates based on maintainer feedback.",
      "speaker": null,
      "role": null,
      "organization": "Warp",
      "aiVendor": true,
      "work": {
        "title": "Set up your software factory",
        "type": "docs",
        "date": "2026-10-28",
        "publisher": "Warp docs",
        "locator": "Reference implementation",
        "url": "https://docs.warp.dev/guides/agent-workflows/set-up-a-software-factory"
      },
      "grade": "B",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-10-31"
      },
      "topics": [
        "coding-agents",
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/warp-oz-for-oss-complete-deployable-software-factory-2026"
    },
    {
      "id": "jpmorgan-chase-recently-rolled-out-employee-assistant-personalized-ai-2026",
      "text": "We recently rolled out the Employee Assistant, a personalized AI-powered agent to provide employees a single resource to get help and take action across the firm.",
      "speaker": null,
      "role": null,
      "organization": "JPMorgan Chase",
      "aiVendor": false,
      "work": {
        "title": "JPMorgan Chase (own site)",
        "type": "post",
        "date": "2026",
        "publisher": "JPMorgan Chase (own site)",
        "url": "https://www.jpmorganchase.com/ir/annual-report/2025/ar-ceo-letter-jennifer-piepszak"
      },
      "grade": "B",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-10-31"
      },
      "topics": [
        "internal-tools"
      ],
      "functions": [
        "company-wide"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/jpmorgan-chase-recently-rolled-out-employee-assistant-personalized-ai-2026"
    },
    {
      "id": "airbnb-own-internal-agent-call-airchat-which-includes-2026",
      "text": "We have our own internal agent that we call AirChat, which [includes] basically all the necessary MCP organizational context,",
      "speaker": "Ahmad Al-Dahle",
      "role": "Chief Technology Officer",
      "organization": "Airbnb",
      "aiVendor": false,
      "work": {
        "title": "Latent Space (independent AI engineering publication)",
        "type": "interview",
        "date": "2026-10-02",
        "publisher": "Latent Space (independent AI engineering publication)",
        "url": "https://www.latent.space/p/airbnb"
      },
      "grade": "C",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-10-31"
      },
      "topics": [
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/airbnb-own-internal-agent-call-airchat-which-includes-2026"
    },
    {
      "id": "boundary-design-docs-writing-cannot-be-slop-slack-channel-2026",
      "text": "we have a very simple rule in our team. Code can be slop, writing cannot. … What this design doc tool does, it's a replacement for both Notion and GitHub, effectively for design docs. It allows versioning, commenting, all the stuff you want. … We built another tool on top of that. And this tool was a slack integration for that tool. Every time a design doc got updated, this channel got notifications. And what ended up happening is this channel became the most popular channel in our company really fast.",
      "speaker": "Vaibhav Gupta",
      "role": "Co-founder and Chief Executive",
      "organization": "Boundary (BoundaryML)",
      "aiVendor": true,
      "work": {
        "title": "Fighting Slop with Slop",
        "type": "talk",
        "date": "2026-07-31",
        "publisher": "AI Engineer (YouTube)",
        "locator": "2:43",
        "url": "https://www.youtube.com/watch?v=AMiyLItEtLA"
      },
      "grade": "B",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-11-01"
      },
      "topics": [
        "internal-tools",
        "product-and-design"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "Gupta is describing how the team keeps design documents good while letting code be generated.",
      "url": "https://the-ai-record.com/passages/boundary-design-docs-writing-cannot-be-slop-slack-channel-2026"
    },
    {
      "id": "reddit-built-agent-clean-stale-feature-flags-scored-reviewer-2026",
      "text": "I got tired of watching old feature flags pile up… I built an agent for cleaning up stale feature flags. It runs in my local workflow and it doesn't merge any code. The models, the easy part. The judgment in front of it is the whole game. Every flag gets scored the way an experienced reviewer would analyze it. How many modules does it touch? Is it multi-variant? Does it share a component? Then it checks the experiment data. Is the rollout frozen? Is there a sample ratio mismatch? Is there a variant already rolled out to 100 percent?",
      "speaker": "Andrew Orobator",
      "role": "Senior Software Engineer",
      "organization": "Reddit",
      "aiVendor": false,
      "work": {
        "title": "Scale the Judgment, Not the Model",
        "type": "talk",
        "date": "2026-06-30",
        "publisher": "AI Engineer (YouTube)",
        "locator": "11:18",
        "url": "https://www.youtube.com/watch?v=6MudaeKdBSk"
      },
      "grade": "B",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-11-01"
      },
      "topics": [
        "coding-agents",
        "internal-tools",
        "autonomy-and-oversight"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "The speaker is a Reddit Android engineer. In the talk he describes this agent as running in his local workflow and on his laptop, and says some of his other practices are from his personal side projects.",
      "url": "https://the-ai-record.com/passages/reddit-built-agent-clean-stale-feature-flags-scored-reviewer-2026"
    },
    {
      "id": "cognition-devin-permanent-pm-memory-file-slack-channel-2026",
      "text": "So we have like some Slack channels internally, maybe a Slack channel dedicated to, a specific product like DeepWiki maybe. And you can imagine that, or you want a Devin that never stops, it’s just always awake, but it has this like memory dock that it can just maintain for itself about, okay, what are like the number one priorities of what we have to fix and prioritize? Who is responsible for some upcoming work?",
      "speaker": "Walden Yan",
      "role": "Co-founder and Chief Product Officer",
      "organization": "Cognition",
      "aiVendor": true,
      "work": {
        "title": "The Age of Async Agents: Cognition's Walden Yan and OpenInspect's Cole Murray",
        "type": "podcast",
        "date": "2026-05-28",
        "publisher": "Latent Space",
        "locator": "00:33:01",
        "url": "https://latent.space/p/cognition"
      },
      "grade": "C",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-11-01"
      },
      "topics": [
        "internal-tools",
        "coding-agents"
      ],
      "functions": [
        "engineering",
        "product"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/cognition-devin-permanent-pm-memory-file-slack-channel-2026"
    },
    {
      "id": "uber-one-thing-we-learned-actually-writing-2026",
      "text": "One thing that we learned is that actually writing the skill was very easy, like teams just very quickly wrote a skill by asking Claude to write one, go over my previous PR reviews and write me a skill, but the hard part was how to run these skills at scale with consistent quality and low cost, and that required a lot of iterations, not only from the [uReview] team side, but also … for each team who was trying to write these rules.",
      "speaker": "Ameya Ketkar",
      "role": "Speaker, AI Engineer World's Fair 2026 (job title not stated)",
      "organization": "Uber",
      "aiVendor": false,
      "work": {
        "title": "Building uReview, Uber's Multi-Agent Code Review Engine (talk, AI Engineer World's Fair 2026)",
        "type": "talk",
        "date": "2026-08-28",
        "publisher": "AI Engineer (YouTube)",
        "locator": "09:44",
        "url": "https://www.youtube.com/watch?v=EL123UNokkI"
      },
      "grade": "B",
      "verification": {
        "status": "reported"
      },
      "topics": [
        "code-review",
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "Ameya Ketkar is describing how Uber's teams wrote their own code-review skills for uReview.",
      "url": "https://the-ai-record.com/passages/uber-one-thing-we-learned-actually-writing-2026"
    },
    {
      "id": "uber-uber-spent-time-invest-building-house-2026",
      "text": "Uber spent the time to invest in building an in-house solution due to some of the constraints that we have. One of those is we currently use [Phabricator] and have for a long time and are in the process of migrating to GitHub. Most of the solutions do not provide support for [Phabricator].",
      "speaker": "Will Bond",
      "role": "Staff Engineer, AI Foundations team, Development Platform organization",
      "organization": "Uber",
      "aiVendor": false,
      "work": {
        "title": "Building uReview, Uber's Multi-Agent Code Review Engine (talk, AI Engineer World's Fair 2026)",
        "type": "talk",
        "date": "2026-08-28",
        "publisher": "AI Engineer (YouTube)",
        "locator": "01:22",
        "url": "https://www.youtube.com/watch?v=EL123UNokkI"
      },
      "grade": "B",
      "verification": {
        "status": "reported"
      },
      "topics": [
        "code-review",
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/uber-uber-spent-time-invest-building-house-2026"
    },
    {
      "id": "cloudflare-build-platform-layer-around-ai-tooling-2026",
      "text": "we've been trying to build … platform layer around AI tooling at Cloudflare, not just coding … but the stack that makes the tools useful and safe inside a real engineering organization.",
      "speaker": "Rajesh Bhatia",
      "role": "Senior Director of Engineering, Cloudflare",
      "organization": "Cloudflare",
      "aiVendor": true,
      "work": {
        "title": "From Assisted to Delegated: Cloudflare's AI Engineering Stack (interview, Background Agents Summit 2026)",
        "type": "talk",
        "date": "2026-05-06",
        "publisher": "Ona (YouTube)",
        "locator": "2:10",
        "url": "https://www.youtube.com/watch?v=MbLdrAZFQRs"
      },
      "grade": "B",
      "verification": {
        "status": "reported"
      },
      "topics": [
        "internal-tools",
        "adoption-and-usage"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "Describing what his team built, in answer to a request to summarize the internal work.",
      "url": "https://the-ai-record.com/passages/cloudflare-build-platform-layer-around-ai-tooling-2026"
    },
    {
      "id": "cloudflare-code-tells-model-what-front-guessing-2026",
      "text": "the code tells the model what's in front of it, but it does not tell the model who owns the service, what the dependencies are, … what databases are being talked to, what conventions are that the teams considers non-negotiable … they reduce the amount of guessing the models have to do. And one thing we learned the hard way is that even with the decent context file, it is better than having none. And when the model stops guessing, the quality goes up everywhere else.",
      "speaker": "Rajesh Bhatia",
      "role": "Senior Director of Engineering, Cloudflare",
      "organization": "Cloudflare",
      "aiVendor": true,
      "work": {
        "title": "From Assisted to Delegated: Cloudflare's AI Engineering Stack (interview, Background Agents Summit 2026)",
        "type": "talk",
        "date": "2026-05-06",
        "publisher": "Ona (YouTube)",
        "locator": "16:24",
        "url": "https://www.youtube.com/watch?v=MbLdrAZFQRs"
      },
      "grade": "B",
      "verification": {
        "status": "reported"
      },
      "topics": [
        "internal-tools",
        "coding-agents"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "Explaining why Cloudflare invested in Backstage, its internal developer portal, and AGENTS.md files as context for coding agents.",
      "url": "https://the-ai-record.com/passages/cloudflare-code-tells-model-what-front-guessing-2026"
    },
    {
      "id": "cloudflare-ready-background-work-context-mcp-infrastructure-2026",
      "text": "the good part was that we were ready with all the background work that we were doing with respect to the building of the context and building of the right sort of MCP infrastructure internally. So when that became a reality, we started seeing a lot more adoption and because it started helping in the real work that people were doing.",
      "speaker": "Rajesh Bhatia",
      "role": "Senior Director of Engineering, Cloudflare",
      "organization": "Cloudflare",
      "aiVendor": true,
      "work": {
        "title": "From Assisted to Delegated: Cloudflare's AI Engineering Stack (interview, Background Agents Summit 2026)",
        "type": "talk",
        "date": "2026-05-06",
        "publisher": "Ona (YouTube)",
        "locator": "6:16",
        "url": "https://www.youtube.com/watch?v=MbLdrAZFQRs"
      },
      "grade": "B",
      "verification": {
        "status": "reported"
      },
      "topics": [
        "adoption-and-usage",
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": "Answering how Cloudflare reached 93% of R&D using AI tools; he has just said adoption was slow at first because the models were not good enough.",
      "url": "https://the-ai-record.com/passages/cloudflare-ready-background-work-context-mcp-infrastructure-2026"
    },
    {
      "id": "ramp-even-when-you-hundreds-sessions-running-parallel-2026",
      "text": "even when you have hundreds of sessions running in parallel",
      "speaker": "Zach Bruggeman",
      "role": "Principal engineer; founding engineer of Inspect",
      "organization": "Ramp",
      "aiVendor": false,
      "work": {
        "title": "Why We Built Our Own Background Agent",
        "type": "post",
        "date": "2026-01-12",
        "publisher": "Ramp engineering blog",
        "url": "https://builders.ramp.com/post/why-we-built-our-background-agent"
      },
      "grade": "B",
      "verification": {
        "status": "verified",
        "reviewedOn": "2026-10-31"
      },
      "topics": [
        "internal-tools"
      ],
      "functions": [
        "engineering"
      ],
      "figures": [],
      "context": null,
      "url": "https://the-ai-record.com/passages/ramp-even-when-you-hundreds-sessions-running-parallel-2026"
    }
  ],
  "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 tooling and have a reason to publish flattering numbers.",
    "An empty result means the archive holds nothing on it, not that nobody has said anything."
  ]
}