{"id":3300,"date":"2026-07-18T11:48:29","date_gmt":"2026-07-18T11:48:29","guid":{"rendered":"https:\/\/justfineinfotech.com\/build-an-ai-powered-real-estate-assistant-on-whatsapp-using-strands-agents-sdk-and-aws-end-user-messaging-amazon-web-services\/"},"modified":"2026-07-18T11:48:29","modified_gmt":"2026-07-18T11:48:29","slug":"build-an-ai-powered-real-estate-assistant-on-whatsapp-using-strands-agents-sdk-and-aws-end-user-messaging-amazon-web-services","status":"publish","type":"post","link":"https:\/\/justfineinfotech.com\/fr\/build-an-ai-powered-real-estate-assistant-on-whatsapp-using-strands-agents-sdk-and-aws-end-user-messaging-amazon-web-services\/","title":{"rendered":"Build an AI-powered real estate assistant on WhatsApp using Strands Agents SDK and AWS End User Messaging | Amazon Web Services"},"content":{"rendered":"<p>Build an AI-powered real estate assistant on WhatsApp using Strands Agents SDK and AWS End User Messaging<\/p>\n<p>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 <a href=\"https:\/\/github.com\/strands-agents\/sdk-python\" rel=\"nofollow noopener\" target=\"_blank\">Strands Agents SDK<\/a> 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.<\/p>\n<h2>Prerequisites<\/h2>\n<p>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\u2019s ID in AWS End User Messaging Social<\/p>\n<p>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<\/p>\n<p>AWS Serverless Application Model (AWS SAM) CLI is required to deploy the demo solution. For installation instructions, see the AWS SAM CLI installation guide<\/p>\n<h2>Overview of solution<\/h2>\n<p>The architecture uses four AI agents built with the Strands Agents SDK. Each agent handles a <a href=\"https:\/\/justfineinfotech.com\/ai-seo-writing-thats-specific-may-get-cited-more\/\" title=\"AI SEO: Writing That&amp;apos;s Specific May Get Cited More\">specific<\/a> 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.<\/p>\n<p>For this post, we use a demo landing page to simulate the \u201cEnquire Now\u201d 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<\/p>\n<p>The following diagram illustrates the solution architecture:<\/p>\n<h3>Strands Agents SDK \u2014 multi-agent pipeline<\/h3>\n<p>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<\/p>\n<p>This solution uses four specialized agents, each with its own tools:<\/p>\n<ul>\n<li>Identity Agent \u2013 uses the <code>verify_identity<\/code> tool to validate the customer\u2019s tax identification number.<\/li>\n<li>Credit Scoring Agent \u2013 uses <code>check_credit_score<\/code> and <code>get_loan_offers<\/code> tools to assess creditworthiness and generate lending offers.<\/li>\n<li>Fraud Detection Agent \u2013 uses <code>check_fraud_risk<\/code> to evaluate application risk.<\/li>\n<li>Property Valuation Agent \u2013 uses <code>validate_property<\/code> to check regulatory registration and market value.<\/li>\n<\/ul>\n<p>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<\/p>\n<pre><code>from strands import Agent, tool\nfrom strands.models.bedrock import BedrockModel\n\nMODEL_ID = \"amazon.nova-lite-v1:0\"\n\ndef get_model():\n    return BedrockModel(model_id=MODEL_ID, region_name=\"us-east-1\")\n\n@tool\ndef verify_identity(tax_id: str) -&gt; dict:\n    \"\"\"Verify customer identity using their tax identification number.\n    Adapt for your region: PAN (India), SSN (US), NIN (UK), TFN (Australia).\"\"\"\n    # Call your regional tax authority API here\n    return {\"tax_id\": tax_id, \"valid\": True,\n            \"holder_name\": \"Customer\", \"status\": \"Active\"}\n\n@tool\ndef check_credit_score(tax_id: str) -&gt; dict:\n    \"\"\"Fetch customer credit score from a credit bureau.\n    Adapt for your region: CIBIL (India), FICO (US), Experian (Global).\"\"\"\n    # Call your regional credit bureau API here\n    return {\"credit_score\": 782, \"risk_category\": \"Low\"}\n\n@tool\ndef get_loan_offers(property_price: int, credit_score: int) -&gt; dict:\n    \"\"\"Get mortgage offers from partner lending institutions.\n    Adapt for your region's banks and lending regulations.\"\"\"\n    # Call your partner bank APIs here\n    return {\"offers\": [...]}\n\n@tool\ndef validate_property(name: str, registration_id: str, price: int) -&gt; dict:\n    \"\"\"Validate property registration with the local regulatory authority.\n    Adapt for your region: RERA (India), Land Registry (UK), MLS (US).\"\"\"\n    # Call your regional property registry API here\n    return {\"registration_valid\": True, \"investment_rating\": \"good\"}<\/code><\/pre>\n<p>You then orchestrate the agents in a pipeline:<\/p>\n<pre><code>def run_full_pipeline(tax_id, phone, project):\n    # Agent 1: Identity Verification\n    agent = Agent(\n        model=get_model(),\n        system_prompt=\"You are an Identity Verification Agent. \"\n                      \"Use verify_identity to check the customer's tax ID.\",\n        tools=[verify_identity],\n        callback_handler=None\n    )\n    identity = agent(f\"Verify tax ID: {tax_id}\")\n\n    # Agent 2: Credit Scoring + Loan Offers\n    agent = Agent(\n        model=get_model(),\n        system_prompt=\"You are a Credit Scoring Agent. \"\n                      \"Use check_credit_score then get_loan_offers.\",\n        tools=[check_credit_score, get_loan_offers],\n        callback_handler=None\n    )\n    credit = agent(f\"Check credit for {tax_id}, \"\n                   f\"get offers for price {project['price']}\")\n\n    # Agent 3: Fraud Detection\n    # Agent 4: Property Valuation\n    # ... similar pattern\n    return consolidated_results<\/code><\/pre>\n<p>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<\/p>\n<h3>Message routing with Amazon SNS<\/h3>\n<p>An SNS topic receives events from AWS End User Messaging Social whenever customers send WhatsApp messages<\/p>\n<h3>Webhook handler \u2013 AWS Lambda<\/h3>\n<p>The webhook handler Lambda function parses the EUM Social event envelope, extracts the WhatsApp message payload, and routes it based on message type<\/p>\n<h3>Supervisor agent \u2013 AWS Lambda with Strands Agents<\/h3>\n<p>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<\/p>\n<p>The supervisor sends interactive WhatsApp messages using the EUM Social API:<\/p>\n<pre><code>def send_list(self, to_phone, body, button_text, sections):\n    payload = {\n        \"messaging_product\": \"whatsapp\",\n        \"to\": to_phone,\n        \"type\": \"interactive\",\n        \"interactive\": {\n            \"type\": \"list\",\n            \"body\": {\"text\": body},\n            \"action\": {\n                \"button\": button_text,\n                \"sections\": sections\n            }\n        }\n    }\n    response = self.client.send_whatsapp_message(\n        originationPhoneNumberId=self.phone_number_id,\n        message=json.dumps(payload).encode('utf-8'),\n        metaApiVersion='v21.0'\n    )<\/code><\/pre>\n<h3>Lambda Layer for Strands Agents<\/h3>\n<p>The Strands Agents SDK provides an official Lambda Layer that includes all required dependencies pre-built for the Lambda runtime<\/p>\n<h3>Session state \u2013 Amazon DynamoDB<\/h3>\n<p>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<\/p>\n<h2>Conversation flow<\/h2>\n<p>The customer journey unfolds across four steps in WhatsApp<\/p>\n<h3>Step 1: Property discovery<\/h3>\n<p>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\u2019s native interactive message format<\/p>\n<h3>Step 2: Property detail with action buttons<\/h3>\n<p>When the customer selects a property, the supervisor sends a rich detail card with key highlights, regulatory registration, and three action buttons:<\/p>\n<pre><code>eum.send_buttons(phone, body, [\n    {\"id\": \"check_loan\", \"title\": \"Check Loan\"},\n    {\"id\": \"book_visit\", \"title\": \"Book Site Visit\"},\n    {\"id\": \"talk_sales\", \"title\": \"Talk to Sales\"}\n])<\/code><\/pre>\n<h3>Step 3: Loan pre-approval with Strands Agents<\/h3>\n<p>When the customer chooses <strong>Check Loan<\/strong> 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:<\/p>\n<pre><code>Running Strands agent pipeline for ID: ABCD****\nIdentity agent: True\nCredit agent: score=782, offers=3\nFraud agent: low\nProperty agent: good<\/code><\/pre>\n<p>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<\/p>\n<h3>Step 4: Site visit booking<\/h3>\n<p>The customer selects a time slot from an interactive list picker and receives a confirmation with relationship manager details and a location card<\/p>\n<h2>Demo implementation: India real estate market<\/h2>\n<p>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<\/p>\n<p>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<\/p>\n<h2>Deployment<\/h2>\n<p>To deploy the demo solution, run the following commands:<\/p>\n<pre><code>git clone https:\/\/github.com\/aws-samples\/sample-ai-powered-real-estate-agent.git\ncd sample-ai-powered-real-estate-agent\n.\/deploy.sh --env=demo \n    --phone-number-id &lt;your-phone-number-id&gt; \n    --business-number +14155552671 \n    --region us-east-1<\/code><\/pre>\n<p>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<\/p>\n<h3>Test the solution<\/h3>\n<pre><code>open demo\/real-estate-landing.html<\/code><\/pre>\n<p>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<\/p>\n<h2>Sample conversation<\/h2>\n<p>The following images show how a customer interacts with the real estate AI assistant<\/p>\n<p>The customer lands on WhatsApp with a predefined message from the website, and the AI assistant greets them with a welcome message<\/p>\n<p>The customer selects the Check Loan option for one of the properties listed<\/p>\n<p>The agents are invoked to verify the customer details and provide loan quotations<\/p>\n<p>The customer books a site visit after selecting a suitable time slot<\/p>\n<h2>Clean up<\/h2>\n<p>To avoid ongoing charges, delete the re<\/p>\n<pre><code>sam delete --stack-name whatshome-demo --region us-east-1<\/code><\/pre>\n<p>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<\/p>\n<h2>Conclusion<\/h2>\n<p>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.<\/p>\n<p>The same pattern works for banking loan applications, insurance claims, healthcare appointments, and <a href=\"https:\/\/justfineinfotech.com\/the-environmental-impact-of-e-commerce-techtarget\/\" title=\"The environmental impact of e-commerce | TechTarget\">ecommerce<\/a> order tracking<\/p>\n<p>To get started, see the AWS End User Messaging Social documentation and the Strands Agents SDK on GitHub<\/p>\n<h2>About the authors<\/h2>\n<div style=\"clear:both;margin:30px 0 15px 0\">\n<p>\n    <strong>Related:<\/strong><br \/>\n    <a href=\"https:\/\/yoursite.com\/automation-training-benin\/\" title=\"Digital Automation Training Benin: 5 Winning Skills Employers Demand in 2026\" target=\"_blank\" rel=\"noopener\"><br \/>\n      Digital Automation Training Benin: 5 Winning Skills Employers Demand in 2026<br \/>\n    <\/a>\n  <\/p>\n<p>\n    <a href=\"https:\/\/yoursite.com\/automation-africa\/\" title=\"WhatsApp Marketing Automation Africa: 6 Dangerous Mistakes Brands Make in Nigeria\" target=\"_blank\" rel=\"noopener\"><br \/>\n      WhatsApp Marketing Automation Africa: 6 Dangerous Mistakes Brands Make in Nigeria<br \/>\n    <\/a>\n  <\/p>\n<\/div>\n<div style=\"clear:both;margin:30px 0;padding:25px;background:#f8f9fc;border:1px solid #ddd;border-radius:8px;text-align:center\">\n<h3>Want to learn this practically?<\/h3>\n<p>Join <strong>Justfine Infotech<\/strong> and build real digital skills in AI, automation, web development, digital marketing, office productivity, e-commerce, freelancing and <a href=\"https:\/\/justfineinfotech.com\/resecurity-partners-with-sapphire-consulting-to-accelerate-secure-code-engineering-and-cybersecurity-practices\/\" title=\"Resecurity partners with Sapphire Consulting to accelerate secure code engineering and cybersecurity practices\">cybersecurity<\/a>.<\/p>\n<p><strong>Available Programmes:<\/strong><br \/>\n  6 Weeks Certificate \u2022 3 Months Professional Certificate \u2022 6 Months Diploma \u2022 Full Professional Diploma<\/p>\n<p><strong>WhatsApp:<\/strong><br \/>\n  +229 01 57 57 99 15<br \/>\n  +229 01 66 68 11 60<\/p>\n<p><a href=\"https:\/\/api.whatsapp.com\/send?phone=2348132690270&amp;text=Hello\" target=\"_blank\" rel=\"noopener\">Enroll Now<\/a><\/p>\n<\/div>\n<p class=\"ani-source\">Source: <a href=\"https:\/\/aws.amazon.com\/blogs\/messaging-and-targeting\/build-an-ai-powered-real-estate-assistant-on-whatsapp-using-strands-agents-sdk-and-aws-end-user-messaging\/\" target=\"_blank\" rel=\"nofollow noopener\">aws.amazon.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Build an AI-powered real estate assistant on WhatsApp using Strands Agents SDK and AWS End User Messaging<\/p>","protected":false},"author":1,"featured_media":3302,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[65],"tags":[197,568,169,413,219],"class_list":["post-3300","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whatsapp-business-sme-growth","tag-aipowered","tag-assistant","tag-build","tag-estate","tag-real"],"_links":{"self":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/3300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/comments?post=3300"}],"version-history":[{"count":1,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/3300\/revisions"}],"predecessor-version":[{"id":3301,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/3300\/revisions\/3301"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/media\/3302"}],"wp:attachment":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/media?parent=3300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/categories?post=3300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/tags?post=3300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}