Charles had spent years perfecting a product where every customer conversation could be planned in advance. Then LLMs arrived and suddenly that was the problem.

I joined Charles just as the company began rethinking what conversational commerce could become when the product stopped controlling every word.

Charles had spent years perfecting a product where every customer conversation could be planned in advance. Then LLMs arrived and suddenly that was the problem. I joined just as the company began rethinking what conversational commerce could become when the product stopped controlling every word.

Role

Senior Product Designer

Senior Product Designer

Scope

AI Agents · Product Discovery · Integrations

AI Agents · Product Discovery · Integrations

Period

2025-2026

2025-2026

Overview

Overview

What Charles is
What Charles is

Charles helps consumer brands turn WhatsApp into a channel for marketing, commerce and customer service.

Teams can build automated journeys, run campaigns, manage conversations and connect customer interactions with the systems behind their business.

Charles helps consumer brands turn WhatsApp into a channel for marketing, commerce and customer service.

Teams can build automated journeys, run campaigns, manage conversations and connect customer interactions with the systems behind their business.

My role
My role

I joined Charles as a Senior Product Designer following its acquisition of Spectrm.

I was brought into the team specifically as Charles began its move into AI, working across agent experiences, conversational product discovery, testing, data and the integrations supporting them.


My role moved between early product thinking and production-ready interaction and visual design, helping define not only what these new experiences looked like, but how an AI-native Charles should actually work.

I joined Charles as a Senior Product Designer following its acquisition of Spectrm.

I was brought into the team specifically as Charles began its move into AI, working across agent experiences, conversational product discovery, testing, data and the integrations supporting them.


My role moved between early product thinking and production-ready interaction and visual design, helping define not only what these new experiences looked like, but how an AI-native Charles should actually work.

Context

Context

Charles knew exactly what would happen next
Charles knew exactly what would happen next

For years, that had been one of its strengths.


Customer journeys were deterministic. A trigger started the conversation, conditions decided where it went and every message could be prepared before the customer ever arrived.


The entire interaction could be represented on a canvas because every possible next step had already been defined.

Then generative AI changed the premise.

For years, that had been one of its strengths.


Customer journeys were deterministic. A trigger started the conversation, conditions decided where it went and every message could be prepared before the customer ever arrived.


The entire interaction could be represented on a canvas because every possible next step had already been defined.

Then generative AI changed the premise.

Then the conversation stopped following the canvas
Then the conversation stopped following the canvas

An agent could interpret what someone wanted, use information from several sources and decide how to respond without somebody having written that response beforehand.


That created an awkward mismatch with the existing product model. A journey canvas communicates certainty. Nodes connect because the designer knows what follows each one. An agent exists precisely because that certainty is no longer required.


The design problem had changed. We were no longer defining every conversation. We were defining what could safely have one.

An agent could interpret what someone wanted, use information from several sources and decide how to respond without somebody having written that response beforehand.


That created an awkward mismatch with the existing product model. A journey canvas communicates certainty. Nodes connect because the designer knows what follows each one. An agent exists precisely because that certainty is no longer required.


The design problem had changed. We were no longer defining every conversation. We were defining what could safely have one.

AI Agents

AI Agents

AI could not just become another node
AI could not just become another node

One obvious way to preserve the existing Charles model was to contain AI inside it.

An AI step could receive instructions, generate something useful and then hand control back to the deterministic journey around it.


The interaction was familiar, but the mental model was contradictory. The canvas still suggested a sequence of predictable outcomes while the most important part of the experience could now decide what happened itself.

Adding more branches around the agent would only recreate, manually, the flexibility AI was supposed to provide.


So the design moved up a level.

Instead of asking teams to define what the conversation should say next, the product needed them to define the agent's goal, knowledge and boundaries. The path could emerge from those decisions.

One obvious way to preserve the existing Charles model was to contain AI inside it.

An AI step could receive instructions, generate something useful and then hand control back to the deterministic journey around it.


The interaction was familiar, but the mental model was contradictory. The canvas still suggested a sequence of predictable outcomes while the most important part of the experience could now decide what happened itself.

Adding more branches around the agent would only recreate, manually, the flexibility AI was supposed to provide.


So the design moved up a level.

Instead of asking teams to define what the conversation should say next, the product needed them to define the agent's goal, knowledge and boundaries. The path could emerge from those decisions.

And one “AI agent” was never going to be enough
And one “AI agent” was never going to be enough

That shift exposed another problem. An AI agent sounded like one product concept.


In practice, the jobs were very different. A product recommendation agent needed access to a catalogue and enough customer context to narrow it intelligently. A Q&A agent needed trustworthy brand knowledge and a way to respond when that knowledge was insufficient. Re-engagement needed to understand an existing conversation and decide how it should continue.


