Challenges
Five exercises, in order of effort. The first four need no code at all. They are how the material moves from "I understood that" to "I can do that".
- Pick the next unfinished one. Each takes one sitting and produces something you keep — a diagram, a spec, a test set, or a working agent.
- Progress is saved in this browser only. Nothing is uploaded anywhere.
01Deconstruct a product
Time: 15 minutes · Needs: a browser · You produce: a one-page teardown
Pick an AI product you've seen advertised — a coding assistant, a support bot, a "AI employee". Answer, in writing:
- What are its tools? List every action it can take in the world, not what it says it can do.
- What is its state? Does it remember across sessions? Where would that be stored?
- What autonomy level is it (L0–L5)? What does the human do at that level?
- Which single action would be most damaging if it went wrong, and what gate sits in front of it?
- What does its marketing call the model, and does that matter to the product's value?
02Trace an agent by hand
Time: 20 minutes · Needs: paper · You produce: a numbered trace with one injected failure
Choose a task you know well: booking a meeting, filing an expense, ordering stock. Write the trace step by step — goal, context, decision, tool, result, state update — as if you were the harness.
Then inject a failure at step four: the tool returns "sold out", or the API times out, or the file is missing. Continue the trace. What does the agent do next? What would make it loop? What makes it stop and ask you?
03Write a tool and its permission policy
Time: 20 minutes · Needs: a text editor · You produce: one JSON tool definition + a policy line
Pick something small from your own work — lookup_order, read_invoice, check_stock. Write the definition with name, a when-to-use description, a schema with types and an enum, and a description of what a failure returns.
Then write the policy: risk tier, whether it needs approval, what credential it uses, and what the worst outcome of a wrong call is. If you can't finish that sentence, split the tool.
04Build a ten-case evaluation set
Time: 25 minutes · Needs: a spreadsheet · You produce: ten rows you can run repeatedly
For the task you traced in challenge 02, write ten cases: six typical, two edge, one messy, one adversarial. Each row gets the input, the setup, and the end state that must be true — a field that changed, a row that exists, a draft that was created.
| # | Input | Setup | End state that must be true | Type |
|---|---|---|---|---|
| 1 | … | … | … | typical |
| … | ||||
| 10 | … | … | … | adversarial |
05Capstone: the smallest working agent
Time: one weekend · Needs: a model API key · You produce: a program you'd let a friend run
Build the inbox-triage or document-Q&A agent from module 10. Constraints, and they are the point:
- One model provider, two tools maximum, eight turns maximum.
- Read-only plus drafts. Nothing is sent, deleted, or paid for.
- A hard token budget per task, enforced in code.
- Every run writes a trace file you can read afterwards.
- A ten-case eval set, run before and after your last change.
- Someone who isn't you uses it for ten minutes while you watch and say nothing.
How to judge your own work
There is no certificate, and that's deliberate. Use this rubric honestly — it maps to what actually predicts a working system.
| Signal | Beginner | Solid | Ready to ship something |
|---|---|---|---|
| Goal definition | A sentence of intent | A checklist of end states | A checklist plus a verification step that runs automatically |
| Tools | One broad tool | Two or three narrow tools with schemas | Typed failures, timeouts, least-privilege credentials |
| Safety | Prompt says "be careful" | Permission gate on writes | Risk tiers, approval UI, audit log, sandbox for generated code |
| Evaluation | You tried a few inputs | Ten cases with end-state checks | Twenty cases in CI, plus cost and latency per completed task |
| Cost | Unknown | Estimated per task | Budget caps, routing, caching, dashboard |
| Debuggability | Print statements | A trace file per run | Structured traces, stored contexts, replayable failures |
Shrink the task. Almost every stuck agent is a goal that was too vague, a tool that was too broad, or a test that checked wording instead of state. Cut the task in half, make the tool read-only, and check the end state. Then grow it back.