When to use which: paradigms and architectures
The track teaches several ways to work with agents (vibe coding, intent briefs, specs, test-driven loops) and several ways to build them (a single agent, routers, plan-and-execute, supervisors, handoffs, human gates). This module puts the choices in one place. Two questions decide almost everything: how much rigor does this job need, and what shape is the work? Each recommendation below points to a case study where a real team made that choice, or paid for not making it.
- Sam There are so many ways to work with agents now. How do I choose?
- Priya Two questions decide almost everything. How much rigor does this job need? And what shape is the work? They're separate decisions, and each answer here points to a real case study.
- Priya Think of planning a journey. How carefully you plan depends on the stakes: a walk to the shops needs no plan, a connecting flight needs a checked itinerary. How you travel depends on the route: one car, a coach dropping groups at different stops, a relay for a long expedition. Mix them up and you get a detailed itinerary for a walk, or a coach for one person.
- Sam And context engineering?
- Priya That one applies to every job, whatever you choose.
- Sam So which rigor level when?
- Priya Vibe coding for short-lived, low-stakes work, never near production data, which is the Replit lesson. An intent brief when it will ship but the path is open. A spec for features across a codebase with conventions. Tests written first when the stakes are high and correctness can be checked, like Google's migrations. And human review with evals when it can't be checked automatically, like DoorDash's guardrails. If customers rely on the answers, ground them with citations: Air Canada learned it owns what its chatbot says.
- Sam And which architecture?
- Priya One coupled piece of work: a single agent, which is Cognition's argument. A few clear request types: a router. Many independent parts and a valuable answer: a supervisor, like Anthropic's research system. Steps you can list and a need to be thorough: plan-and-execute, like LinkedIn's Hiring Assistant. Anything irreversible or accountable: human gates in the tools. And judge it all by outcomes, not launch numbers, the Klarna lesson.
- Sam Does every job need an agent architecture?
- Priya No. Google's code migrations run as a fixed pipeline: tools find, the model edits, tests judge, people review. The authors found planning often wasn't needed. A workflow you can write down beats an agent that has to work it out.
- Sam What does it look like over a product's life?
- Priya A support helper starts vibe-coded on fake tickets, becomes an intent brief and a plan, then gets a spec, evals and a router before customers see it, human gates for refunds, a supervisor for a research feature, and outcome metrics throughout.
- Priya The chooser asks five questions: will it ship, what does a mistake cost, can correct be checked, what shape is the work, and is anything irreversible. It gives you both decisions and the case behind each.
- Priya Your turn. A payments change in an existing codebase, fully testable. Which combination?
- Priya A spec plus tests written first, and a single agent. High stakes and checkable; one coupled piece.
- Priya Rigor follows risk; shape follows the work.
- Priya Vibe rigor on production stakes. A supervisor on coupled work. A full spec for a one-line change. Gates on everything. Tests the agent can edit. And choosing by framework instead of by shape.
- Priya Place five of your team's AI jobs on the map, find one mismatch, cite a case for each choice, and write a one-page guide for your team.
1. Two separate decisions
| Decision | Decided by | Options | Taught in |
|---|---|---|---|
| Rigor (paradigm) | How long the code lives, what a mistake costs, whether "correct" can be checked | Vibe, intent brief, spec-driven, test-driven | 08c, 08a |
| Shape (architecture) | Whether the work splits into categories, independent parts or known steps, and what's irreversible | Single agent, router, plan-and-execute, supervisor, handoffs, human gates | 07a, 16a |
| Context (always) | Every job | Instructions up front, just-in-time retrieval, compaction, notes, subagents | 05a |
2. The decision guide
Rigor: which paradigm?
| If the job is… | Use | Because (case) |
|---|---|---|
| Short-lived, low stakes, yours alone | Vibe coding | Speed is the point; nothing depends on it. Never near production data: C05 Replit |
| Going to ship, path still open | Intent brief, then the agent's plan | Cheap; the plan review catches misunderstandings (08c) |
| A feature across many files in a codebase with conventions | Spec-driven | Reviewed before code exists (08a) |
| High stakes, correctness checkable | Spec plus tests written first | Builds and tests judge every edit: C10 Google |
| High stakes, hard to check automatically | Spec plus human review and evals | Judges and guardrails catch what tests can't: C09 DoorDash |
| Answers customers rely on | Grounded answers with citations, and refusals | The company owns what its bot says: C03 Air Canada |
Shape: which architecture?
| If the work… | Use | Because (case) |
|---|---|---|
| Is one coupled piece (a feature, a document) | Single agent, with compaction for long runs | Split agents make conflicting decisions: C12 Cognition |
| Falls into a few clear request types | Router (or handoffs if users talk to each specialist) | Each specialist gets only its prompt and tools (07a) |
| Has many independent parts and a valuable answer | Supervisor with parallel subagents | 90.2% better on broad research, at about 15× a chat's tokens: C11 Anthropic |
| Has steps you can list, and must be thorough | Plan-and-execute | "ReAct alone is not sufficient for an enterprise-grade agent": C13 LinkedIn |
| Includes irreversible or accountable actions | Human gates in the tools, plus environments the agent can't reach | C05 Replit; recruiters approve decisions they own in C13 |
| Is judged by business outcomes | Measure outcomes, not launch numbers | C08 Klarna |
3. Common jobs on the map
Rigor across the top, shape down the side. Each cell names a typical job and its case study.
Some jobs need no agent architecture at all. Google's large code migrations run as a fixed pipeline: tools find the code, the model edits, builds and tests judge, people review. The authors found LLM planning "often not needed" (C10). A workflow you can write down beats an agent that has to work it out.
One product, from prototype to production
4. Try it yourself
5. The guide in code
The two decisions as two small functions, run on five jobs. Each prints its rigor level, its architecture, and the case studies behind them. The program was run in all three languages; each prints the output below it.
# Each job described by the same questions.
JOBS = [
("one-off data clean-up script", dict(ships=False, high_risk=False, checkable=True, categories=False,
independent=False, steps_known=False, irreversible=False)),
("customer refund assistant", dict(ships=True, high_risk=True, checkable=True, categories=True,
independent=False, steps_known=True, irreversible=True)),
("weekly market research report", dict(ships=True, high_risk=False, checkable=False, categories=False,
independent=True, steps_known=False, irreversible=False)),
("checkout feature in an existing app", dict(ships=True, high_risk=True, checkable=True, categories=False,
independent=False, steps_known=False, irreversible=False)),
("hiring workflow agent", dict(ships=True, high_risk=True, checkable=False, categories=False,
independent=False, steps_known=True, irreversible=True)),
]
def paradigm(j):
"""How much rigor: follows how long the code lives and what a mistake costs (Module 08c)."""
if not j["ships"] and not j["high_risk"]:
return "vibe", []
if j["high_risk"] and j["checkable"]:
return "spec + test-driven", ["C10"]
if j["high_risk"]:
return "spec + human review", []
return "intent brief", []
def architecture(j):
"""What shape: follows the structure of the work (Module 07a)."""
if j["categories"]:
shape, cases = "router", []
elif j["independent"]:
shape, cases = "supervisor", ["C11"]
elif j["steps_known"]:
shape, cases = "plan-and-execute", ["C13"]
else:
shape, cases = "single agent", ["C12"]
if j["irreversible"]:
shape, cases = shape + " + human gates", cases + ["C05"]
return shape, cases
for name, job in JOBS:
(p, pc), (a, ac) = paradigm(job), architecture(job)
cases = sorted(set(pc + ac))
print(f"{name}:")
print(f" {p} / {a}" + (f" (see {', '.join(cases)})" if cases else ""))
type Job = { ships: boolean; highRisk: boolean; checkable: boolean; categories: boolean; independent: boolean; stepsKnown: boolean; irreversible: boolean };
// Each job described by the same questions.
const JOBS: [string, Job][] = [
["one-off data clean-up script", { ships: false, highRisk: false, checkable: true, categories: false, independent: false, stepsKnown: false, irreversible: false }],
["customer refund assistant", { ships: true, highRisk: true, checkable: true, categories: true, independent: false, stepsKnown: true, irreversible: true }],
["weekly market research report", { ships: true, highRisk: false, checkable: false, categories: false, independent: true, stepsKnown: false, irreversible: false }],
["checkout feature in an existing app", { ships: true, highRisk: true, checkable: true, categories: false, independent: false, stepsKnown: false, irreversible: false }],
["hiring workflow agent", { ships: true, highRisk: true, checkable: false, categories: false, independent: false, stepsKnown: true, irreversible: true }],
];
// How much rigor: follows how long the code lives and what a mistake costs (Module 08c).
function paradigm(j: Job): [string, string[]] {
if (!j.ships && !j.highRisk) return ["vibe", []];
if (j.highRisk && j.checkable) return ["spec + test-driven", ["C10"]];
if (j.highRisk) return ["spec + human review", []];
return ["intent brief", []];
}
// What shape: follows the structure of the work (Module 07a).
function architecture(j: Job): [string, string[]] {
let shape: string, cases: string[];
if (j.categories) [shape, cases] = ["router", []];
else if (j.independent) [shape, cases] = ["supervisor", ["C11"]];
else if (j.stepsKnown) [shape, cases] = ["plan-and-execute", ["C13"]];
else [shape, cases] = ["single agent", ["C12"]];
if (j.irreversible) [shape, cases] = [shape + " + human gates", [...cases, "C05"]];
return [shape, cases];
}
for (const [name, job] of JOBS) {
const [p, pc] = paradigm(job), [a, ac] = architecture(job);
const cases = [...new Set([...pc, ...ac])].sort();
console.log(`${name}:`);
console.log(` ${p} / ${a}` + (cases.length ? ` (see ${cases.join(", ")})` : ""));
}import java.util.*;
public class Main {
record Job(String name, boolean ships, boolean highRisk, boolean checkable, boolean categories, boolean independent, boolean stepsKnown, boolean irreversible) {}
record Pick(String choice, List<String> cases) {}
// Each job described by the same questions.
static final List<Job> JOBS = List.of(
new Job("one-off data clean-up script", false, false, true, false, false, false, false),
new Job("customer refund assistant", true, true, true, true, false, true, true),
new Job("weekly market research report", true, false, false, false, true, false, false),
new Job("checkout feature in an existing app", true, true, true, false, false, false, false),
new Job("hiring workflow agent", true, true, false, false, false, true, true));
// How much rigor: follows how long the code lives and what a mistake costs (Module 08c).
static Pick paradigm(Job j) {
if (!j.ships() && !j.highRisk()) return new Pick("vibe", List.of());
if (j.highRisk() && j.checkable()) return new Pick("spec + test-driven", List.of("C10"));
if (j.highRisk()) return new Pick("spec + human review", List.of());
return new Pick("intent brief", List.of());
}
// What shape: follows the structure of the work (Module 07a).
static Pick architecture(Job j) {
Pick p;
if (j.categories()) p = new Pick("router", List.of());
else if (j.independent()) p = new Pick("supervisor", List.of("C11"));
else if (j.stepsKnown()) p = new Pick("plan-and-execute", List.of("C13"));
else p = new Pick("single agent", List.of("C12"));
if (j.irreversible()) {
List<String> cases = new ArrayList<>(p.cases());
cases.add("C05");
p = new Pick(p.choice() + " + human gates", cases);
}
return p;
}
public static void main(String[] args) {
for (Job job : JOBS) {
Pick p = paradigm(job), a = architecture(job);
TreeSet<String> cases = new TreeSet<>(p.cases());
cases.addAll(a.cases());
System.out.println(job.name() + ":");
System.out.println(" " + p.choice() + " / " + a.choice() + (cases.isEmpty() ? "" : " (see " + String.join(", ", cases) + ")"));
}
}
}one-off data clean-up script:
vibe / single agent (see C12)
customer refund assistant:
spec + test-driven / router + human gates (see C05, C10)
weekly market research report:
intent brief / supervisor (see C11)
checkout feature in an existing app:
spec + test-driven / single agent (see C10, C12)
hiring workflow agent:
spec + human review / plan-and-execute + human gates (see C05, C13)
6. Remember it
How this hook works: what “Rigor follows risk; shape follows the work” means
The story → the concept
| Journey | Agent work |
|---|---|
| How carefully you plan | Rigor: vibe, intent, spec, test-driven |
| Walk to the shops | Vibe coding a one-off |
| A checked itinerary for a connecting flight | Spec plus tests for a payments change |
| One car | A single agent |
| A coach dropping groups at stops | A router |
| A relay for a long expedition | Plan-and-execute, or a supervisor with parallel teams |
The trap it saves you from
Picking the impressive option on both axes, a full spec and five agents, for work that needed a sentence and one agent; or the reverse, vibe coding the payments service.
7. Mismatches to avoid
8. Hands-on lab (roadmap week 22)
- Classify your work: list five AI-assisted jobs from your team and place each on the map.
- Find a mismatch: one job where today's rigor or shape doesn't fit. What would you change?
- Cite a case: for each choice, name the case study that supports it, or admit it's a hunch.
- Write the guide: a one-page version of this module for your team's AGENTS.md or wiki.
9. Self-check quiz
What should decide the rigor level?
A payments change in an existing codebase, fully testable. Which combination?
A weekly research report covering twelve independent markets. Which architecture?
An agent that runs a multi-stage approval workflow, with decisions people must answer for. Which architecture?
10. Go deeper
| Resource | Time | Why |
|---|---|---|
| Module 07a: Agent architectures | 45 min | Each architecture in depth, with frameworks. |
| Module 08c: Rigor levels | 40 min | Each paradigm in depth, with a test-first loop. |
| Module 05a: Context engineering for agents | 40 min | What every job needs, whatever its shape. |
| Cases C11, C12, C13 | 1 h | Three teams, three architectures, and why. |