All work

Case study

A software factory built with agents

An agent-driven workflow from product brief to scoped tickets, implementation, review, QA, and merge, with human intervention when needed.

My role
System design, implementation, agent coordination, client delivery, and training.
Built with
Agent coordination · MCP · Jira / Linear · CI · Obsidian

How it works

  • Understand the PRD

    A second agent checks the reorganized PRD against the original requirements.

  • Scope the tickets

    Create tickets in Jira or Linear with scope and acceptance criteria.

  • Build and review

    A project coordinator assigns builder and reviewer agents one ticket at a time.

  • Review quality and security

    Quality and security reviewers send the work back for changes as needed.

  • Decide whether to call an engineer

    Reviewers judge the implementation and tests. A high intervention score triggers a message to a human.

  • Follow the change through CI

    Below the threshold, open a pull request, wait for CI to pass, and merge before starting the next ticket.

I first built the factory for my own work, then delivered it to a consulting client. A product manager gives it a PRD, and it turns those requirements into scoped engineering tickets and works through them one at a time.

What agents change

Software factories predate AI agents by decades. The idea is to make software development repeatable through shared processes, reusable components, and automation. Earlier implementations combined templates, code generators, frameworks, and developer guidance to build families of related applications.

AI agents expand the engineering work a factory can take on. In mine, they interpret requirements, scope tickets, write code, and revise their work in response to review. That’s the possibility I built around: a product manager can submit a PRD and have the work proceed through implementation, adversarial review, QA, and verification, with human intervention when the reviews call for it.

The important decisions are in the handoffs. Misreading a requirement can produce a bad ticket before anyone writes a line of code. A weak review can let a bad implementation reach CI. I gave those stages their own agents and checks.

Keeping the requirements intact

The factory ingests and reorganizes the PRD, then an adversarial subagent reviews that interpretation against the original. Once that check is complete, it creates tickets in Jira or Linear through MCP, each with engineering scope and acceptance criteria.

A project coordinator assigns builder and reviewer agents to a ticket. A separate review coordinator runs quality and security reviews. The agents revise the work until it meets the acceptance criteria.

Deciding when to bring an engineer in

The reviewers judge the soundness of the implementation and its tests. That judgment produces an intervention score. When the score exceeds the threshold, the factory contacts a human through Slack or Discord.

Below that threshold, it opens a pull or merge request describing the work, monitors CI, and merges when the build passes. It then pulls the latest default branch and moves to the next ticket.

Keeping a record of the decisions

The factory records the decisions made during the work in an Obsidian vault inside the project repository. The decision history stays with the software it describes.

Delivering it to a client

I trained the client to use the factory and adapt their workflow around it. That was the hardest part of the handoff.

More work

All work & case studies

Next: Agent guidance

Agents that learn from their work