Generative UX · Salesforce Agentforce

Moving from random AI responses to predictable design

We’ve moved past the phase where a simple chatbot is enough. UX is now about orchestrating how an AI thinks and acts inside a complex system, the “hidden” side of Generative UX: prompt engineering and governance that keep the technology grounded in real data.

Role
Product & Interaction Designer
Platform
Salesforce Agentforce
Focus
Generative UX · Governance
Discipline
AI Interaction Design

My goal: agents that don’t just talk back, but anticipate what a user needs before they ask, while keeping the data 100% accurate.

Case Study 01 · Coral Cloud Resorts

Orchestrating proactive AI with Agentforce

Evolving an AI strategy from a basic chatbot into a proactive, on-brand assistant that delivers high-accuracy guest data, without hallucinating.

Client
Coral Cloud Resorts
Surface
Guest Success Agent
Model
GPT-4o Mini · temp 0.3
Scope
Prompt · Governance · LLM
Prompt Builder · Generate Personalized Schedule · Resolved Prompt → Generated Response
Prompt Builder preview showing a grounded resolved prompt and the AI-generated personalised guest schedule
The outcome. A grounded prompt resolves real CRM data into a personalised, on-brand schedule, the AI introduces itself and lists today’s activities matched to the guest’s interests.
01 The Challenge

From basic chatbot to proactive assistant

Coral Cloud Resorts needed their AI to feel human and stay on-brand while delivering high-accuracy guest data, and never “hallucinating” incorrect information.

01

Feel human & on-brand

A generic chatbot tone erodes trust; the agent had to sound like the Guest Success team.

02

No hallucinations

Guest-facing answers must be factual and grounded in real CRM data, every time.

03

Safe & governed

AI disclaimers and governance protocols for ethical, enterprise-ready deployment.

02 The Solution · Pillar 1

Environmental governance & readiness

Before customising the experience, I prepared the foundation, activating the AI ecosystem inside a secure platform environment, ready for enterprise-level tasks.

Activated the core Agentforce and Einstein Generative AI infrastructure.
Handled the disclaimers & governance that make generative AI safe to deploy.
Treated readiness as a UX concern, trust starts before the first response.
Setup · Agentforce (Default)
Salesforce setup page turning on Agentforce Default and Einstein Generative AI
Activation. Turning on Agentforce & Einstein Generative AI.
Disclaimers
Governance disclaimer modal warning that generative AI can produce inaccurate responses
Governance. Acknowledging the generative-AI disclaimer up front.
03 The Solution · Pillar 2

Contextual personalisation & identity

A “human” AI needs a clear identity and access to relevant data. I grounded the prompt template in a specific user context so the agent knew its role, and the guest’s history, before responding.

Defined the agent’s identity and brand persona within the “Guest Success Team.”
Engineered prompt logic with dynamic resources, User Name, Record Snapshots, to eliminate data gaps.
Grounding in real-time CRM data cuts “search fatigue”: the right answer arrives immediately, not after tab-hopping.
Setup · Users · Einstein Service Agent
Einstein Service Agent user configuration giving the agent an identity at Coral Cloud Resorts
Identity. The agent gets a defined user, profile, and brand.
Prompt Builder · Template grounding
Prompt template grounded in User.FirstName, CompanyName and a contact record
Grounding. Dynamic resources bind the prompt to real CRM data.
04 The Solution · Pillar 3

LLM reliability with Einstein Studio

To raise the bar on reliability, I configured a custom model in Einstein Studio and set the Temperature to 0.3.

The logic: a lower temperature makes the LLM more deterministic and focused. In a business-critical environment, “predictable and accurate” beats “creative and random.”

Treating temperature as an interaction-design decision, not a technical setting, is what builds user trust.

Einstein Studio · Model Playground
Einstein Studio model configuration with temperature set to 0.3
Temperature 0.3. Tuned for deterministic, factual output.
Einstein Studio · Model
Configured OpenAI GPT-4 Omni Mini model details in Einstein Studio
Model. A configured GPT-4o Mini foundation model.
05 The Solution · Pillar 4

Validation & global scalability

