> ## Documentation Index
> Fetch the complete documentation index at: https://docs.swarms.world/llms.txt
> Use this file to discover all available pages before exploring further.

# Real Estate Swarm

> Real estate research, valuation, and deal-analysis swarm for residential and commercial properties.

The Real Estate Swarm is a multi-agent system designed to automate and streamline the entire real estate transaction workflow. From lead generation to property maintenance, this swarm orchestrates a series of specialized AI agents to handle various aspects of buying, selling, and managing properties.

## What it Does

The `RealEstateSwarm` operates as a **sequential workflow**, where each agent's output feeds into the next, ensuring a cohesive and comprehensive process. The swarm consists of the following agents:

1. **Lead Generation Agent (Alex)**: Identifies and qualifies potential real estate clients by gathering their property requirements, budget, preferred locations, and investment goals. This agent also uses the `exa_search` tool for initial lead information.
2. **Property Research Agent (Emma)**: Conducts in-depth research on properties matching client criteria and market trends. It leverages the `exa_search` tool to gather up-to-date information on local market trends, property values, investment potential, and neighborhood insights.
3. **Marketing Agent (Jack)**: Develops and executes marketing strategies to promote properties. This includes creating compelling listings, implementing digital marketing campaigns, and managing client interactions.
4. **Transaction Management Agent (Sophia)**: Handles all documentation, legal, and financial aspects of property transactions, ensuring compliance and smooth closing processes.
5. **Property Maintenance Agent (Michael)**: Manages property condition, oversees maintenance and repairs, and prepares properties for sale or rental, including staging and enhancing curb appeal.

## How to Set Up

To set up and run the Real Estate Swarm, follow these steps:

## Step 1: Setup and Installation

### Prerequisites

| Requirement          |
| -------------------- |
| Python 3.8 or higher |
| pip package manager  |

1. **Install dependencies:**
   Use the following command to download all dependencies.
   ```bash theme={null}
   # Install Swarms framework
   pip install swarms

   # Install environment and logging dependencies
   pip install python-dotenv loguru

   # Install HTTP client and tools
   pip install httpx swarms_tools
   ```
2. **Set up API Keys:**
   The `Property Research Agent` utilizes the `exa_search` tool, which requires an `EXA_API_KEY`.
   Create a `.env` file in the root directory of your project (or wherever your application loads environment variables) and add your API keys:
   ```
   EXA_API_KEY="YOUR_EXA_API_KEY"
   OPENAI_API_KEY="OPENAI_API_KEY"
   ```
   Replace `"YOUR_EXA_API_KEY"` & `"OPENAI_API_KEY"` with your actual API keys.

## Step 2: Running the Real Estate Swarm

