Build a support workflow using synthetic tickets and a local sandbox API. The agent should retrieve help documentation, propose a ticket update, and wait for a person to approve it. Do not connect the exercise to real customer accounts.
Tools and state
Expose three narrow tools: search_docs(query), get_ticket(ticket_id), and propose_update(ticket_id, text). Keep execution of an approved update in application code behind an authenticated approval endpoint. A model claiming that approval occurred is not authorization.
Persist a proposal ID, ticket version, proposed text, status, and approver identity. Model the states as draft → awaiting_approval → approved → applied, with explicit rejected and failed states. If the ticket changes after approval, require a new review of the updated proposal.
Build sequence
- Implement a deterministic search-and-draft baseline before introducing an agent loop.
- Add validated tool schemas, a maximum of five agent steps, timeouts, and clear stop reasons.
- Keep context isolated per user and ticket. Treat retrieved documents and ticket descriptions as untrusted data.
- Add approval in the UI or API. Bind approval to the exact proposal and enforce authorization on the server.
- Make application of an approved action idempotent: retrying the same proposal ID must not duplicate the update.
- Capture a trace with tool names, status, timing, and safe summaries rather than secrets.
Acceptance checks
Use at least 20 synthetic cases covering useful answers, missing evidence, nonexistent tickets, timeouts, invalid tool arguments, malicious ticket text, rejection, and repeated approval requests.
- No ticket mutation occurs without a valid server-side approval.
- A rejected or stale proposal cannot execute.
- Repeated application of the same proposal makes at most one change.
- Tool failures and exhausted step budgets produce a clear stop and recovery option.
- Report completion rate, unsupported proposals, latency, and cost against the deterministic baseline. Keep the simpler workflow if the agent does not improve the task.
Deliverables
Provide the sandbox, setup instructions, state diagram, test cases, representative traces, and a failure analysis. Document which decisions remain human-owned. Explain whether planning, memory, or multiple agents add enough value to justify their complexity.
This is an independent project brief; no completed agent implementation is included.