Two AI copilots. One shared brain. Built for the supply chain teams spending their mornings manually triaging spreadsheets, their afternoons losing chargeback disputes they could have won, and their evenings writing summaries no one reads.
Not AI wrappers. Not dashboards with chat. Purpose-built agents with deterministic cores, verifiable evidence chains, and humans always in the loop before anything ships.
A compliance copilot that turns OTIF chargebacks from reactive firefighting into AI-accelerated revenue recovery. Every dispute draft is grounded in routing guide clauses retrieved from pgvector RAG — with a human reviewing before anything is filed.
An AI that sits between 5 raw operational data streams and the humans who must act. Normalises noise, scores by revenue risk, routes to the right owner, and writes the morning brief that no operations team currently has time to produce.
Eight decisions that determine whether this works or doesn't. Each has been resolved with a concrete architectural choice.
Claude must access ERP/TMS/WMS data without ever seeing API keys, usernames, or passwords. How do you give an AI data access without giving it secrets?
Five source systems with five different schemas. A TMS "delay" event looks nothing like a WMS "short pick" event. How do you build a unified exception schema that doesn't lose signal?
Where does deterministic math end and AI reasoning begin? If Claude does the OTIF calculation and it's wrong, the dispute is invalid. But if code does everything, why have AI at all?
15-minute ingestion cycles mean the same exception can be routed twice. Multiple events from different source systems can reference the same underlying shipment problem.
Walmart and Target routing guides contradict each other. When Claude retrieves "delivery window" clauses, it must get Walmart's rules for Walmart shipments — not Target's.
The deterministic PriorityScorer and the Claude TriageAgent must agree on data format. If the contract is loose, Claude makes up priority levels or ignores revenue context.
If Claude generates a dispute letter and the human reviewer can't verify which routing guide clause was cited, the whole system is a black box. Disputes submitted on AI faith alone get rejected.
Slack/Teams webhooks can fail silently. Retry logic without idempotency sends the same P1 exception alert three times, training ops teams to ignore notifications.
Both prototypes on shared AWS infrastructure. Claude API is the dominant variable cost. Infrastructure margins are exceptional.
Both prototypes exist to eliminate the daily manual work that prevents supply chain professionals from doing strategic thinking. Disputes filed automatically. Exceptions triaged before standup. The brief already in Slack when the team sits down.