Build an AI-powered real estate assistant on WhatsApp using Strands Agents SDK and AWS End User Messaging
Most real estate websites collect form submissions and route them to sales teams who respond hours or days later. Customers who expect immediate answers often move on. This post shows how to close that gap with a WhatsApp assistant that responds instantly. We show you how to build a real estate assistant powered by AI that delivers property discovery, home loan pre-approval, and site visit booking entirely within WhatsApp. The solution uses the Strands Agents SDK to orchestrate specialized AI agents on Amazon Bedrock, with AWS End User Messaging Social for WhatsApp integration. The serverless backend runs on AWS Lambda and Amazon DynamoDB.
Prerequisites
You need an AWS account with permissions for AWS CloudFormation, Lambda, Amazon Simple Notification Service (Amazon SNS), Amazon Bedrock, and DynamoDB. You also need a WhatsApp Business account integrated with AWS End User Messaging. For instructions to locate your WhatsApp phone number ID, see View a phone number’s ID in AWS End User Messaging Social
For more information about how to set up WhatsApp using AWS End User Messaging Social, refer to Automate workflows with WhatsApp using AWS End User Messaging Social
AWS Serverless Application Model (AWS SAM) CLI is required to deploy the demo solution. For installation instructions, see the AWS SAM CLI installation guide
Overview of solution
The architecture uses four AI agents built with the Strands Agents SDK. Each agent handles a specific task: identity verification, credit scoring, fraud detection, or property valuation. The agents use Strands SDK decorators to access external data sources. The agents run on Amazon Bedrock with the Nova Lite model and are deployed to AWS Lambda using the official Strands Agents Lambda Layer. AWS End User Messaging Social handles WhatsApp Business API integration, publishing incoming messages to Amazon SNS for routing. The webhook handler Lambda function processes these events and invokes the supervisor agent. The supervisor agent orchestrates the conversation flow, maintains session state in Amazon DynamoDB, and sends rich interactive messages back to customers on WhatsApp.
For this post, we use a demo landing page to simulate the “Enquire Now” button on a real estate website. In a production scenario, you can add this integration point to any existing website. The only requirement is a WhatsApp click-to-chat link that pre-fills the initial message with the property details
The following diagram illustrates the solution architecture:
Strands Agents SDK — multi-agent pipeline
The Strands Agents SDK is an open system prompt and tools. The agent then decides when to use those tools based on what the user asks
This solution uses four specialized agents, each with its own tools:
- Identity Agent – uses the
verify_identitytool to validate the customer’s tax identification number. - Credit Scoring Agent – uses
check_credit_scoreandget_loan_offerstools to assess creditworthiness and generate lending offers. - Fraud Detection Agent – uses
check_fraud_riskto evaluate application risk. - Property Valuation Agent – uses
validate_propertyto check regulatory registration and market value.
The following example shows how to define agents using the Strands @tool decorator pattern. Each tool is region-agnostic by design. You adapt the implementation for your local tax authority, credit bureau, and property registry
from strands import Agent, tool
from strands.models.bedrock import BedrockModel
MODEL_ID = "amazon.nova-lite-v1:0"
def get_model():
return BedrockModel(model_id=MODEL_ID, region_name="us-east-1")
@tool
def verify_identity(tax_id: str) -> dict:
"""Verify customer identity using their tax identification number.
Adapt for your region: PAN (India), SSN (US), NIN (UK), TFN (Australia)."""
# Call your regional tax authority API here
return {"tax_id": tax_id, "valid": True,
"holder_name": "Customer", "status": "Active"}
@tool
def check_credit_score(tax_id: str) -> dict:
"""Fetch customer credit score from a credit bureau.
Adapt for your region: CIBIL (India), FICO (US), Experian (Global)."""
# Call your regional credit bureau API here
return {"credit_score": 782, "risk_category": "Low"}
@tool
def get_loan_offers(property_price: int, credit_score: int) -> dict:
"""Get mortgage offers from partner lending institutions.
Adapt for your region's banks and lending regulations."""
# Call your partner bank APIs here
return {"offers": [...]}
@tool
def validate_property(name: str, registration_id: str, price: int) -> dict:
"""Validate property registration with the local regulatory authority.
Adapt for your region: RERA (India), Land Registry (UK), MLS (US)."""
# Call your regional property registry API here
return {"registration_valid": True, "investment_rating": "good"}
You then orchestrate the agents in a pipeline:
def run_full_pipeline(tax_id, phone, project):
# Agent 1: Identity Verification
agent = Agent(
model=get_model(),
system_prompt="You are an Identity Verification Agent. "
"Use verify_identity to check the customer's tax ID.",
tools=[verify_identity],
callback_handler=None
)
identity = agent(f"Verify tax ID: {tax_id}")
# Agent 2: Credit Scoring + Loan Offers
agent = Agent(
model=get_model(),
system_prompt="You are a Credit Scoring Agent. "
"Use check_credit_score then get_loan_offers.",
tools=[check_credit_score, get_loan_offers],
callback_handler=None
)
credit = agent(f"Check credit for {tax_id}, "
f"get offers for price {project['price']}")
# Agent 3: Fraud Detection
# Agent 4: Property Valuation
# ... similar pattern
return consolidated_results
AWS End User Messaging Social handles WhatsApp Business API integration. Incoming messages arrive as events. Outgoing messages, including text, buttons, lists, and location cards, go through the SendWhatsAppMessage API
Message routing with Amazon SNS
An SNS topic receives events from AWS End User Messaging Social whenever customers send WhatsApp messages
Webhook handler – AWS Lambda
The webhook handler Lambda function parses the EUM Social event envelope, extracts the WhatsApp message payload, and routes it based on message type
Supervisor agent – AWS Lambda with Strands Agents
The supervisor agent orchestrates the full conversation flow. It maintains session state in Amazon DynamoDB and sends rich WhatsApp messages back to the customer. When the customer submits their identification, the supervisor invokes the Strands agent pipeline, which runs four agents sequentially on Amazon Bedrock
The supervisor sends interactive WhatsApp messages using the EUM Social API:
def send_list(self, to_phone, body, button_text, sections):
payload = {
"messaging_product": "whatsapp",
"to": to_phone,
"type": "interactive",
"interactive": {
"type": "list",
"body": {"text": body},
"action": {
"button": button_text,
"sections": sections
}
}
}
response = self.client.send_whatsapp_message(
originationPhoneNumberId=self.phone_number_id,
message=json.dumps(payload).encode('utf-8'),
metaApiVersion='v21.0'
)
Lambda Layer for Strands Agents
The Strands Agents SDK provides an official Lambda Layer that includes all required dependencies pre-built for the Lambda runtime
Session state – Amazon DynamoDB
Two DynamoDB tables store conversation state. The sessions table tracks the full conversation state machine (INITIATED, AWAITING_PROJECT_SELECT, AWAITING_ACTION, AWAITING_ID, LOAN_APPROVED, VISIT_CONFIRMED), with a 30-minute TTL
Conversation flow
The customer journey unfolds across four steps in WhatsApp
Step 1: Property discovery
When the customer sends the initial message, the supervisor agent sends a welcome message followed by an interactive list picker showing properties grouped by developer. The list picker uses WhatsApp’s native interactive message format
Step 2: Property detail with action buttons
When the customer selects a property, the supervisor sends a rich detail card with key highlights, regulatory registration, and three action buttons:
eum.send_buttons(phone, body, [
{"id": "check_loan", "title": "Check Loan"},
{"id": "book_visit", "title": "Book Site Visit"},
{"id": "talk_sales", "title": "Talk to Sales"}
])
Step 3: Loan pre-approval with Strands Agents
When the customer chooses Check Loan and submits their tax identification number, the supervisor invokes the Strands agent pipeline. Four agents run sequentially on Amazon Bedrock, each using its specialized tools. The following log output shows the pipeline in action:
Running Strands agent pipeline for ID: ABCD****
Identity agent: True
Credit agent: score=782, offers=3
Fraud agent: low
Property agent: good
The customer receives a loan approval card with offers from multiple lending institutions, each with personalized interest rates based on the credit score returned by the credit agent. The full pipeline typically runs in under 10 seconds
Step 4: Site visit booking
The customer selects a time slot from an interactive list picker and receives a confirmation with relationship manager details and a location card
Demo implementation: India real estate market
This demo uses India-specific implementations: PAN validation for identity, CIBIL scores for credit (300-900 range), example bank offers with EMI in Rupees, RERA registration validation, and free cab pickup for site visits
To adapt this solution for another region, you replace the tool implementations with calls to your local tax authority, credit bureau, lending institutions, and property registry. The agent architecture, WhatsApp integration, and conversation flow remain unchanged
Deployment
To deploy the demo solution, run the following commands:
git clone https://github.com/aws-samples/sample-ai-powered-real-estate-agent.git
cd sample-ai-powered-real-estate-agent
./deploy.sh --env=demo
--phone-number-id <your-phone-number-id>
--business-number +14155552671
--region us-east-1
After deployment, in the AWS End User Messaging Social console, route incoming messages for your phone number ID to the SNS topic demo-whatshome-incoming-messages created by the stack
Test the solution
open demo/real-estate-landing.html
Select Enquire Now on any property card. WhatsApp opens at the configured business number with a prefilled message. Send the message and finish the loan pre-approval flow on WhatsApp
Sample conversation
The following images show how a customer interacts with the real estate AI assistant
The customer lands on WhatsApp with a predefined message from the website, and the AI assistant greets them with a welcome message
The customer selects the Check Loan option for one of the properties listed
The agents are invoked to verify the customer details and provide loan quotations
The customer books a site visit after selecting a suitable time slot
Clean up
To avoid ongoing charges, delete the re
sam delete --stack-name whatshome-demo --region us-east-1
Deleting the CloudFormation stack removes the Lambda functions, DynamoDB tables, Amazon SNS topics, Amazon Simple Queue Service (Amazon SQS) queue, AWS Key Management Service (AWS KMS) key, and AWS Identity and Access Management (IAM) roles. If you deployed the demo landing page to Amazon Simple Storage Service (Amazon S3) and Amazon CloudFront, delete those re
Conclusion
You can combine the Strands Agents SDK, Amazon Bedrock, AWS End User Messaging Social, and Lambda to build an end-to-end WhatsApp assistant. The multi-agent architecture has specialized agents for identity verification, credit scoring, fraud detection, and property valuation. This decomposition shows how you can break complex business workflows into focused AI agents that collaborate to deliver instant results.
The same pattern works for banking loan applications, insurance claims, healthcare appointments, and ecommerce order tracking
To get started, see the AWS End User Messaging Social documentation and the Strands Agents SDK on GitHub
About the authors
Related:
Digital Automation Training Benin: 5 Winning Skills Employers Demand in 2026
WhatsApp Marketing Automation Africa: 6 Dangerous Mistakes Brands Make in Nigeria
Want to learn this practically?
Join Justfine Infotech and build real digital skills in AI, automation, web development, digital marketing, office productivity, e-commerce, freelancing and cybersecurity.
Available Programmes:
6 Weeks Certificate • 3 Months Professional Certificate • 6 Months Diploma • Full Professional Diploma
WhatsApp:
+229 01 57 57 99 15
+229 01 66 68 11 60
Source: aws.amazon.com



