Designing AI agents is mostly designing what they say no to
Week one of building Doch
7 Oct 2026
I've lived in Berlin since 2016 and I still put off phone calls in German. This is the first week of designing AI agents for that problem, and what surprised me most: most of the work was deciding what my agent should refuse to do.
Emails and live chats are fine. I run them through a translator. Phone calls are where it falls apart: the other person speeds up, I lose the thread, and they wait while I reach for a translator app.
A lot of life here still runs through the phone: the Hausverwaltung, the doctor's practice, the insurer. So I'm building Doch, an AI that makes those calls for you. The name is what Germans say when they mean "on the contrary". "I can't make this call in German." Doch.
How Doch works
You brief it in English. It calls the business in German. If something comes up that you didn't cover, it checks with you. Then it tells you what was agreed.
Before it dials, Doch shows you the plan: who it's calling, why, which times it can agree to, and what it will and won't share. In the first prototype, that meant your name, address, mobile and email, but never your date of birth or tenant number. And it says it's an AI at the start of every call, which the EU AI Act requires.

The plan screen in the first clickable prototype. Everything Doch may agree to or share sits above the call button.
What designing AI agents looks like before any code
In the first week I connected the phone line, tuned the English voice to sound warm, patient and confident, and built a clickable prototype of the screens.
Alongside that, I wrote the eval set: 41 situations Doch has to handle, each one aimed at a rule it might break. The receptionist asks for a date of birth "zur Verifizierung". Or an IBAN "for the refund". A phone menu answers instead of a person. A user asks for a slot at midnight. A user asks Doch to go and find a doctor for them.
Every case spells out what passes and what fails. Some check the agent’s next reply, some check that it makes the right tool call, and some are written as a whole simulated call against a receptionist persona in German, from a friendly one to one who hangs up the moment he hears it's an AI.

The first user flow. The trust moments are marked in coral on the screens they belong to.
The first real call broke three rules
On 2 October I ran the first real phone call as a test, with someone at home playing a user who needed a specialist appointment. Doch broke three of its own rules, each time while trying to be helpful.
The user didn't know which practice to call, so Doch offered to look for an English-speaking specialist nearby. Three times. It had no way of searching for one.
Asked for a slot after 8 pm, it noted the time instead of checking it, even though Doch only books between 8:00 and 18:00.
It asked for a full name, date of birth, phone number and insurance type, out loud.
None of these were bugs in the usual sense. The model did what language models tend to do: keep the conversation moving and say yes. That's the lesson I keep coming back to. Designing an AI agent is mostly designing what it says no to.

From the first test call's transcript. Asked to search, Doch said yes.
Turning mistakes into AI agent guardrails
Two of these rules were already in the prompt, and they didn’t hold once a real person pushed. So I rewrote all three as stricter rules, with the exact words Doch should say, and pointed eval cases at each one.
Doch calls the number you give it. It never searches. You choose the business and look it up yourself, on Doctolib or Maps if you need to. If Doch picked for you and got it wrong, it would ring a stranger with your details. "Who do I even call?" is a real gap, but not one Doch fills.
Weekdays, 8:00 to 18:00, inside the times you allow. If you ask for something outside those hours, Doch doesn’t write it down. It asks you for a time that works instead.
You never say exact details out loud. In the briefing, numbers and addresses get typed and checked in the app. On the call, Doch only shares what you’ve cleared on the plan.

The fix in the interface: Doch tells you to look the business up first, then give it the number.
These guardrails took longer to write than the first screens took to build, and they shaped those screens more than any visual choice. The briefing screen now tells you to look a business up first.
What came next
The next step was teaching Doch to speak German on a real phone line. That’s the next post: going from prototype to a working app.
If you live in Germany and there's a call you keep putting off, you're who I'm building this for.
Akber Ahmed is a senior product designer in Berlin, designing and building AI products. See more of his work at akberahmed.com/projects.