Part 1
Draw and score WorkBot
You cannot judge an architecture you have not drawn, so the day starts with a picture of WorkBot as it is and a table of what each part costs. The table then tells you which 2 migrations to make.
Study first
- Start with the constraint behind the principles. A small team whose agents write most of the code is limited by how much structure it can hold in its head and change quickly. Each layer, service and schema is one more place where you have to make a change.
- Learn the unlearning list, the 5 architectures to drop, and what each one costs. Microservices cost deploys and network boundaries, and a document database costs a second query language and has no joins. Retrieval-augmented generation (RAG) by default builds a retrieval pipeline where a tool would do. A layered service architecture adds files whose only job is to call another file. Multi-graph agents, which hand work to other agents, add prompts, loops and runtimes that no eval asked for, where an eval is a scored test of WorkBot's output (Day 19).
- Learn the 4 questions to ask of any architecture. How many places does adding a field touch? What happens when a provider is down? Can one engineer run the whole thing locally? Can an agent regenerate this part from configuration?
- Then look at the redesign the principles ask for, which WorkBot already mostly follows. It has one deployable and flat modules in
src/lib, and it uses tools over retrieval (Day 13). It uses JSONB (the Postgres binary JSON column type) where the model decides a record's shape, such as a document's extracted record, a research finding or a recording's scenes. The audit's job is to count the places where WorkBot does not follow the redesign.
Build
- Draw WorkBot as it is, with every deployable, engine, store, queue, layer and external dependency. In the reference run, the drawing is the Mermaid diagram at the top of
docs/architecture.md. Day 26 adds 3 things to it: the configuration, the site, and the Model Context Protocol (MCP) servers that the coding CLIs use (Day 5). The reference run then renders the diagram with Mermaid for the record. - Score WorkBot in a table with a row per principle, where each row says what WorkBot does and what that costs today in files, deploys and failure modes. Count the files you change for a new customer, for a new request field, and for the public site's configuration. Count each one, and estimate nothing.
- Pick the 2 worst by cost, not by taste.
Done when
- The table names a cost for every row, "nothing" included.
- The 2 migrations you picked are the 2 largest costs in the table. In the reference run, they were the files touched for a new customer, and the dollars and seconds per question that the analyst's delegation to its specialists cost.

Technical notes
- In the reference run, 10 source files named the company or its teams. Adding a field to a request touches 10 files: the schema, the model, the queries, intake, the API types, the action, the form, the page, the list and a test. The public site is 140 lines of page with 12 configuration files around it.
- In the reference run, 2 product designs run more than one agent with no eval of the delegation. They are the analyst with 2 specialists (Day 15) and the explainer's 3 subagents (Day 12). The Day 23 build runs one agent on 3 frameworks, so it is a comparison of frameworks, not a delegation.
- The curriculum asks you to measure before and after. In the reference run, the deploy units stayed at 2, because the site stayed, with its cost named. No field was added that day, so the reference run did not time adding one end to end, and the count of 10 files stands in for that time.
- Neither migration touched the request's columns. The migration that would have, JSONB plus configuration for per-customer fields, was not among the largest costs.
- The site stays a second deployable, because a public page with no database is a different thing from the app. Folding it into the app would take 2 root layouts and a domain decision, to save 12 files.
- The recordings stay as bytes in Postgres rather than in object storage, which costs at volume but not today.
- Adding a request field touches 10 files, which is the price of a typed column. A per-customer field would be JSONB plus configuration, and no customer has asked for one yet.
