← All work

Building Kalcend’s agent builder

Making AI agents something a small business can set up and trust

Kalcend started as a WhatsApp support tool for small businesses. As its only designer, I worked with the founder to rebuild it around AI agents: a business describes the job in plain language, tests the agent, and runs it on the channels its customers already use.

Role
AI product designer
Team
Solo designer, with the founder as engineer
Timeline
7 months
Scope
Builder, agents, channels, billing, status

The short version

Problem
Customers needed AI that worked on their own channels, not just WhatsApp. Most had nobody technical.
Decision
Make the agent the product. Build it once by describing it, then attach any channel.
What I designed
The chat builder, templates, the build card, visible cost, channels and clear status.
Outcome
Time to a tested agent fell from 41 to 16 minutes. 2 in 5 agents ran beyond WhatsApp.
$5.00Activity
Good evening, Vishnu!
What would you like to build?
Use one of the templates to get started, or describe what you need.
QUICK-START TEMPLATES
ERP for your business
ERPNext on its own server: accounting, inventory, sales and more.
ERPNextOwn server~45 min
Payroll and HR
Frappe HR with ERPNext on its own server: employees, leave and payroll.
Frappe HROwn server~1 hour
CRM for your sales team
Twenty on its own server: contacts, companies and deals.
TwentyOwn server~20 min
Data analyst in Slack
Answers data questions in Slack from your database.
DatabaseSlack~20 min
Content marketer
Drafts posts in your brand voice with images, shares them for review.
Brand voice skillSlack~20 min
+ 38 more
Message kalcend…
Attach file#◌
The home screen as shipped. One question, five starting points, and every channel an agent can work on.

Context

Where Kalcend was when I joined

When I joined, Kalcend was a WhatsApp tool. Small businesses used it to run support chats, send campaigns and manage contacts on WhatsApp, with an AI assistant that answered common questions. It had paying customers and a clear niche.

It also had a pattern in its feedback notes. Customers kept asking for the same thing in different words. A clinic wanted its assistant to answer calls. A brand wanted it on Instagram. An agency wanted it to handle email. WhatsApp was where Kalcend started, but it wasn’t where every business’s customers were.

The channel changed from business to business. The job didn’t.

My role

What I did

I was the only designer, working directly with the founder, who was also the engineer. A second cofounder ran marketing and distribution. My job was to look at what customers were asking for, decide with the founder what to build, and design it.

Over seven months that came to most of the product: the home and builder, agents and testing, channels, the app around them and billing. This case study covers the work that changed the product’s shape.

Timeline

Seven months, two launches

The product moved fast. These are the stretches of work this case study follows, and the public launches they fed into.

Month 1Month 2Month 3Month 4Month 5Month 6Month 7
1Product model
2Builder
3Build progress
4Cost
5Channels
6Agent status
Month 2Agents from a prompt
Month 4“One sentence” relaunch

Research

What customers were asking for

Before redesigning anything, I checked whether the feedback was a real pattern or a few loud customers. It was a pattern. I worked through three sources: the founder’s notes from sales calls and demos, feedback and support chats from WhatsApp customers, and usage data on which features businesses used each week.

Three things came out of it.

  1. Businesses thought in jobs, not features

    They described jobs: answer customer questions, follow up on leads, report on sales. None of the requests were about the inbox itself.

  2. The channel depended on who they served

    About a third of the feature requests I reviewed named a channel other than WhatsApp. Often the same business needed two: WhatsApp for customers, email or Slack for the team.

  3. Most had nobody technical

    Setting up the WhatsApp assistant usually meant a call with the founder and two to three days of back and forth. That doesn’t scale with one engineer.

Chapter 01

Rebuilding the product around the agent

I proposed building the product around the agent, instead of adding an inbox for each channel.

The obvious move was to add channels one at a time: an Instagram inbox, an email inbox, a voice inbox. That would have meant one engineer maintaining four inboxes, and businesses learning four tools that did the same job.

Instead, the agent is the thing you build, once. It gets a job, knowledge and tools. Channels attach to it. WhatsApp becomes one channel among many instead of the shape of the whole product.

Before: a WhatsApp tool

WhatsApp
Inbox
Campaigns
Contacts
AI assistant Needed guided setup to go live

After: an agent with channels

AgentA job, knowledge and tools. Built once, by describing it.
WhatsAppWebchatEmailVoiceSlack
The model I proposed in my first month. Every later decision hangs off the agent: templates, the builder, billing and status.

One thing couldn’t change: the WhatsApp tools that paying customers relied on had to keep working. So campaigns, contacts and templates stayed, moved into the app around the agent rather than at its center.

Constraints

What the design had to fit

  1. 01

    One engineer

    The founder built everything. Every design had to fit what one person could ship in two to three weeks, so I designed in small releases and reused patterns wherever I could.

  2. 02

    Non technical users

    Our customers ran clinics, shops and agencies. Words like webhook, schema and trigger had to stay out of the main path.

  3. 03

    Every reply cost money

    Agents ran on paid models, billed per use. A busy agent could empty a wallet without anyone noticing.

  4. 04

    A moving target

    Two big launches in three months. Designs had a short shelf life, so I kept the system simple enough to change.

