Line 7 now uses a real markdown link for DESIGN.md instead of the
inline code formatting, and a new line below invites readers to
https://bookly.codyborders.com/architecture for the literate-program
walkthrough.
Add the public URL at the top, plus a "Try it yourself" section listing
the four mock orders, the happy paths, the sad paths, and the categories
of refusal the guardrails are designed to enforce — so a first-time
visitor can poke at every flow without reading the source.
A FastAPI + vanilla JS chat app fronting an Anthropic Claude agent for
order status, returns, and policy questions.
Architecture:
- agent.py: system prompt, runtime reminder injection, output validation,
agentic tool-use loop with prompt caching on the system prompt block
- tools.py: four tools (lookup_order, check_return_eligibility,
initiate_return, lookup_policy) with per-session SessionGuardState
enforcing protocol ordering on the tool side
- mock_data.py: orders, return policy, and FAQ entries used as the single
source of truth by both the prompt and the tools
- server.py: FastAPI app exposing /api/chat, /health, and the static UI
- static/: vanilla HTML/CSS/JS chat UI, no build step
- tests/: 30 tests covering tool-side enforcement, the privacy boundary,
output validation, and the agent loop with a mocked Anthropic client
- deploy/: systemd unit and nginx site config for production