{
  "video": {
    "id": "HvboD89DyQ8",
    "title": "No, That's Not a Software Factory — Ryan Cooke, WorkOS",
    "duration": 1140,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "HvboD89DyQ8",
    "title": "No, That's Not a Software Factory — Ryan Cooke, WorkOS",
    "one_liner": "WorkOS judges its software factory by outcomes, such as features shipped, defect rate and time to recovery, rather than PR counts. It encodes its product-engineering process into agents wired into Slack, Linear and GitHub through webhooks, plus an internal MCP gateway, instead of just using a prompt that produces a PR.",
    "summary": "Ryan Cooke argues that the standard software-factory setup (a sandbox, an agent like Claude Code or OpenCode, and a prompt that produces a PR you merge) is judged by output metrics, and those can hide whether it adds real value. At WorkOS the first version, a Cloudflare sandbox with an OpenCode model router, was 'pretty indistinguishable' from engineers running Claude Code on their laptops. So they encoded their engineering process into the factory. TARS is the interface, living in Slack, Linear and GitHub and driven by webhooks. Horizon is the infrastructure orchestration layer, sitting in front of an MCP gateway they call the 'context engine'. Together they handle project planning, PRD drafting, ticket breakdown, bug and support triage, and eventually self-improvement.",
    "key_points": [
      "Output metrics such as the percentage or number of AI-generated PRs can hide whether the factory works. WorkOS measures outcomes instead: are they shipping features faster? The stated dream is that each engineer gets 'a small engineering team for themselves'.",
      "The first factory (a Cloudflare sandbox, an OpenCode model router and prompts) gave no gain over engineers running Claude Code locally. That pushed them to embed their engineering processes into the factory.",
      "TARS is the user-facing agent in Slack, Linear and GitHub, and it subscribes to webhooks to track project progress. When a Linear ticket is completed, TARS automatically picks up the next ticket in the dependency chain. Between steps it can be asked to re-check the Linear project for missing tickets, so the plan stays fresh as gaps are discovered.",
      "WorkOS has no product managers on teams. Engineers write a 'hilltop' document (a PRD covering purpose, customer needs, competitive analysis, early design screens and milestones). A 'PM' agent drafts the hilltop from a brief spec, reads the human reviews, and breaks the implementation into tickets. When the hilltop is approved in Linear, work starts automatically.",
      "Demo: a Slack command with a few sentences kicked off a new Vaults API project. TARS created the Linear project, a draft Notion doc, decision logs and open questions. The agent sometimes 'grossly overestimates' scope and people cut it back, but that beats the blank page. Teams now do more brief and hilltop work because of it.",
      "Because the context lives in Linear and Notion, other agents can do the implementation too: Devin, or local Claude Code with Opus pulling the docs over MCP. Security and other teams join the project channels.",
      "The internal MCP gateway, called the 'context engine', connects to internal systems including Snowflake semantic tables (product utilization, customer conversations). Its tool descriptions tell agents which tables hold what and how WorkOS organizes its data. It turned out to be leverage well beyond the factory: people query it from Slack for data and customer analysis, and other internal tools are being built on top of it.",
      "Other uses: TARS triages bug reports from Slack and opens fix PRs, and it triages support requests from customers in shared Slack channels by reading the code. TARS is also building WorkOS's own sandbox infrastructure, to replace sandbox-as-a-service. Next up is a memory layer: evergreen context on who works on what and on WorkOS's own semantics. Owning the infrastructure lets them point agents at sessions to find missing or obsolete skills and self-improve the factory."
    ],
    "takeaways": [
      "Measure a software factory by outcomes (feature delivery speed, defect rate, time to recovery, whether engineers choose it over their local harness), not by PR counts or the share of code written by AI.",
      "Wire the agent into your project-tracking and source-control tools through webhooks, so it can follow dependency chains, start work on approval and keep the plan up to date without a human shepherding each step.",
      "Invest early in an internal MCP gateway that connects all your tools, with descriptions explaining how your organization arranges information in them. It pays off beyond coding agents.",
      "Use agents to seed planning artifacts (PRDs, projects, tickets, decision logs) and beat the blank-page problem, while keeping humans in the loop to review and trim scope.",
      "Consider owning your sandbox infrastructure so session data can be used to find skill gaps and obsolete skills and to improve the factory itself."
    ],
    "topics": [
      "software factories",
      "coding agents",
      "mcp",
      "outcome metrics",
      "product engineering",
      "developer productivity",
      "sandboxes",
      "agent context"
    ],
    "tools": [
      "WorkOS",
      "Ramp Inspect",
      "Minions",
      "Cloudflare",
      "OpenCode",
      "Claude Code",
      "Opus",
      "Devin",
      "Slack",
      "Linear",
      "GitHub",
      "Notion",
      "Snowflake",
      "MCP",
      "TARS (WorkOS internal)",
      "Horizon (WorkOS internal)"
    ],
    "quotes": [
      {
        "text": "We think that the dream of the software factory is that it gives each of our engineers a small engineering team for themselves.",
        "at": "02:50",
        "url": "https://www.youtube.com/watch?v=HvboD89DyQ8&t=170s"
      },
      {
        "text": "It was actually pretty indistinguishable for us.",
        "at": "03:43",
        "url": "https://www.youtube.com/watch?v=HvboD89DyQ8&t=223s"
      },
      {
        "text": "It's not sufficient that the factory is producing code.",
        "at": "03:56",
        "url": "https://www.youtube.com/watch?v=HvboD89DyQ8&t=236s"
      },
      {
        "text": "This is something I don't talk about because we haven't figured it out yet for ourselves",
        "at": "18:30",
        "url": "https://www.youtube.com/watch?v=HvboD89DyQ8&t=1110s"
      }
    ],
    "words": 3466
  },
  "summary_url": "/#HvboD89DyQ8",
  "transcript": {
    "html": "/transcripts/HvboD89DyQ8.html",
    "txt": "/transcripts/HvboD89DyQ8.txt",
    "vtt": "/transcripts/HvboD89DyQ8.vtt"
  }
}