%%{init: {
"theme": "base",
"themeVariables": {
"background": "#0d1117",
"primaryColor": "#161e2b",
"primaryTextColor": "#f4efe6",
"primaryBorderColor": "#d9a441",
"lineColor": "#8a93a6",
"clusterBkg": "rgba(255,255,255,0.025)",
"clusterBorder": "rgba(217,164,65,0.35)",
"edgeLabelBackground": "#0d1117",
"fontFamily": "Inter, sans-serif",
"fontSize": "13px"
},
"flowchart": { "curve": "basis", "nodeSpacing": 28, "rankSpacing": 55 }
}}%%
flowchart LR
subgraph CH["Buyer channels"]
WEB["🌐 Website chat
project site widget"]
EMAIL["✉️ Email
replies & nurturing"]
end
subgraph AGENT["Lia — Agentforce agent · our Salesforce environment"]
ROUTER{{"Router
intent detection ·
deterministic email routing"}}
A_DETAILS["Apartments Details
unit Q&A in text"]
A_CAROUSEL["Unit Carousel
visual search, match badges"]
A_MAP["Neighborhood Map
POI & routes control"]
A_INFO["Project Info
building & policies"]
A_OBJ["Objection Handling"]
A_BOOK["Visit Booking"]
A_LEAD["Lead Creation"]
A_EMAIL["Email Nurturing
intro · nudge · replies"]
end
subgraph ACCESS["Data access — deterministic Apex & retrievers"]
S_PROMPT["Prompt-template retriever
resolved data, no inner LLM"]
S_UNITS["ShowUnits service
SOQL + best-effort scoring →
verbatim envelope"]
S_KB["Knowledge Library service
records → markdown,
cached per session"]
S_OBJ["Objection Playbook service"]
S_SLOTS["Visit slots / booking services"]
S_FLOW["Lead-creation flow"]
end
subgraph DATA["Storage — Salesforce records the team edits directly"]
KB[("Knowledge Library
Encyclopedia · Bootcamp ·
FAQ · Glossary · Objections
one record = one entry")]
UNITS[("Multi-Factor Price List
Residence inventory
142 residences · price ·
26 searchable attributes ·
availability flag")]
PHOTOS[("Residence photos
public content links")]
CRM[("Leads · Meetings
consent included")]
end
subgraph SITE["Website experience — client side"]
W_CAR["Photo carousel"]
W_MAP["Interactive map
94-POI dataset"]
end
WEB --> ROUTER
EMAIL --> ROUTER
ROUTER --> A_DETAILS & A_CAROUSEL & A_MAP & A_INFO & A_OBJ & A_BOOK & A_LEAD & A_EMAIL
A_DETAILS --> S_PROMPT --> UNITS
A_CAROUSEL --> S_UNITS --> UNITS
S_UNITS -.photos resolved client-side.-> PHOTOS
A_CAROUSEL --> W_CAR
A_MAP --> W_MAP
A_INFO --> S_KB --> KB
A_EMAIL --> S_KB
A_OBJ --> S_OBJ --> KB
A_BOOK --> S_SLOTS --> CRM
A_LEAD --> S_FLOW --> CRM
style ROUTER fill:#1c242f,stroke:#e8c377,stroke-width:2px
style KB fill:#1a2230,stroke:#d9a441,stroke-width:2px
style UNITS fill:#1a2230,stroke:#d9a441,stroke-width:2px
Knowledge Library — five sources, one object
All five knowledge sources are typed records in a single Salesforce object: Encyclopedia (the project & building), Bootcamp (sales method: conversation sequence, funnel guide, tie-downs — 13 records live), FAQ (9 live), Glossary (terms & definitions), and the Objection library (8 live, Acknowledge → Clarify → Respond → Redirect). Adding or editing a record updates the agent immediately — no code, no retraining.
Multi-Factor Price List — the inventory truth
Every residence is a record carrying its multi-factor price and 26 searchable attributes (floor, exposure, noise, kitchen, ensuite, den…). The ShowUnits service queries it live, scores every available residence against the buyer's criteria, and returns a verbatim data envelope — the AI physically cannot invent a residence, price, or availability.
How access stays safe
Subagents never browse freely: each one reads through a dedicated deterministic service (cached per conversation where useful). Web chat and email share the same grounding, so both channels give identical answers. Leads and booked meetings land in our Salesforce environment.