Problem
Property management companies handle hundreds of repetitive tenant inquiries every day (maintenance status, rent balances, lease renewals), all manually. Each one ties up a property manager for minutes. Emergency triage depends on whoever happens to be available, meaning a gas leak reported at 2AM waits for a human to classify it.
Solution
An AI agent that lives inside Salesforce and handles the four highest-volume tenant interactions 24/7. Tenants message in, the agent verifies their identity, classifies urgency, creates work orders with the right SLA, looks up rent and lease information, and escalates emergencies to a manager with full context. No human intervention required for routine requests.
Demo
Results
- 5 topics covering every high-volume tenant interaction
Five Agent Script topics with a priority-ordered routing architecture: (1) Identity Verification collects tenant email, calls VerifyTenant Apex action (Contact → active Lease → Unit → Account chain), sets unit_number as a session-wide guard variable that gates all subsequent actions. (2) Maintenance Intake uses hybrid urgency classification: LLM classifies based on natural language rules, Apex safety-net keyword detection overrides for life-safety emergencies (gas leak, fire, carbon monoxide, flooding). Each urgency level drives a different SLA and creates both a Case and Work Order atomically using Database.setSavepoint()/rollback for transactional integrity. (3) Rent & Payment Lookup retrieves the full payment profile: current balance, outstanding late fees, last 6 payment records, monthly rent, next due date. (4) Lease Info & Renewal pulls lease dates and status, calculates days until expiry in real time, proactively surfaces renewal option if within 90-day window. (5) Human Escalation creates a high-priority Case with full conversation summary so the property manager has complete context without asking the tenant to repeat themselves. Key platform discoveries: apex:// targets don't work in Agent Script. Flow wrappers are required as parameter bridges. All action outputs use String type to avoid boolean comparison failures in Agent Script guards. 12 mutable string variables track state across topics.
Tech Stack
- Salesforce Agentforce
- Atlas ConcurrentMultiAgentOrchestration
- Agent Script DSL
- Apex
- Autolaunched Flows
- SOQL
- ExternalCopilot
- EinsteinServiceAgent
- Custom Objects