Case 03 · Blush

After Hours.

I had just finished a course on AI agents and wanted to build one properly. I picked a beauty salon, bought a phone number, and spent three weeks wiring Twilio, Retell AI and OpenAI into an agent called Blush. It answers the call, works out what the caller wants, finds a slot, books it and confirms by email, and hands over to a person when it cannot.

RoleProduct Builder
TypeSelf-initiated
Timeline~3 weeks
Year2025
LocationTel Aviv, Israel
Blush

A salon’s phone rings after closing and nobody picks it up. It rings again mid morning, and the one person who could answer has both hands in a client’s hair. It rings a third time inside the hour to ask what the last two callers asked. Every one of those is a booking that arrives late or never arrives at all, which is why I picked a salon: the problem is easy to see and hard to argue with. I had just come out of a course on AI agents and wanted to build my first one for real rather than read about it. I called it Blush.

None of it was territory I knew. I started with the phone number, bought on Twilio, because until something can actually ring there is nothing to test. Then Blush itself, built in Retell AI: the rule book it works from, the tone, the voice, what it is allowed to say and what it has to ask before it says anything. OpenAI keys behind it, international calling configured so I could reach it from Tel Aviv. Nothing came pre-built and nothing was handed to me. I set every piece up myself, and I kept going sideways while I did, into n8n for the automation side and VAPI as an alternative to Retell, partly to know what else existed and partly because I wanted to be fluent in this rather than have an opinion about it.

What broke is the thing everyone now knows breaks. Whenever a caller asked something that did not map cleanly onto an answer the agent had, it invented one. Not a refusal, not a pause, but a made-up price or a made-up policy delivered in exactly the same steady voice as the true ones, which is what makes it dangerous. I did not find a clever fix. It was trial and error: narrow the rule book, call the number, listen to what it said, tighten it, call again. Round after round until the invented answers stopped.

What replaced them turned out to be the more useful half of the build. When Blush does not know, it now stops and hands the caller to a person the next morning. Getting that sentence right took longer than it looks. It has to end the call without promising anything the salon has not agreed to, and it has to sound like someone deciding to help rather than a system giving up.

End to end, the path runs on its own. A call lands on the Twilio number, Blush works out what the caller is after, checks what is free, books the slot and sends the confirmation by email, and the caller never waits on a person to do any of it. The number stayed mine rather than going to a salon’s line, so it ran as a prototype.

I went in wanting to be fluent in this rather than opinionated about it, and three weeks of building one taught me things reading about them had not. Chiefly that the interesting work is not making an agent talk, which the platform gives you, but deciding what it is allowed to say.

Why a salon. Three things happen to that phone, and all three of them cost the same thing.

After hoursCalls that come in once the salon has closed reach nobody, and a booking nobody takes is revenue that simply leaves
VolumeA large share of calls ask the same handful of things, over and over, all day
Mid serviceThe person who could pick up usually has both hands busy on a client

Blush covers the whole path without help: inbound call, intent, availability, booking, email confirmation, and a clean handover the moment it hits something the rule book does not cover. It costs about 13 cents a minute to run, which is the one figure a salon would actually weigh, though it ran on a number I bought rather than a salon's line, so nothing here is a result for a business. The part that would carry into a real deployment is the rule book itself. Almost everything that went wrong went wrong there, and almost every fix was narrowing it.

Next caseA Microsoft Partnership→