Business Analyst
HaikuReads a transcript, email or screenshot and lists every ask, decision, bug, commitment and open question, with exact words.
Never touches the network, guesses a speaker’s name or merges look-alike items.
A prototype software agency where every role but mine is held by an AI agent.
Pressing a button on a card launches a graph: an orchestrator leads the job and hands each subtask to a role agent with its own tools and guardrails. Permissions, not instructions, set what each agent can touch. I approve every price, every merge to main, every production deploy and every email; the agents do everything in between.
orchestrators, each leading one kind of job
role agents: five on Haiku, four on Sonnet
blind validators that must both pass every release

It’s built around a real delivery problem: two legacy systems, a desktop CRM and a pair of web apps, sharing one production database with no staging copy. So the design question was never “what can an agent do?” but “what is each agent allowed to touch?”
A card moves through eleven stages. Each one is a separate job with a fresh context, and each has a gate before the next.
Role agents exist where a subtask needs its own tools or its own guardrails. Each is defined by one file that says what it must never do, and hooks enforce most of it. Each repository keeps its own copies, so the CRM’s engineer knows its legacy file encoding and the web engineer knows the deploy scripts.
Reads a transcript, email or screenshot and lists every ask, decision, bug, commitment and open question, with exact words.
Never touches the network, guesses a speaker’s name or merges look-alike items.
Tidies a job’s media: pulls video frames, drops duplicates, names files by card and takes an inventory.
Never works outside its job folder or decides what an image means.
Investigates without changing anything that ships: reads code, queries production through a read-only account, benchmarks on a local copy.
Never edits source, builds or writes to production.
Implements a plan on its assigned branch, builds, runs the tests that cover the change and commits.
Never runs the full suite, merges or publishes.
Reviews the finished diff blind, against the client’s words and the plan, and tries one edge case the tests miss.
Never reads the implementer’s reasoning or fixes what it finds.
Builds, confirms the binary contains the change, runs the UI suite in the foreground and reports the numbers.
Never edits anything or judges a failure.
The only agent that changes production, through one tool that rehearses first and records everything.
Can’t drop the main database: its account has no DROP privilege.
Answers read-only questions about the Windows build VM: stuck tasks, disk space, build directories.
Never ends a task, kills a process or deletes anything.
Runs a long test suite and polls it cheaply until it finishes.
Never uses a streaming monitor, starts a second suite or builds.
Messages land in a shared inbox. Intake agents file each one by type, link it to a request, name an owning role and hand it off. Anything they can’t place stays marked unfiled until someone looks at it.

Each request shows the client’s own words, why it was filed where it was, and the sources behind that decision. The reviewer marks it correct, wrong or unsure from the keyboard and moves on.

Tasks move from new to scheduled, in progress, in review and released. Each card carries its type, whether it’s estimated, and the release it shipped in.

Work lists each request with its status, price, tasks, hours and messages. Group it by release to see what went out in each version, save the view, or export it.

Every agent has a charter, a settings file, a run history with cost, and a mailbox. Any agent can be paused. Power off refuses every agent call and kills any run in flight, and nothing turns itself back on.

Each invoice line names the release and change it pays for, with hours and amount. The list shows the effective hourly rate per invoice and flags the ones that fall below target.







Work starts as a card on a release board. Each button on the card (Triage, Estimate, Plan, Implement, Publish) queues a job, and each job is its own graph with a fresh context. This is the graph behind Implement.
Nothing reaches users until two validators have passed it. They use different methods and never see each other’s work, so one can’t talk the other into a pass.
Graphs branch. When a bug comes in, an origin check decides whether our own change introduced it. That answer routes the card down one of two paths.
The Database Administrator connects with an account that lacks DROP, so the database refuses a mistaken drop whatever the model decides. Investigators get a read-only account. A hook stops every agent reading credentials: the tools use them, the models never see them.
The QA Analyst ignores the implementer’s report and commit reasoning, even when a brief includes them. Its only anchor is what the client asked for.
Haiku extracts, tidies, runs suites and polls. Sonnet plans, implements and reviews. Opus is allowed only when an orchestrator writes a one-line justification, such as a data-loss risk.
Engineers report a second bug rather than fixing it. Suite runners never edit. The relay never analyses, so all real work lands in the right role and in the ledger.
Each session is a ledger row with its role, model, tokens and cost. A card’s timeline gets one entry per agent run, so what people said and what agents did read side by side.
Watching a suite with an event-streaming monitor woke the agent on every progress line and made it re-read its transcript, about 60k tokens per event. Three suites watched that way used around 13 million tokens. A hook now blocks the pattern, and a Haiku watcher polls instead.