Chapter 02

Starting with the builder

Building became the first screen, and that screen took three versions to get right.

The WhatsApp product opened on an inbox. For an agent product, that’s the wrong front door. An inbox is empty until you’ve built something.

The new first screen has a greeting, one input and a plain question. What would you like to build? Everything else, agents, knowledge, integrations, contacts, campaigns and billing, moved into an app you open from the side when you need it.

$4.79Activity
Build a support agent that answers from my Notion docs and escalates complex tickets to my team with full context.
I found no existing support agent or Notion connection to reuse. First, I need to choose the correct architecture.

Who will use this support agent?

This determines whether I build a customer-facing campaign or an internal team workflow.
Customers / the publicOur internal team onlyBoth audiences
This is not what I want
Message kalcend…
Attach file#◌
The builder is a conversation. You describe the job, and it asks only what it needs to know. Agents, knowledge, contacts, campaigns and billing sit in an app behind the grid icon on the left.

Iteration 01

The blank box

The first version, for the first launch, was just the input. In the first weeks, usage data showed many new users either typed nothing or just typed “hi”. A blank box assumes people already know what an agent can do. Most didn’t.

Iteration 02

Examples in the placeholder

Rotating examples helped people start. But many copied an example word for word and ended up with an agent that didn’t fit their business, and most of those didn’t come back.

$4.79Activity
Good evening, Vishnu!
What would you like to build?
hi
Attach file#◌
Iteration 1, redrawn. One question and an empty box. A common first message was just “hi”.
$4.79Activity
Good evening, Vishnu!
What would you like to build?
Try: “Build a support agent that answers from my Notion docs and escalates to my team”
Attach file#◌
Iteration 2, redrawn. Rotating examples in the input. People started typing, but often copied the example as it was.

Iteration 03

Templates as real starting points

I replaced examples with templates for jobs our customers already ran: an ERP, payroll, a sales CRM, a data analyst in Slack and a content marketer. Each card shows the tools it uses and how long setup takes. The setup time helped more than expected. It told people this was real work with a clear end, so they were more likely to finish.

QUICK-START TEMPLATES
ERP for your business
ERPNext on its own server: accounting, inventory, sales and more.
ERPNextOwn server~45 min
Payroll and HR
Frappe HR with ERPNext on its own server: employees, leave and payroll.
Frappe HROwn server~1 hour
CRM for your sales team
Twenty on its own server: contacts, companies and deals.
TwentyOwn server~20 min
Data analyst in Slack
Answers data questions in Slack from your database.
DatabaseSlack~20 min
Content marketer
Drafts posts in your brand voice with images, shares them for review.
Brand voice skillSlack~20 min
Iteration 3, as shipped. Five templates, each with the tools it uses and its setup time.

Why it won

Why templates stuck

A blank box asked people to imagine what an agent could do. Templates showed them. The list wasn’t invented. It came from the jobs businesses kept describing in sales calls and support chats, like running a sales pipeline, answering questions from their data or handling payroll. So the home screen spoke the way customers already talked about their work.

Templates were also the easiest choice to keep right as the product changed. A template isn’t a separate flow. It’s a starting configuration for the same builder: a job, plus the tools it needs. Every improvement to the builder improved every template, and adding a new one was a content change, not engineering work. With one engineer, that leverage mattered as much as the design.

The risk is that templates shape what people build, and some will bend their idea to fit one of the five. That’s why the input stayed directly below them.

Within a few months, more than a third of first agents started from a template, and those were more likely to reach a working test than agents started from a blank prompt.

Chapter 03

Showing build progress

I couldn’t make builds faster, so I made the wait readable. Abandonment during builds fell from 31% to 12%.

Building an agent takes minutes, not seconds. The system checks what already exists, sets up tools and puts the pieces together. At first this was a single line, “Thinking…”, sometimes for ten minutes. People refreshed, retyped their request or left. 31% of builds were abandoned during the wait.

I replaced it with a build card. Five named stages. A live line saying what the system is doing right now. A timer, and a range: usually 3 to 12 minutes. We showed a range because build times varied too much for a single estimate to be reliable.

Build a support agent that answers from my Notion docs and escalates complex tickets to my team with full context.
Thinking…
Before. Same screen for up to ten minutes.
Building automation dependencies
Surveying, tooling, and assembling the agent + trigger resources
2:49usually 3–12 min
Review Survey Tooling Assemble Go live
get_resource_schema
Before and after. The build card names each stage, shows what is happening now and gives a range instead of a promise.

Together with templates, this cut the median time from first message to a tested agent from 41 minutes at launch to 16.

One thing I’d change: the live line still shows internal step names like get_resource_schema. I’d replace them with plain language. It was planned but not shipped when I handed over.

Chapter 04

Making cost visible

I put cost in view on every screen, so people could see what an agent cost before it went live.

