AI Real Estate Technologies · Internal

The Buyer Engagement Agent — architecture & grounding.

Every buyer-facing answer flows through a specialized subagent, and every subagent reads from a governed data source in our Salesforce environment — the agent never free-generates facts. Knowledge records are plain Salesforce records the team edits directly; inventory answers are computed deterministically from the unit data and relayed verbatim.

%%{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.