I validated the output, confirming the tone shifted from “generic” to “casual yet business-like,” and that the agent held up across languages for a consistent global experience.

Tested generation to verify tone and accuracy against the brand voice.
Stress-tested high-density information across multiple languages.
Confirmed the same grounded logic produces a faithful French response.
Preview · English
Generated personalised schedule in English
English. A personalised, on-brand schedule for the guest.
Preview · French
The same grounded prompt generating a personalised schedule in French
French. The same logic, validated for multi-language scale.
· Edge cases & recovery

Designing for when it doesn’t know

A confident wrong answer is worse than no answer. So I designed the agent around what happens when it can’t be sure, not just the moments it can.

A

No grounded data, no guess

When the question falls outside the records the agent is grounded in, it says so plainly and hands the guest to a human instead of inventing a plausible-sounding answer.

B

Low-creativity by choice

The 0.3 temperature is a recovery decision as much as a tone one. It narrows the room for the model to drift, so an unclear prompt returns a careful answer rather than a creative one.

C

Honest uncertainty

If confidence is low, the agent states what it does know, names what it doesn’t, and offers the next step, so the guest is never left guessing whether the answer is trustworthy.

D

A graceful handover

The escape hatch to a human is treated as a first-class path, not a failure. The conversation, and its context, carries over so the guest never has to start again.

The measure of an AI agent isn’t how it answers when it knows. It’s how it behaves the moment it doesn’t.

· Key results

Predictable, trustworthy, global

Grounding the AI in real data and tuning it for determinism turned a generic chatbot into a dependable guest-success agent.

↓ Cognitive load
Instant, filtered answers
Guests get personalised schedules without manual searching.
0.3 temperature
System integrity
Responses stay factual, professional, hallucination-free.
Multi-language
Global readiness
Consistent brand voice proven across languages.
Case Study 02 · Coral Cloud Resorts

Systems design for conversational discovery

When an AI can describe an event but can’t give its price, the user has to leave the conversation to search elsewhere, and momentum breaks. I closed that gap by improving the component systems that power the agent’s intelligence.

Client
Coral Cloud Resorts
Surface
Experience Agent
Approach
Systems Design
Scope
Flow · Actions · Governance

I fixed the plumbing, not the script, true systems thinking starts with the data architecture, not the prompt.

01 The Challenge

Missing data breaks momentum

In a high-energy discovery moment, searching for live events or local activities, a single missing field stalls the whole journey.

01

The gap

The agent could describe an experience, but couldn’t answer “how much?”

02

The cost

Users had to leave the conversation to find price elsewhere, friction and drop-off.

03

The fix

Improve the component systems powering the AI, not just the wording of its replies.

02 Phase 1 · Flow Design

Expanding the data layer

Systems thinking starts with the data architecture. I modified the back-end Get Experience Details flow to retrieve the Price field, so the plumbing could support the user’s real need: understanding value and cost.

Flow Builder · Get Experience Details, V2 · Get Records
Flow Builder Get Records configuration adding the Price field to the experience retrieval
The data pipeline. Adding Price__c to the retrieval logic makes real-time pricing available to the conversational interface.
03 Phase 2 · Agent Actions

Mapping logic to interface

Data is only useful if the AI knows how to deliver it. I updated the Agent Action instructions to map the new record data into the user-facing response, behavioural design that matches the natural flow of a discovery conversation.

Agentforce Assets · Agent Action · Input & Output instructions
Agent Action input and output instructions mapping the experience record back to the user
The hand-off. Aligning Agent Action instructions with the back-end logic for a seamless, polished delivery.
04 Phase 3 · Topic Instructions

Intent governance

To keep the agent focused and hallucination-free, I wrote specific Topic Instructions, explicitly telling the AI when to call the retrieval action (e.g. when asked about Name, Description, or Price).

Agentforce Builder · Coral Cloud Experience Agent · Topic Details
Topic instructions telling the agent to call Get Experience Details when asked about name, description, type or price
The guardrails. Intent-based governance triggers the right action for the right question, predictable by design.
05 Phase 4 · End-to-End Validation

Closing the loop

