side project · multi-agent claude poc
Sales Quoting Agent
Orchestrator + 6 specialists. Three runtimes. Same Claude API.
Proof-of-concept built for a freight forwarder’s brief. An
inbound RFQ goes in — an orchestrator routes it through six
specialist subagents that parse it, look up rate cards, apply
surcharges, check client terms, check margin floors and draft the
quote. The same orchestrator runs three ways: as Claude Code
subagents on a laptop, behind a Cloudflare Worker for the
in-browser demo, and on Anthropic’s Managed Agents cloud
runtime for stateful server-side sessions.
What it is
- An orchestrator subagent that decides which specialists to call and in what order, based on the RFQ shape.
- Six domain specialists: RFQ Parser, Rate Lookup, Surcharge Engine, Client Terms, Margin Checker, Quote Drafter.
- A local MCP server exposing six tools backed by a synthetic rate-card / client / margin-thresholds corpus.
- A Cloudflare Worker bridging the browser to the Anthropic API — runs the same agent loop server-side with rate limits and cost guards.
- An Anthropic Managed Agents deployment — agent + tools registered as cloud resources, each quote spins up a stateful server-side session with an inspectable event log.
- Built-in rate limiting, cost ceilings and 15 passing tests — production hygiene, not a demo-day prototype.
Three runtimes, one orchestrator
- Claude Code subagents
- laptop · iterate on the agents
- Cloudflare Worker + web demo
- your edge · the in-room demo
- Anthropic Managed Agents
- anthropic cloud · stateful sessions, durable event log
All three drive the same orchestrator logic and the same six tools.
That matters because the laptop iteration loop and the production
runtime are not different codebases — same prompts, same
tools, same outputs, just different agent-loop hosts.
Three demo scenarios
A — happy path
air freight, premium client, all six specialists fire
scenario A
- RFQ Parser extracts mode, lane, weight, client.
- Rate Lookup pulls the right card; Surcharge Engine applies fuel + security.
- Client Terms attaches a VIP rebate; Margin Checker clears the 18% AIR floor.
- Quote Drafter returns a clean draft — no human-in-the-loop required.
B — margin floor breach
sea LCL, historical-margin target trips the floor
scenario B
- Quote-history lookup shows ~9% on this lane; orchestrator targets that.
- Margin Checker trips the 12% SEA_LCL floor — flags a violation.
- Quote Drafter surfaces a manager-approval banner with a plain-English reason. No silent override.
C — missing required info
RFQ missing chargeable weight; agent pauses and asks
scenario C
- RFQ Parser returns
missing_required: ['chargeable_kg'].
- Orchestrator pauses; UI raises a clarifying modal.
- User answers in-thread; run resumes from where it stopped, no restart.
Architecture
.claude/agents/sales-quoting/ 7 subagents — orchestrator + 6 specialists
poc-data/ synthetic corpus (rates, clients, margins)
poc-tools/mcp-server/ local MCP server, 6 tools, 15 passing tests
worker/ Cloudflare Worker — Anthropic API bridge
src/agent-loop.js, src/rate-limit.js
site/ web demo (HTML/CSS/JS, no framework)
poc-tools/managed-agents/ Anthropic Managed Agents cloud deployment
docs/superpowers/ spec + implementation plan
Synthetic data only — no client data leaves any system. The
six tools are the contract: same names, same shapes across all
three runtimes. Iteration happens at the prompt and tool layer;
the runtime is interchangeable.
Links
- Source
- github — private, walkthrough on request