Build a support desk for an online shop, from an empty folder, where you can see every decision the system makes. The hard part isn't the chatbot. It's the guards around it, and knowing when they're wrong.
Imagine you run an online shop. Customers message your support desk: "Where's my keyboard?", "Cancel my last order", "Please leave packages at the back door." You're going to build the AI that answers them.
It answers from the shop's real database, so it can't make up an order status. It remembers what each customer told it, so Diana doesn't have to repeat her delivery instructions next week. And it's protected: every message passes a few guards before the AI sees it, and another on the way out, so a customer can't trick it into leaking someone else's orders or dropping the database.
You'll build it twice over the same core: first a terminal program, then a web page. Both show every step as it happens, and every message leaves a trace you can read afterwards.
The model is rarely what goes wrong in a support agent. The system around it is. When this course's own reference version of this project was tested:
- Alice asked about someone else's order number and got Bob's order, his address and what he paid. The instructions said "only this user". The database query didn't.
- The safety check refused a real customer ("leave my packages at the back door") and let a poem request through.
- A layer meant to hide personal data was quietly lowercasing every answer, and no test noticed.
So you're graded on blocking attacks and on not blocking real customers. A guard nobody has measured on both sides is a guess.
- How agents use tools through MCP, and why "who may see what" belongs in the tool, not the prompt.
- How agents call other agents through A2A, with a security service that runs on its own.
- How to make memory something the system does reliably, not something the model may forget to do.
- How to trace a multi-agent system, so "what happened?" always has an answer.
- How to tell whether a guard works, using numbers you commit to before you start.
You get: these Markdown files, a database seed and seven sets of test messages. That's
all. There's no starter code, no UI to fill in and no 501 skeleton. If you did LUMINA,
this one also has no Vercel deploy; it all runs on your machine.
You build: everything. The database, the tools, the support agent, three guards, the personal-data masker, memory, tracing, the command-line app, the web app, and the program that tests it all.
Reading check: so we know who reads the README, make the first line of your
BUILD_LOG.md exactly this sentence: Alice never sees Bob's laptop.
You'll probably build this with a coding agent. That's allowed; the risk is a working system you don't understand. So the build has ten stages, each working the same way:
- You decide something the spec leaves open, before asking the agent for code.
- You build that stage with your agent.
- You prove it by running a check and reading the result yourself.
- You log it: what you expected, what happened, and the evidence.
Your coding agent has been told (in AGENTS.md) to ask you the decisions, stop at every
check, and never write your log or design notes for you.
| # | Read | Why | Time |
|---|---|---|---|
| 1 | This README | What you're building and why | 5 min |
| 2 | [PRD.md](PRD.md) |
The product and the lesson, in full | 15 min |
| 3 | [TECHNICAL.md](TECHNICAL.md) |
The build, stage by stage. Keep it open. | 20 min, then as you go |
| 4 | [EVALS.md](EVALS.md) |
The database seed and the test messages | 10 min |
| 5 | [THRESHOLDS.md](THRESHOLDS.md) |
Every number you'll be measured against, and why | 5 min |
| 6 | [SUBMISSION.md](SUBMISSION.md) |
What to hand in | 3 min |
For your coding agent: [SPEC.md](SPEC.md), [AGENTS.md](AGENTS.md) and
[CLAUDE.md](CLAUDE.md). Skim them too, so you know what your agent has been told.
- Make an empty repo, and copy this folder's Markdown into it.
- Copy
DESIGN.template.mdtoDESIGN.md, andBUILD_LOG.template.mdtoBUILD_LOG.md. - Answer the five design questions in
DESIGN.md. Rough answers are fine; you'll revise them. - Open
TECHNICAL.mdat stage 1, and tell your agent: "We're on stage 1. Read AGENTS.md first."
TECHNICAL.md ends with Troubleshooting: the problems that cost the reference build the most
time. Check there first, then ask in the course channel with your trace id.