Plans: multi-step delegation
When a job is too big for a single chat, askTheodor turns it into a Plan: a set of tasks wired together with dependencies that the app runs for you after you approve it.
What you’ll do
- Have Theodor draft a Plan from a goal.
- Read the Plan as a dependency graph.
- Approve it and watch the scheduler advance it.
1. Let Theodor draft it
You rarely build a Plan by hand. Hand Theodor a meaty request — “scout these URLs, summarise each, draft a post per network, get my approval, then schedule the approved ones” — and he calls propose_plan: a chain of tasks, each assigned to the right worker, wired in the right order.
2. A Plan is a DAG
Under the hood a Plan is a DAG — a directed acyclic graph: tasks point to the tasks they depend on, with no loops. A “write the press release” task can wait on “research the market”; two independent tasks run in parallel. The shape decides what’s allowed to start when.
3. Approve, then it runs itself
A Plan never just starts. It begins in pending_approval and waits for your green light — that’s the safety contract. Once approved, a background scheduler does the work:
- It dispatches each task whose dependencies are all satisfied.
- If a task fails, it retries with exponential backoff up to a budget, then marks it failed.
- When every task is done, it marks the Plan done and writes a final report, with a 📂 Deliverables list linking the documents into the Library.
Recap
A Plan is a DAG of tasks the scheduler advances on its own after you approve it once — dispatching ready steps, retrying failures, and finishing with a report and deliverables. Next: zoom into the single task and the review step that gates “done.”
➡️ Next: Tasks, review & done