I validated the full journey, from requesting a personalised schedule to drilling into a specific event. The result: a data-rich response with accurate pricing, so the user decides without ever leaving the conversation.

Agentforce Builder · Conversation Preview
Conversation preview where the agent answers about white water rafting including a $250 price
The validated experience. “Tell me more about white water rafting” returns description, activity level, type, and Price: $250.00, in one frictionless reply.
· Edge cases & recovery

No dead ends, even when something’s missing

Wiring the back-end logic into the conversation wasn’t only about the happy path. The harder design work was deciding what the user sees when a piece of that logic comes back empty or unclear.

A

Empty states that still move forward

If no seats, times, or options match, the agent doesn’t stop at “nothing found.” It explains why and offers the nearest alternative, so there’s always a next move.

B

Surfacing the blocker, not hiding it

When a booking can’t complete, the reason is stated in plain language at the point it happens, rather than failing silently and leaving the user to wonder.

C

One source of truth

Because the front-end reads directly from Salesforce, the user never sees a confirmation the system can’t honour. Status stays consistent end to end.

D

Recoverable by design

Every step is reversible. A wrong turn is corrected inside the same conversation, with context preserved, instead of forcing a restart.

“Zero dead ends” isn’t a slogan. It’s a rule I designed each unhappy path against.

· Key results & impact

One conversation, zero dead ends

Connecting back-end Salesforce logic to the front-end experience removed the friction, and built an architecture that scales.

Systems thinking
Back-end → front-end
Salesforce logic wired straight into the UX, less ambiguity for the user.
100% in one turn
Reduced friction
Everything needed, including price, in a single interaction.
0→1 ready
Scalable architecture
Modular, add seat locations, bag policies, and more as it grows.
Case Study 03 · Coral Cloud Resorts

Building a live service agent from scratch with Agentforce Builder

Moving from idea to a fully deployed, identity-aware service agent. I designed the architecture, wired four custom actions to real Salesforce data, wrote the reasoning instructions that govern its decisions, and shipped it live on the Coral Cloud Experience Cloud site.

Client
Coral Cloud Resorts
Surface
Experience Cloud Site
Tool
Agentforce Builder
Scope
Agent Design, Deployment
Coral Cloud Resorts · coral-cloud · CC Service Agent (Active)
Coral Cloud Resorts Experience Cloud site with the CC Service Agent chat widget live in the bottom-right corner, mid conversation with a guest
The result. The CC Service Agent live on the Coral Cloud Experience Cloud site, verifying identity and surfacing grounded resort experience data in a single conversation.
01 The Challenge

Guests need answers without the friction

Coral Cloud Resorts guests arrived at the site wanting to discover experiences, check availability, and book sessions. The existing flow required navigating away from the moment of interest to find the information they needed.

01

Information scattered

Experience details, availability, and booking all lived in separate parts of the system, disconnected from the guest journey.

02

Identity verification missing

Any data returned had to be matched to a real contact record. Without that check, the agent could serve details to unverified users.

03

Booking required a human

Creating a session booking meant staff intervention. Guests could not self-serve from within the experience they were already exploring.

02 The Build, Agent Architecture

Defining what the agent does and how it thinks

In Agentforce Builder, I started by grounding the agent in a clear role: a customer service representative that helps guests make reservations, update bookings, and navigate all that Coral Cloud has to offer.

I created the CC Service Agent and assigned it the EinsteinServiceAgent user record to scope its data access correctly. Rather than building one flat agent that handles everything, I created a dedicated Experience Management subagent, a focused module responsible for activities: answering questions, checking sessions, and completing bookings.

Agentforce Builder · Name your agent · CC Service Agent
Name your agent dialog showing CC Service Agent name and EinsteinServiceAgent user selected
Naming the agent. Agent name and user record set to control what data it can access in the org.
Agentforce Builder · Explorer · Experience Management subagent
Agentforce Builder Explorer with Experience Management subagent open showing four actions
The subagent. Experience Management sits alongside the default escalation, off-topic and ambiguous-question handlers.
03 The Build, Action Wiring

Four actions connected to real Salesforce data