Pay as you go made Kalcend cheap to try. It also made it easy to be surprised. Early support chats after the first launch included people asking where their balance had gone.

I made two small changes. The wallet balance sits in the top bar on every screen, and it updates while the builder works, so you watch setup cost money as it happens. And every reply in the Playground shows how long it took and how many tokens it used. Testing an agent tells you what running it will cost before it goes live.

$4.89Activity 1
Build a support agent that answers from my Notion docs and escalates complex tickets to my team with full context.
Running preset integration…
The IT Handbook explains how to request VPN access, but it doesn’t cover setting it up on a new laptop, so I can’t give you a confident answer.
23.5s  ·  6.2K standard tokens  ·  edit behaviour
Top: the balance in the top bar, ticking down while a build runs. Bottom: time and token cost under every test reply.

People kept paying: the wallet passed 100 top ups within weeks of the relaunch.

Chapter 05

Adding channels

With the agent as the unit, a channel became a setting on it. I designed channel setup so a business could connect WhatsApp, webchat, email, voice or Slack to the same agent, with the same knowledge and the same escalation rules. The composer on the home screen carries the most used channels, so you can say where an agent should live while you describe it.

The call I lost

Email at launch

I designed all five channels together so the model would hold. I wanted email in the first release too, because agencies asked for it more than anyone. The founder chose to launch with fewer channels and add the rest over the following months.

The founder was right. Every channel brought its own approvals, limits and setup failures. One engineer couldn’t have shipped five well at once. What I did hold on to was the model. Because channels attached to agents, each new one was a few weeks of work, not a redesign.

One agentSame job, knowledge and escalation rules everywhere
WhatsAppWebchatEmailVoiceSlack
At launchAdded over the following months, without a redesign
Designed as one system, shipped in steps.

Within months of adding channels, 2 in 5 active agents ran on a channel other than WhatsApp. It suggested the demand was for the right channel, not a better WhatsApp tool.

Chapter 06

Making agent status accurate

By the last stretch, the problem had moved. People could build agents. Now they couldn’t always tell what their agent had actually done.

When I ran a full build myself, start to finish, I found five places where two status messages contradicted each other. Among them:

  • A Connect Slack click marked as answered when nothing had connected.
  • A green badge on a WhatsApp alert that never arrived.
  • An agent page reading Active when nothing was live.

And this one, in a single reply:

Automation build failed✕
Request tool:13f594a3fdaa591a4c31a03ee26f4bcd406154c8d8fa7ca3f99a9e680a017198 has an uncertain outcome. Execution stopped; inspect its receipt and recorded resources before retrying.
Automation build — ready for go-live review
Test the agent in the playground — the automation is created LIVE only after your approval in chat
The same reply says the build failed and that it is ready for review. Users tend to act on the last message they read.

Each message described a different part of the system, but nothing told the user which one mattered. So I mapped every status in the product onto one scale, from the weakest claim to the strongest, and wrote one rule: the interface only claims what the system can prove.

SaidThe AI wrote it in a message.
CalledA tool ran and returned.
ConfirmedThe result was checked where it landed.
ApprovedA person signed off.
LiveIt runs for real users.
Design, in progress
Test build ready. Not live.
IT Help Desk · Draft
Planned
Built
Tested
Approved
Live
One build step finished without a clear result. The agent works in the Playground, but its WhatsApp trigger may not exist yet.
Inspect stepRetry stepApprove and go live
PlaygroundIT Help Desk ⌄
Read the IT HandbookReturned 1 block574ms
notion_get_block_childrenShow raw output
!Send WhatsApp alertSent, not delivered49ms
Kalcend accepted the request. WhatsApp did not confirm delivery.Why
The IT Handbook doesn’t cover VPN setup on a new laptop, so I tried to pass this to a person on WhatsApp.
!Escalation not deliveredRetry alertCheck WhatsApp
One status instead of two that disagree, and a test trace that speaks in outcomes. Raw output stays one click away for people who want it.

This was my focus in the last stretch. I handed the scale, the status rules and these screens to the founder. Support chats gave the reason to finish it: one of the most common setup questions was some version of “is my agent live?”

Outcome

Results

After the relaunch, Kalcend passed 5,000 users within three weeks, with 60 or more new signups a day, all from organic channels and no paid ads. It landed its first enterprise deals and paying customers in the same period.

That was the whole team’s work. The numbers below are the ones my work moved most directly.

41 → 16Median minutes from first message to a tested agent
31% → 12%Builds abandoned during the wait
2 in 5Active agents on a channel other than WhatsApp

Reflection

What I took from it

  1. 01

    Decide the core object first

    Settling on the agent as the core unit gave every later feature a place: templates, channels, billing and status.

  2. 02

    Visible progress can matter as much as speed

    Build times didn’t change. Showing each stage is what cut abandonment.

  3. 03

    In usage priced products, cost belongs in the interface

    When every reply costs money, the balance and the cost of each test belong on screen while people build.

  4. 04

    Define status states early

    We designed how agents get built months before we designed how they report back. Next time I’d set the status rules in the first month.

Next case study

Airport Operations Platform