Most teams building conversational agents underappreciate the importance of the interface.
Caddy is a personal AI assistant that lives in your text messages. It learns what you do for work and what you care about. Stuff like booking a reservation, staying on top of a work week, or planning your next party. Its founders, Rajiv and Connor, built it after leaving Loom, where Rajiv joined as an engineer out of college and went on to lead the AI and monetization teams.
In this post we'll cover the experiment Caddy ran on its own product, what a second company measured when it ran the same substitution, what actually changes when an agent's surface is a message thread, and the failure modes you have to design around.
The first version was a Mac app
Caddy started on the desktop. You held down the function key, talked to it, and told it what to do. Rajiv describes it as "actually very similar to the product that exists today, except it was all voice based and it was an app that you had to install."
The agent harness added a lot of value, but they struggled with adoption. "We noticed we weren't even using the product that much ourselves," Rajiv said. The people with the strongest incentive to use the assistant weren't.
Two things were wrong. The app had to be installed, which added friction from the start. And since it lived on a computer, it was only available at a desk.
Channel experimentation
"We took the same backend. We threw it into email, we threw it into Slack, we threw it into iMessage. iMessage immediately took off."
Everything was held constant except the user interface. Of the three channels, iMessage "took off" in Rajiv's words: "it took off for us. Like we just started using it all the time. Our friends started using it. We were proud to share it with people, which is really one of our biggest goals." Then they productized it on Linq, and in his words, "the pickup was crazy, like the usage just spiked."
Email and Slack were problematic for different reasons.
Email is not a surface people enjoy interacting with. It's full of spam, annoying emails you haven't unsubscribed from, and treated as a mental to-do list.
Slack is great for some use cases such as a work focused personal assistant, but not ideal for a general assistant like Caddy that spans work and personal use cases.
Native messaging like texting is where people have more informal conversations with people they enjoy and want to talk to. It's where you talk to your family, friends, and the co-workers you actually like.
Others have shared and quantified similar results
Flo Crivello, the founder of Lindy, an AI assistant that integrates across several channels, reported that even though Lindy offers multiple channels, "the overwhelming majority of all traffic happens over iMessage."
Other customers like VentNow ran head to head experiments and found that users in native texting send ~20% more messages per session and are about 40% more active on a daily basis versus their app.
What changes when the surface is a thread
There is no session. An app conversation starts when someone opens the app and ends when they close it. A thread has no boundary, so the assistant can be picked up mid-thought throughout the day.
The assistant can start the conversation. An app has to be opened before it can say anything. An agent in a thread can send the first message.
Casual memory is a key component of a great agent. This was the sharpest point Rajiv made, and it is a system design claim rather than a prompt one:
"A friend talking to you is not just the tone of voice of how they talk to you. It's also the memories they remember about you and how they're able to apply that to the suggestions they give you, to how they discuss things with you when you're talking to them."
The interface matters a lot. Caddy abandoned a voice-first Mac app, and voice came back anyway as audio messages inside the thread. Rajiv on the productized version: "People were able to use it on the go. They could send audio messages to it."
Linq is the conversational messaging API for iMessage, RCS, SMS, and voice. 99.95% uptime backed by a contractual SLA, sub-120ms latency, SOC 2 Type II certified, and no per-message pricing.


