Bahn runs 25,000 deliveries a year with about 50 people. Driver chat is currently handled mainly by people, and every order has its own agent, but nothing watches the agents or the gaps between them.
Bahn told us about a real miss: a driver took a job, went quiet, and wrote days later that they wouldn't deliver. Nobody caught it, and the customer cancelled.
Shift Watch is a control room where people only see what needs them. At 09:00 on Bahn's 100 orders, 26 need a person and the other 74 stay quiet. Each case comes down to one decision: what the agent found, why it needs you, what happens if nobody decides, who pays, and a 10-second undo.
How it works: - Order agent: AI agent with tools, one run per order. It reads first, asks the driver or the site if it needs to, and proposes one step. It has no way to reach a customer. - Shift Watch checks every proposal before a person sees it, against the mistakes Bahn's own people already corrected: a stale ferry list, a quote treated as a booking, blaming the driver, driving advice. The checks were written from Bahn's 14 recorded proposals, so we also test them on mistakes written in new words: rules alone catch 0 of 10, with Claude reading 10 of 10. - Drivers get an answer at once, in their language and local time. - The day before a pickup, Shift Watch asks the booked driver to confirm. Three hours of silence goes back to the dispatch desk while there's still time to re-offer the job. - When something can't wait, Shift Watch pages the right person in Slack (a mock in the app): the desk room, a DM if they're away, then the backup, then the shift lead. - It runs without an API key: replay mode plays recorded live Claude runs through the real tool loop.
How we worked with AI: everything is in PROCESS.md, covering what we asked Claude for, what we checked, what we threw away, and where we didn't take its first answer. We turned down Claude's own idea of a chat-first home screen, ran two scored judging rounds, and stress-tested everything on a real Postgres, which found real bugs that we fixed.
What's next: connect Shift Watch to Bahn's existing driver app so drivers get its replies and day-before checks there, and use real Slack and Aircall presence for paging.
Repo: https://github.com/itswinther/bahn-control-room