```python theme={null}

from swarms import Agent, SequentialWorkflow
import http.client
import json

def get_properties(postal_code: str, min_price: int, max_price: int, limit: int = 1) -> str:
    """
    Fetches real estate properties from Realty-in-US API using given zipcode, min price, and max price.
    All other payload fields remain constant.

    Returns the property's data as a string (JSON-encoded).
    """

    payload_dict = {
        "limit": limit,
        "offset": 0,
        "postal_code": postal_code,
        "status": ["for_sale", "ready_to_build"],
        "sort": {"direction": "desc", "field": "list_date"},
        "price_min": min_price,
        "price_max": max_price
    }

    payload = json.dumps(payload_dict)

    conn = http.client.HTTPSConnection("realty-in-us.p.rapidapi.com")
    headers = {
        "x-rapidapi-key": "35ae958601msh5c0eae51c54f989p1463c4jsn098ec5be18b8",
        "x-rapidapi-host": "realty-in-us.p.rapidapi.com",
        "Content-Type": "application/json"
    }

    conn.request("POST", "/properties/v3/list", payload, headers)
    res = conn.getresponse()
    data = res.read()
    decoded = data.decode("utf-8")
    try:
        result_dict = json.loads(decoded)
    except Exception:
        return decoded
    props_data = (
        result_dict.get("data", {})
        .get("home_search", {})
        .get("results", [])
    )
    if not props_data:
        return json.dumps({"error": "No properties found for that query."})
    return json.dumps(props_data[:limit])


REQUIREMENTS_ANALYZER_PROMPT = """
You are the Requirements Analyzer Agent for Real Estate.
ROLE:
Extract and clarify requirements from user input to create optimized property search queries.
RESPONSIBILITIES:
- Engage with the user to understand:
  * Desired property types and features
  * Required amenities and specifications
  * Preferred locations (city/area/zip)
  * Price/budget range
  * Timeline and purchase situation
  * Additional constraints or priorities
- Analyze user responses to identify:
  * Key search terms and must-have features
  * Priority factors in selection
  * Deal-breakers or constraints
  * Missing or unclear information to be clarified
- Generate search strategies:
  * Formulate 3-5 targeted search queries based on user requirements

OUTPUT FORMAT:
Provide a comprehensive requirements analysis:
1. User Profile Summary:
   - Property types/requirements of interest
   - Key features and specifications
   - Location and budget preferences
   - Priority factors
2. Search Strategy:
   - 3-5 optimized search queries (plain language, suitable for next agent's use)
   - Rationale for each query
   - Expected property/result types
3. Clarifications Needed:
   - Questions to refine search
   - Any missing info
IMPORTANT:
- INCLUDE all user responses verbatim in your analysis.
- Format queries clearly for the next agent.
- Ask follow-up questions if requirements are unclear.
"""

PROPERTY_RESEARCH_PROMPT = """
You are the Property Research Agent for Real Estate.
ROLE:
Conduct in-depth research on properties that match client criteria and market trends.

TOOLS:
You have access to get_properties. Use get_properties to find up-to-date and relevant information about properties for sale. Use ALL search queries produced by the previous agent (REQUIREMENTS_ANALYZER) as arguments to get_properties.
RESPONSIBILITIES:
- Perform property research using get_properties:
  * Seek properties by each proposed query and shortlist promising results.
  * Analyze each result by price, location, features, and comparables.
  * Highlight market trends if apparent from results.
  * Assess investment or suitability potential.
- Structure and cite property search findings.

OUTPUT FORMAT:
Provide a structured property research report:
1. Shortlist of matching properties (show summaries of each from get_properties results)
2. Detailed property analysis for each option
3. Insights on price, area, trends
4. Investment or suitability assessment
5. Recommendations for client
INSTRUCTIONS:
- Always use get_properties for up-to-date listing info; do not fabricate.
- Clearly indicate which properties are found from which query.
"""

MARKETING_PROMPT = """
You are the Marketing Agent for Real Estate.
ROLE:
Develop and execute marketing strategies to promote properties and attract potential buyers.
RESPONSIBILITIES:
- Create compelling property listings:
  * Professional photography
  * Detailed property descriptions
  * Highlight unique selling points
- Implement digital marketing strategies:
  * Social media campaigns
  * Email marketing
  * Online property platforms
  * Targeted advertising
- Manage client interactions:
  * Respond to property inquiries
  * Schedule property viewings
  * Facilitate initial negotiations
OUTPUT FORMAT:
Provide a comprehensive marketing report:
1. Marketing strategy overview
2. Property listing details
3. Marketing channel performance
4. Client inquiry and viewing logs
5. Initial negotiation summaries
"""

TRANSACTION_MANAGEMENT_PROMPT = """
You are the Transaction Management Agent for Real Estate.
ROLE:
Handle all documentation, legal, and financial aspects of property transactions.
RESPONSIBILITIES:
- Manage transaction documentation:
  * Prepare purchase agreements
  * Coordinate legal paperwork
  * Ensure compliance with real estate regulations
- Facilitate transaction process:
  * Coordinate with attorneys
  * Liaise with lenders
  * Manage escrow processes
  * Coordinate property inspections
- Ensure smooth closing:
  * Verify all financial requirements
  * Coordinate final document signings
  * Manage fund transfers
OUTPUT FORMAT:
Provide a detailed transaction management report:
1. Transaction document status
2. Legal and financial coordination details
3. Inspection and verification logs
4. Closing process timeline
5. Recommendations for transaction completion
"""

PROPERTY_MAINTENANCE_PROMPT = """
You are the Property Maintenance Agent for Real Estate.
ROLE:
Manage property condition, maintenance, and preparation for sale or rental.
RESPONSIBILITIES:
- Conduct regular property inspections:
  * Assess property condition
  * Identify maintenance needs
  * Ensure safety standards
- Coordinate maintenance and repairs:
  * Hire and manage contractors
  * Oversee repair and renovation work
  * Manage landscaping and cleaning
- Prepare properties for market:
  * Stage properties
  * Enhance curb appeal
  * Recommend cost-effective improvements
OUTPUT FORMAT:
Provide a comprehensive property maintenance report:
1. Inspection findings
2. Maintenance and repair logs
3. Improvement recommendations
4. Property readiness status
5. Contractor and service provider details
"""

def main():
    user_requirements = """
    I'm looking for a spacious 3-bedroom apartment with modern amenities.
    - Price: $1,000,000 - $1,500,000
    - Location: Downtown Manhattan, Upper East Side
    - Investment: Long-term, high ROI preferred
    - Contact: john.doe@email.com, +1-555-123-4567
    - Timeline: Within the next 3 months
    - Financials: Pre-approved for mortgage
    """

    agents = [
        Agent(
            agent_name="Alex-Requirements-Analyzer",
            agent_description="Analyzes user property requirements and creates optimized property search queries.",
            system_prompt=REQUIREMENTS_ANALYZER_PROMPT,
            model_name="gpt-4.1",
            max_loops=1,
            temperature=0.7,
        ),
        Agent(
            agent_name="Emma-Property-Research",
            agent_description="Conducts comprehensive property search and market analysis.",
            system_prompt=PROPERTY_RESEARCH_PROMPT,
            model_name="gpt-4.1",
            max_loops=1,
            temperature=0.7,
            tools=[get_properties],
        ),
        Agent(
            agent_name="Jack-Marketing",
            agent_description="Develops and executes marketing strategies for properties.",
            system_prompt=MARKETING_PROMPT,
            model_name="gpt-4.1",
            max_loops=1,
            temperature=0.7,
        ),
        Agent(
            agent_name="Sophia-Transaction-Management",
            agent_description="Handles legal, financial, and document aspects of property transactions.",
            system_prompt=TRANSACTION_MANAGEMENT_PROMPT,
            model_name="gpt-4.1",
            max_loops=1,
            temperature=0.7,
        ),
        Agent(
            agent_name="Michael-Property-Maintenance",
            agent_description="Oversees property condition, maintenance, and market readiness.",
            system_prompt=PROPERTY_MAINTENANCE_PROMPT,
            model_name="gpt-4.1",
            max_loops=1,
            temperature=0.7,
        ),
    ]

    workflow = SequentialWorkflow(
        name="real-estate-sequential-workflow",
        agents=agents,
        max_loops=1,
        team_awareness=True,
    )

    workflow.run(user_requirements)

if __name__ == "__main__":
    main()

```

