{
  "format": "dataset-manifest/1",
  "slug": "property-transactions-hub",
  "version": 1,
  "seed": "property-transactions-hub:1",
  "spec": {
    "format": "dataset/1",
    "slug": "property-transactions-hub",
    "name": "Property Transactions Hub",
    "tagline": "Property sales, client inquiries, agent interactions, amenities, and maintenance requests from a real estate market.",
    "description": "The Property Transactions Hub is a synthetic dataset designed to model the intricate relationships involved in real estate transactions. It captures the dynamic interplay of buyers, sellers, agents, properties, amenities, and maintenance requests. This dataset is not only useful for understanding how real estate transactions work but also serves as a valuable resource for practicing SQL queries and ORM seeding. The tables are structured to provide insights into the different aspects of real estate transactions, such as the properties listed, the clients interested in those properties, the agents facilitating the deals, and the amenities that enhance the property's value. Additionally, it tracks maintenance requests that arise post-sale, shedding light on client satisfaction and property upkeep. Each table is interconnected, allowing for complex queries that can answer questions about transaction volumes, popular amenities, and agent performance. The data is synthetic, ensuring it can be used for development and testing without privacy concerns.",
    "domain": "real-estate",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "real estate",
      "transactions",
      "properties",
      "clients",
      "agents",
      "amenities",
      "maintenance"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "properties": {
        "description": "This table holds information about properties available for sale, including their details and location.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each property."
          },
          "address": {
            "kind": "fullName",
            "description": "The full address of the property."
          },
          "city": {
            "kind": "city",
            "description": "City where the property is located.",
            "nullable": true
          },
          "price": {
            "kind": "decimal",
            "min": 100000,
            "max": 5000000,
            "scale": 2,
            "description": "Listing price of the property.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "under_contract",
                "sold"
              ]
            }
          },
          "listed_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the property was listed.",
            "nullable": true,
            "trend": "growing"
          },
          "status": {
            "kind": "enum",
            "values": [
              "available",
              "under_contract",
              "sold"
            ],
            "description": "Current status of the property."
          }
        }
      },
      "clients": {
        "description": "This table contains information about clients interested in purchasing properties.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each client."
          },
          "full_name": {
            "kind": "fullName",
            "description": "Full name of the client."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the client.",
            "nullable": true
          },
          "phone": {
            "kind": "phone",
            "description": "Contact phone number of the client.",
            "nullable": true
          },
          "city": {
            "kind": "city",
            "description": "City where the client resides."
          }
        }
      },
      "agents": {
        "description": "This table contains details about real estate agents facilitating the transactions.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each agent."
          },
          "full_name": {
            "kind": "fullName",
            "description": "Full name of the agent."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the agent."
          },
          "phone": {
            "kind": "phone",
            "description": "Contact phone number of the agent.",
            "nullable": true
          },
          "agency": {
            "kind": "company",
            "description": "Name of the agency the agent works for.",
            "nullable": true
          }
        }
      },
      "transactions": {
        "description": "This table records the details of each property transaction, linking clients, properties, and agents.",
        "rows": 250,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction."
          },
          "property_id": {
            "kind": "fk",
            "ref": "properties.id",
            "description": "Reference to the property being sold."
          },
          "client_id": {
            "kind": "fk",
            "ref": "clients.id",
            "description": "Reference to the client purchasing the property."
          },
          "agent_id": {
            "kind": "fk",
            "ref": "agents.id",
            "description": "Reference to the agent facilitating the transaction."
          },
          "transaction_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the transaction took place.",
            "trend": "seasonal"
          },
          "sale_price": {
            "kind": "decimal",
            "min": 100000,
            "max": 5000000,
            "scale": 2,
            "description": "Final sale price of the property."
          }
        }
      },
      "amenities": {
        "description": "This table lists the amenities available at each property, enhancing its appeal.",
        "rows": {
          "per": "properties",
          "via": "property_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each amenity."
          },
          "property_id": {
            "kind": "fk",
            "ref": "properties.id",
            "description": "Reference to the property that has this amenity."
          },
          "amenity_type": {
            "kind": "enum",
            "values": [
              "pool",
              "gym",
              "garage",
              "garden",
              "fireplace"
            ],
            "description": "Type of amenity available at the property."
          }
        }
      },
      "maintenance_requests": {
        "description": "This table tracks maintenance requests made by clients for properties after the sale.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each maintenance request."
          },
          "property_id": {
            "kind": "fk",
            "ref": "properties.id",
            "description": "Reference to the property needing maintenance."
          },
          "request_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the maintenance request was made."
          },
          "issue": {
            "kind": "words",
            "min": 10,
            "max": 200,
            "description": "Description of the maintenance issue.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "in_progress",
                "completed"
              ]
            }
          },
          "status": {
            "kind": "enum",
            "values": [
              "pending",
              "in_progress",
              "completed"
            ],
            "description": "Current status of the maintenance request."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "nullable",
      "timestamped",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most popular amenities among buyers?",
      "Which properties have the highest transaction volumes?",
      "How do clients rate their satisfaction with maintenance responses?",
      "What trends can be observed in property prices over time?",
      "Which agents have the highest success rates in closing transactions?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Properties with Transactions",
        "sql": "SELECT p.address, t.transaction_date, t.sale_price FROM properties p JOIN transactions t ON p.id = t.property_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Transactions by City",
        "sql": "SELECT p.city, COUNT(t.id) as transaction_count FROM transactions t JOIN properties p ON t.property_id = p.id GROUP BY p.city;",
        "dialect": "postgres"
      },
      {
        "title": "Average Sale Price by Property Status",
        "sql": "SELECT p.status, AVG(t.sale_price) as average_price FROM transactions t JOIN properties p ON t.property_id = p.id GROUP BY p.status;",
        "dialect": "postgres"
      },
      {
        "title": "Maintenance Requests by Issue Type",
        "sql": "SELECT issue, COUNT(*) as request_count FROM maintenance_requests GROUP BY issue;",
        "dialect": "postgres"
      },
      {
        "title": "Agent Performance Over Time",
        "sql": "SELECT a.full_name, COUNT(t.id) as total_transactions FROM transactions t JOIN agents a ON t.agent_id = a.id GROUP BY a.full_name ORDER BY total_transactions DESC;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Real Estate Analytics",
        "body": "Real estate analysts can use this dataset to explore trends in property sales, analyze the impact of amenities on property value, and assess agent performance over time. By querying the data, they can derive insights that inform strategic decisions for property management."
      },
      {
        "title": "Agent Training",
        "body": "Real estate agencies can utilize this dataset for training new agents. By simulating real transactions and client interactions, agents can practice their skills in a risk-free environment, gaining valuable experience in handling various client needs and property types."
      },
      {
        "title": "Market Research",
        "body": "Market researchers can leverage this dataset to study buyer preferences and demographic trends in real estate. By analyzing client and property data, they can identify emerging market opportunities and provide recommendations to real estate developers."
      },
      {
        "title": "Development of Real Estate Applications",
        "body": "Software developers can use this dataset to test and seed their real estate management applications. By populating their applications with realistic data, they can ensure their systems handle various scenarios effectively, from listing properties to managing client and agent interactions."
      }
    ]
  },
  "counts": {
    "agents": 100,
    "clients": 150,
    "properties": 200,
    "amenities": 439,
    "maintenance_requests": 200,
    "transactions": 250
  },
  "stats": {
    "properties": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "address": {
          "nulls": 0,
          "distinct": 199,
          "min": "Alice Almeida",
          "max": "Zoe Walker"
        },
        "city": {
          "nulls": 16,
          "distinct": 61,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "price": {
          "nulls": 71,
          "distinct": 129,
          "min": 147621.02,
          "max": 4865239.64
        },
        "listed_date": {
          "nulls": 19,
          "distinct": 168,
          "min": "2020-02-13",
          "max": "2023-12-22"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "available",
          "max": "under_contract"
        }
      }
    },
    "clients": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "full_name": {
          "nulls": 0,
          "distinct": 148,
          "min": "Alice Brown",
          "max": "Zoe Singh"
        },
        "email": {
          "nulls": 20,
          "distinct": 130
        },
        "phone": {
          "nulls": 11,
          "distinct": 137
        },
        "city": {
          "nulls": 0,
          "distinct": 57,
          "min": "Amsterdam",
          "max": "Zurich"
        }
      }
    },
    "agents": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "full_name": {
          "nulls": 0,
          "distinct": 98,
          "min": "Alice Kumar",
          "max": "Zara Dubois"
        },
        "email": {
          "nulls": 0,
          "distinct": 99
        },
        "phone": {
          "nulls": 6,
          "distinct": 92
        },
        "agency": {
          "nulls": 13,
          "distinct": 77,
          "min": "Acme Partners",
          "max": "Willow Labs"
        }
      }
    },
    "transactions": {
      "rows": 250,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 250
        },
        "property_id": {
          "nulls": 0,
          "distinct": 139,
          "min": 1,
          "max": 200
        },
        "client_id": {
          "nulls": 0,
          "distinct": 131,
          "min": 1,
          "max": 150
        },
        "agent_id": {
          "nulls": 0,
          "distinct": 93,
          "min": 1,
          "max": 100
        },
        "transaction_date": {
          "nulls": 0,
          "distinct": 238,
          "min": "2020-01-02",
          "max": "2023-12-28"
        },
        "sale_price": {
          "nulls": 0,
          "distinct": 250,
          "min": 129879.17,
          "max": 4977204.19
        }
      }
    },
    "amenities": {
      "rows": 439,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 439,
          "min": 1,
          "max": 439
        },
        "property_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "amenity_type": {
          "nulls": 0,
          "distinct": 5,
          "min": "fireplace",
          "max": "pool"
        }
      }
    },
    "maintenance_requests": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "property_id": {
          "nulls": 0,
          "distinct": 129,
          "min": 1,
          "max": 200
        },
        "request_date": {
          "nulls": 0,
          "distinct": 187,
          "min": "2020-01-10",
          "max": "2023-12-29"
        },
        "issue": {
          "nulls": 66,
          "distinct": 134
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "completed",
          "max": "pending"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/agents.csv",
      "format": "csv",
      "table": "agents",
      "key": "datasets/property-transactions-hub/v1/csv/agents.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/agents.csv",
      "bytes": 6831,
      "sha256": "1acd8f64d2665ed51117fb73e7ea5bf01b7878ec85cce9a944f8a8825edd2670",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/clients.csv",
      "format": "csv",
      "table": "clients",
      "key": "datasets/property-transactions-hub/v1/csv/clients.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/clients.csv",
      "bytes": 8987,
      "sha256": "68d8c87085e2cf43c058850f8676c8edd2c1b90c68e03fd0358d42314af13c27",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/properties.csv",
      "format": "csv",
      "table": "properties",
      "key": "datasets/property-transactions-hub/v1/csv/properties.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/properties.csv",
      "bytes": 10395,
      "sha256": "ada96832e894caed4981c0d5f15522ff58aa9b8fa32503d0cf849bddf69774a6",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/amenities.csv",
      "format": "csv",
      "table": "amenities",
      "key": "datasets/property-transactions-hub/v1/csv/amenities.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/amenities.csv",
      "bytes": 6535,
      "sha256": "36ba15b4839f284f27f63df38e23a263193aa75ab38af893d11311afbae4f966",
      "rows": 439,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/maintenance_requests.csv",
      "format": "csv",
      "table": "maintenance_requests",
      "key": "datasets/property-transactions-hub/v1/csv/maintenance_requests.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/maintenance_requests.csv",
      "bytes": 102331,
      "sha256": "299cd6145dd53ee476069b1ead1a7c8954769b861673f39a331709479172a158",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transactions.csv",
      "format": "csv",
      "table": "transactions",
      "key": "datasets/property-transactions-hub/v1/csv/transactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/csv/transactions.csv",
      "bytes": 9086,
      "sha256": "ba1c32d72688948e002529ecd6a09a528190add4216bc8d51f15b7741167957e",
      "rows": 250,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "property-transactions-hub.json",
      "format": "json",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/property-transactions-hub.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/property-transactions-hub.json",
      "bytes": 280073,
      "sha256": "613cc092f21da5317b348d7c18132699eb1240162e57a144ea3bd443fba3b99d",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/sql/postgres.sql",
      "bytes": 167343,
      "sha256": "9f6c4be13ecb0452af4541479ba68c761720238b9d0d7c94f1061217582a6a71",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/sql/mysql.sql",
      "bytes": 166652,
      "sha256": "449922c64161cf5a3dc5b00a91283d3100ad8c27e0ba9b9c5914a3396fd3023d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/sql/mssql.sql",
      "bytes": 170002,
      "sha256": "787b0afce3eef2168522843d2db171e6db6c23852bd4492d8fd69b0a512ab054",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/sql/sqlite.sql",
      "bytes": 166325,
      "sha256": "47d44f2b3fb380eda5585b304ccadbc3094ada67d573f29b2351c28a1a7d90d8",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/prisma/seed.ts",
      "bytes": 237084,
      "sha256": "76b0a523f70993e9f19e028fddcc608d89f604d85032076445c0641e290b34d1",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/property-transactions-hub/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/property-transactions-hub/v1/django/fixtures.json",
      "bytes": 338540,
      "sha256": "5a3cbe23f065c451a156b5eca2aabd4f75d8a642e9d214eaffbbac9734a91ce9",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767560438,
  "updatedAt": 1788767560438
}