Actions are the tools inside a subagent that get the work done. I designed four, each mapped to a Salesforce Flow, with specific required inputs and controlled outputs governing exactly what the agent can ask for and what it shows in conversation.

A

Get Experience Details

Takes an experience name as required input and returns the full Experience__c record shown in conversation, so the agent can summarise it naturally.

B

Get Customer Details

Validates identity by requiring both email and membership number before any other action runs. The matched contact record surfaces in conversation.

C

Get Sessions

Retrieves available sessions for an experience by ID and start date, so the agent always works from a record ID, never an experience name that could mismatch.

D

Create Experience Session Booking

Takes Contact ID, Session ID, and number of guests to create a live booking record directly inside Salesforce, with no human intervention needed.

Agentforce Builder · Experience Management · Actions Available For Reasoning
Experience Management subagent showing all four actions wired to their Salesforce Flows
All four actions wired. Each action linked to its Salesforce Flow, with required inputs and conversation-visible outputs configured.
04 The Build, Reasoning Instructions

Writing the rules that govern every decision

Actions alone do not make a good agent. The reasoning instructions tell it when to use each action, in what order, and what to do when it does not have enough information yet.

I wrote four instructions that create a clear decision hierarchy. Always know the customer before doing anything else, which means Get Customer Details runs before any other action. Always use the experience record ID when querying sessions, which prevents the ambiguity that leads to wrong results. If multiple sessions are available, present the options and let the guest choose. Handle booking by passing the correct IDs from earlier actions into Create Experience Session Booking so nothing gets repeated or misrouted.

Agentforce Builder's Script view let me write and validate these as structured agent logic, while Canvas view showed how they read in plain language.

Agentforce Builder · Experience Management · Reasoning Instructions · Canvas
Canvas view of Experience Management showing four reasoning instructions with inline action references
Canvas view. Instructions with inline @action references so the agent knows exactly which tool to use at each step.
Agentforce Builder · Experience Management · Script view
Script view showing the full agent YAML with subagent instructions, action definitions and input-output schemas
Script view. The underlying agent script with action definitions, input-output schemas, and the full instruction set.
05 Deploy and Live Test

Committed, activated, and tested against real data

With the instructions validated in Script view, I committed Version 1 and activated it for production. Agentforce Builder's Preview mode ran a full live test against real org data before the site went live.

The test: asking about the full moon beach party experience. The agent routed to Experience Management, applied instruction 2 (verify the customer first) and asked for email and membership number. Once provided, it called Get Customer Details, confirmed the contact record, then called Get Experience Details and returned a grounded readable summary. When the guest asked to book a session for tomorrow, the agent called Get Sessions by experience ID, found an available slot at 10 PM, and asked how many guests. The Summary panel confirmed every step and returned Output Evaluation: GROUNDED. I then embedded the agent into the Coral Cloud Experience Cloud site via Embedded Service Deployment and published it live.

Agentforce Builder · Preview · Summary panel · Output Evaluation: GROUNDED
Preview Summary panel showing Input, Transition to Experience Management, Reasoning, Actions, and Output Evaluation GROUNDED
Output Evaluation: GROUNDED. Every response traced to real Salesforce data. The full reasoning chain confirmed before the site went live.
Agentforce Builder · Preview · Identity check, experience retrieval, session and booking
Full preview conversation showing identity check, Full Moon Beach Party details retrieved, session availability and booking offer
Full conversation in Live Test Mode. Identity check, experience retrieval, session availability and booking offer, all in one unbroken conversation.
· Key results

From zero to a live booking-capable service agent

A guest can now discover a resort experience, verify their identity, check availability, and complete a booking inside one conversation on the Coral Cloud site, without any staff involvement.

4 actions
One conversation
Get Details, Verify Identity, Get Sessions and Create Booking chained in a single agent turn.
GROUNDED
Output Evaluation
Every response verified against real Salesforce data. Zero hallucinations in live testing.
0 staff needed
Self-service booking
Guests complete the full booking journey end to end without any human in the loop.
Next case study
prompt engineering →
Like this thinking? Let’s talk →