A modern, multi-turn conversational assistant that turns a natural-language request into grounded sporting-event discovery and venue answers β powered by a single headless Agentforce Service Agent, with a custom React experience on a Salesforce Digital Experience site.
Discovering events, exploring venues, and understanding seating usually means hopping across listings, maps, and FAQs β slow and impersonal.
One conversation. The agent gathers only the missing details, retrieves options from approved data, and answers venue questions with citations β never inventing facts.
Not a scripted chatbot: deterministic topic routing + an LLM for language, with Agentforce as the orchestration and enterprise-security layer.
Click a stage to see what happens behind the scenes. Routing is topic selection within one Service Agent β not delegation to separate agents.
The real structure. Expand folders, click a file for its purpose. Implemented components are marked built; not-yet-built ones future.
Click any node in the tree to see what it is and how it fits into the runtime.
Expand each layer. The live integration path is server-side end-to-end β the browser never holds Salesforce credentials.
The browser never holds Salesforce credentials. An External Client App issues OAuth client-credentials tokens that a Named Credential attaches to the Apex callout β all server-side.
Setup steps follow the official Agent API β Get Started guide.
Create the ECA that issues access tokens via the client-credentials flow.
PW_Agent_External_API.api)refresh_token, offline_access)chatbot_api)sfap_api)Wire the OAuth chain so Apex callouts authenticate automatically β no secrets in code.
PW_Agenthttps://[Your_Domain_Name]/services/oauth2/tokenPW_AgentThe PW_Chat_Guest_Access permission set grants the site guest user exactly what it needs to broker a call β and nothing more.
PW_AgentController so the guest user can invoke the controller that brokers the Agent API.PW_Agent principal so the Named Credential can attach the issued token.How the pieces above combine into a safe public boundary (and what to tighten for production).
Two independent test layers: Agentforce Testing Center (agent reasoning, routing and guardrails) and Playwright (the React experience). Results below are collected from the actual run artifacts.
The Agentforce Testing Center results live in the repo-root
test-results/ directory β raw JSON from sf agent test run
(run 2026-10-30). Grouped by evaluation suite below.
End-to-end UI coverage of the React concierge, collected from
react-src/playwright-report/.
Open the full HTML report β
βΆ Full end-to-end concierge journey β the complete multi-turn flow (greeting β discovery β
preferences β event cards β venue citation), captured by the journey.spec.ts run.
A guided replay of a real Riyadh conversation. Press Play next turn. The right panel shows the behind-the-scenes trace for each agent turn.
The real flow for the current agent turn.
Play a turn to see intent β routing β action β data β response.
Choosing seats "near the exits", an interactive seating map, holds, and completing a booking are a planned next phase β not yet implemented. The agent today discovers events and answers venue questions with citations.
Try asking
Simulated demo Β· open the live concierge β