## How it Can Be Used for Real Estate

The Real Estate Swarm can be utilized for a variety of real estate tasks, providing an automated and efficient approach to complex workflows:

* **Automated Lead Qualification**: Automatically gather and assess potential client needs and financial readiness.
* **Comprehensive Property Analysis**: Rapidly research and generate detailed reports on properties and market trends using real-time web search capabilities.
* **Streamlined Marketing**: Develop and execute marketing strategies, including listing creation and social media campaigns.
* **Efficient Transaction Management**: Automate the handling of legal documents, financial coordination, and closing processes.
* **Proactive Property Maintenance**: Manage property upkeep and prepare assets for optimal market presentation.

By chaining these specialized agents, the Real Estate Swarm provides an end-to-end solution for real estate professionals, reducing manual effort and increasing operational efficiency.

## Contributing to Swarms

| Platform         | Link                                                                            | Description                           |
| ---------------- | ------------------------------------------------------------------------------- | ------------------------------------- |
| 📚 Documentation | [docs.swarms.world](https://docs.swarms.world)                                  | Official documentation and guides     |
| 📝 Blog          | [Medium](https://medium.com/@kyeg)                                              | Latest updates and technical articles |
| 💬 Discord       | [Join Discord](https://discord.gg/EamjgSaEQf)                                   | Live chat and community support       |
| 🐦 Twitter       | [@kyegomez](https://twitter.com/kyegomez)                                       | Latest news and announcements         |
| 👥 LinkedIn      | [The Swarm Corporation](https://www.linkedin.com/company/the-swarm-corporation) | Professional network and updates      |
| 📺 YouTube       | [Swarms Channel](https://www.youtube.com/channel/UC9yXyitkbU_WSy7bd_41SqQ)      | Tutorials and demos                   |
| 🎫 Events        | [Sign up here](https://lu.ma/swarms_calendar)                                   | Join our community events             |