A single configuration capable of exposing every possible behaviour would have been powerful, but it would also force every user to understand the entire AI system.


Instead, the interface followed the job. Shared patterns kept the experiences consistent while each agent surfaced only the decisions that mattered to what it was supposed to do.

That shift exposed another problem. An AI agent sounded like one product concept.


In practice, the jobs were very different. A product recommendation agent needed access to a catalogue and enough customer context to narrow it intelligently. A Q&A agent needed trustworthy brand knowledge and a way to respond when that knowledge was insufficient. Re-engagement needed to understand an existing conversation and decide how it should continue.


A single configuration capable of exposing every possible behaviour would have been powerful, but it would also force every user to understand the entire AI system.


Instead, the interface followed the job. Shared patterns kept the experiences consistent while each agent surfaced only the decisions that mattered to what it was supposed to do.

Discovery

Discovery

Then we gave the agent a catalogue
Then we gave the agent a catalogue

Product recommendation made the new model tangible.

Traditional commerce interfaces progressively narrow a catalogue through predefined controls like category, size, colour, price and material.


A conversation can collapse all of those steps into one sentence.

"I need a lightweight black dress for a wedding in Italy".


There is no reason to ask for colour again. Or occasion. Or probably category.

The agent needed to recognise the information already present, identify what was still missing and use the catalogue to move the conversation forward.


That changed our role as designers. We were no longer arranging filters. We were deciding when the product should ask, when it should infer and when it knew enough to recommend something.

Product recommendation made the new model tangible.

Traditional commerce interfaces progressively narrow a catalogue through predefined controls like category, size, colour, price and material.


A conversation can collapse all of those steps into one sentence.

"I need a lightweight black dress for a wedding in Italy".


There is no reason to ask for colour again. Or occasion. Or probably category.

The agent needed to recognise the information already present, identify what was still missing and use the catalogue to move the conversation forward.


That changed our role as designers. We were no longer arranging filters. We were deciding when the product should ask, when it should infer and when it knew enough to recommend something.

The first recommendation did not have to be right
The first recommendation did not have to be right

Product discovery also challenged a familiar assumption that a successful recommendation experience produces the correct result immediately.


Conversation gave us another option. A customer could simply respond:

Too expensive. Not that color. Something more casual.


Each response contained information that would normally require another control, filter or feedback mechanism.

There was a temptation to structure this more explicitly and turn rejection into selectable reasons. That would produce cleaner inputs for the system, but it also asked the customer to repeat information they could already express naturally.


So rejection remained part of the conversation. A wrong recommendation was not necessarily a dead end. Handled correctly, it was another piece of context.

Product discovery also challenged a familiar assumption that a successful recommendation experience produces the correct result immediately.


Conversation gave us another option. A customer could simply respond:

Too expensive. Not that color. Something more casual.


Each response contained information that would normally require another control, filter or feedback mechanism.

There was a temptation to structure this more explicitly and turn rejection into selectable reasons. That would produce cleaner inputs for the system, but it also asked the customer to repeat information they could already express naturally.


So rejection remained part of the conversation. A wrong recommendation was not necessarily a dead end. Handled correctly, it was another piece of context.

Testing

Testing

For the first time, the happy path was not enough
For the first time, the happy path was not enough

With deterministic journeys, teams could inspect their logic before anything reached a customer.

Triggers were visible. Conditions were visible. Messages were visible.


With an agent, the same configuration could produce different conversations depending on what somebody asked, what the agent knew and what had already happened.


A polished setup screen could therefore create a false sense of confidence. The interface could tell someone how the agent was configured. Only a conversation could show them how it behaved.

With deterministic journeys, teams could inspect their logic before anything reached a customer.

Triggers were visible. Conditions were visible. Messages were visible.


With an agent, the same configuration could produce different conversations depending on what somebody asked, what the agent knew and what had already happened.


A polished setup screen could therefore create a false sense of confidence. The interface could tell someone how the agent was configured. Only a conversation could show them how it behaved.

So we made behavior something teams could test
So we made behavior something teams could test

Testing became part of the product experience.


I worked on ways for teams to interact with their agents before customers could, trying different questions and scenarios and seeing how the configuration translated into actual behavior.


That feedback loop mattered because AI configuration was fundamentally different from configuring a flow. Teams were not simply checking whether the logic connected correctly.


They were asking a more human question:

"Does this behave the way I intended?"


The product needed to make that question possible to answer before publishing.

Testing became part of the product experience.


I worked on ways for teams to interact with their agents before customers could, trying different questions and scenarios and seeing how the configuration translated into actual behavior.


That feedback loop mattered because AI configuration was fundamentally different from configuring a flow. Teams were not simply checking whether the logic connected correctly.


They were asking a more human question:

"Does this behave the way I intended?"


The product needed to make that question possible to answer before publishing.

Data

Data

The smarter the agent became, the more the work moved underneath it
The smarter the agent became, the more the work moved underneath it

A recommendation agent without catalogue data was not useful. A personalized conversation without customer information was not personal.


A Q&A agent without reliable knowledge could sound convincing while knowing very little. So much of designing Charles' AI experience happened beneath the conversation itself.


I worked on the systems connecting Charles with Shopify, Klaviyo, Braze and Emarsys, including catalogue mapping, customer properties, profiles, lists and segments, event triggers and the knowledge available to agents.


The agent might have been the visible feature. Its usefulness depended on everything behind it.

A recommendation agent without catalogue data was not useful. A personalized conversation without customer information was not personal.


A Q&A agent without reliable knowledge could sound convincing while knowing very little. So much of designing Charles' AI experience happened beneath the conversation itself.


I worked on the systems connecting Charles with Shopify, Klaviyo, Braze and Emarsys, including catalogue mapping, customer properties, profiles, lists and segments, event triggers and the knowledge available to agents.


The agent might have been the visible feature. Its usefulness depended on everything behind it.

And none of those systems agreed on what the data should look like
And none of those systems agreed on what the data should look like

Each integration brought its own terminology, structures and assumptions.


A property in one system might represent something differently in another. Some mappings were obvious. Others required the user to decide how two different data models related.


Exposing those structures directly would technically preserve their flexibility, but it would also push the integration problem onto the user.

The interface needed to become a translation layer. Relationships had to be understandable. Imported data needed a predictable structure. Long or unfamiliar variables still had to be identifiable.


When something could not map cleanly, the product needed to make the problem visible enough to resolve. The complexity could not disappear. It could stop at the interface.

Each integration brought its own terminology, structures and assumptions.


A property in one system might represent something differently in another. Some mappings were obvious. Others required the user to decide how two different data models related.


Exposing those structures directly would technically preserve their flexibility, but it would also push the integration problem onto the user.

The interface needed to become a translation layer. Relationships had to be understandable. Imported data needed a predictable structure. Long or unfamiliar variables still had to be identifiable.


When something could not map cleanly, the product needed to make the problem visible enough to resolve. The complexity could not disappear. It could stop at the interface.

System

System

AI changed almost everything except how Charles needed to feel
AI changed almost everything except how Charles needed to feel

There was one more easy direction to take. By then, AI products had started developing their own visual shorthand: glowing gradients, magic icons, futuristic surfaces and interfaces constantly signaling that something intelligent was happening.


Charles did not need that.

These agents were not a separate experiment sitting beside the product. They were becoming part of the product itself.


I extended the interaction patterns and visual language Charles already had into the new experiences, using the design system to absorb new AI behaviors without creating an “AI mode” around them. The technology was unfamiliar enough. The interface did not need to be.

There was one more easy direction to take. By then, AI products had started developing their own visual shorthand: glowing gradients, magic icons, futuristic surfaces and interfaces constantly signaling that something intelligent was happening.


Charles did not need that.

These agents were not a separate experiment sitting beside the product. They were becoming part of the product itself.


I extended the interaction patterns and visual language Charles already had into the new experiences, using the design system to absorb new AI behaviors without creating an “AI mode” around them. The technology was unfamiliar enough. The interface did not need to be.

outcome

outcome

Eventually, we stopped designing the conversation
Eventually, we stopped designing the conversation

Charles started from a product where the entire customer journey could be drawn before the customer arrived.


AI challenged that assumption at almost every layer. Paths became goals and boundaries. Filters became conversation. Rejection became context. Testing became part of configuration. Integrations became the knowledge behind the agent.


My work helped turn those changes into experiences teams could configure, understand and trust without needing to understand everything happening underneath them.


The biggest shift was not that Charles added AI.

It was that we stopped designing every conversation and started designing the system capable of having one.

Charles started from a product where the entire customer journey could be drawn before the customer arrived.


AI challenged that assumption at almost every layer. Paths became goals and boundaries. Filters became conversation. Rejection became context. Testing became part of configuration. Integrations became the knowledge behind the agent.


My work helped turn those changes into experiences teams could configure, understand and trust without needing to understand everything happening underneath them.


The biggest shift was not that Charles added AI.

It was that we stopped designing every conversation and started designing the system capable of having one.