{
  "format": "dataset-manifest/1",
  "slug": "wanderwise-insights",
  "version": 2,
  "seed": "wanderwise-insights:1",
  "spec": {
    "format": "dataset/1",
    "slug": "wanderwise-insights",
    "name": "WanderWise Insights",
    "tagline": "Your AI-powered companion for unforgettable travel experiences.",
    "description": "WanderWise Insights is a synthetic dataset designed to model the complexities of travel planning and execution. It focuses on the interactions travelers have with various aspects of their journeys, such as itineraries, accommodations, transportation, and expenses. The dataset captures the richness of travel behavior, allowing users to analyze common routes, popular destinations, and personal preferences, as well as how travelers adapt to changing circumstances during their trips. By providing a comprehensive view of travel dynamics, this dataset is ideal for practicing ETL pipelines and teaching data analysis techniques. Each table in the dataset relates to one another, creating a thorough framework for understanding how different travel components interact and influence one another. The data is synthetic, ensuring a safe and flexible environment for developers to experiment with without the concerns of real-world data privacy issues.",
    "domain": "travel",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "travel",
      "itineraries",
      "accommodation",
      "transportation",
      "expenses",
      "preferences",
      "analytics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "travelers": {
        "description": "This table contains information about travelers, including their personal details and preferences. Each traveler is linked to multiple itineraries.",
        "rows": 200,
        "columns": {
          "traveler_id": {
            "kind": "pk",
            "description": "Unique identifier for each traveler."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The traveler's full name."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "The traveler's email address."
          },
          "preferences": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Travel preferences such as preferred destinations or activities.",
            "nullable": true,
            "pool": [
              "beach",
              "mountain",
              "adventure",
              "culture",
              "relaxation",
              "sightseeing",
              "food",
              "nature",
              "historical",
              "urban",
              "luxury",
              "budget",
              "family",
              "romantic",
              "solo",
              "cruise",
              "wellness",
              "wildlife",
              "roadtrip",
              "festival"
            ]
          }
        }
      },
      "itineraries": {
        "description": "Itineraries are linked to travelers and contain details about each travel plan. An itinerary can have multiple transportation and accommodation entries.",
        "rows": 400,
        "via": "traveler_id",
        "columns": {
          "itinerary_id": {
            "kind": "pk",
            "description": "Unique identifier for each itinerary."
          },
          "traveler_id": {
            "kind": "fk",
            "ref": "travelers.traveler_id",
            "description": "References the traveler who created this itinerary."
          },
          "start_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The start date of the itinerary.",
            "trend": "growing"
          },
          "end_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The end date of the itinerary.",
            "trend": "growing"
          }
        }
      },
      "transportation": {
        "description": "Transportation entries linked to itineraries that detail how travelers move from one location to another.",
        "rows": 300,
        "via": "itinerary_id",
        "columns": {
          "transportation_id": {
            "kind": "pk",
            "description": "Unique identifier for each transportation entry."
          },
          "itinerary_id": {
            "kind": "fk",
            "ref": "itineraries.itinerary_id",
            "description": "References the itinerary associated with this transportation."
          },
          "departure_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The date of departure for this transportation.",
            "nullable": true,
            "when": {
              "column": "mode",
              "in": [
                "bus",
                "train",
                "flight"
              ]
            },
            "trend": "growing"
          },
          "mode": {
            "kind": "enum",
            "values": [
              "car",
              "bus",
              "train",
              "flight"
            ],
            "description": "The mode of transportation used.",
            "weights": [
              6,
              2,
              1,
              1
            ]
          }
        }
      },
      "accommodations": {
        "description": "This table contains information about accommodations linked to itineraries. Each accommodation is related to a specific itinerary.",
        "rows": 250,
        "via": "itinerary_id",
        "columns": {
          "accommodation_id": {
            "kind": "pk",
            "description": "Unique identifier for each accommodation entry."
          },
          "itinerary_id": {
            "kind": "fk",
            "ref": "itineraries.itinerary_id",
            "description": "References the itinerary associated with this accommodation."
          },
          "hotel_name": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "The name of the hotel or accommodation.",
            "nullable": true,
            "pool": [
              "inn",
              "resort",
              "suite",
              "lodge",
              "motel",
              "hotel",
              "palace",
              "villa",
              "hostel",
              "retreat",
              "chalet",
              "tower",
              "sanctuary",
              "oasis",
              "haven",
              "cottage",
              "establishment",
              "bistro",
              "guesthouse",
              "spa"
            ]
          },
          "check_in_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The check-in date for the accommodation.",
            "nullable": true,
            "trend": "growing"
          },
          "check_out_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The check-out date for the accommodation.",
            "nullable": true,
            "trend": "growing"
          }
        }
      },
      "expenses": {
        "description": "Expenses related to each itinerary, providing insights into budget management for travelers.",
        "rows": 500,
        "via": "itinerary_id",
        "columns": {
          "expense_id": {
            "kind": "pk",
            "description": "Unique identifier for each expense entry."
          },
          "itinerary_id": {
            "kind": "fk",
            "ref": "itineraries.itinerary_id",
            "description": "References the itinerary associated with this expense."
          },
          "amount": {
            "kind": "decimal",
            "min": 1,
            "max": 10000,
            "scale": 2,
            "description": "The amount spent on this expense.",
            "nullable": true,
            "distribution": "long-tail"
          },
          "date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "The date of the expense.",
            "nullable": true,
            "when": {
              "column": "category",
              "in": [
                "food",
                "transport",
                "entertainment"
              ]
            },
            "trend": "seasonal"
          },
          "category": {
            "kind": "enum",
            "values": [
              "food",
              "transport",
              "accommodation",
              "entertainment"
            ],
            "description": "The category of the expense.",
            "weights": [
              5,
              4,
              3,
              2
            ]
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "nullable",
      "timestamped",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most common modes of transportation chosen by travelers?",
      "How do accommodation choices vary based on travel duration?",
      "What is the average expense per category for different types of itineraries?",
      "Which travelers tend to exceed their budgets more frequently?",
      "What patterns emerge in travel preferences across different demographics?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Travelers and Itineraries",
        "sql": "SELECT t.full_name, i.start_date, i.end_date FROM travelers t JOIN itineraries i ON t.traveler_id = i.traveler_id;",
        "dialect": "postgres"
      },
      {
        "title": "Group Expenses by Category",
        "sql": "SELECT category, SUM(amount) AS total_expense FROM expenses GROUP BY category;",
        "dialect": "postgres"
      },
      {
        "title": "Average Expense per Traveler",
        "sql": "SELECT t.full_name, AVG(e.amount) AS avg_expense FROM travelers t JOIN itineraries i ON t.traveler_id = i.traveler_id JOIN expenses e ON i.itinerary_id = e.itinerary_id GROUP BY t.full_name;",
        "dialect": "postgres"
      },
      {
        "title": "Transportation Mode Counts",
        "sql": "SELECT mode, COUNT(*) AS count FROM transportation GROUP BY mode;",
        "dialect": "postgres"
      },
      {
        "title": "Transportation and Accommodation Overlap",
        "sql": "SELECT t.full_name, COUNT(DISTINCT tr.transportation_id) AS total_transportation, COUNT(DISTINCT a.accommodation_id) AS total_accommodation FROM travelers t JOIN itineraries i ON t.traveler_id = i.traveler_id LEFT JOIN transportation tr ON i.itinerary_id = tr.itinerary_id LEFT JOIN accommodations a ON i.itinerary_id = a.itinerary_id GROUP BY t.full_name;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Travel Agency Data Analytics",
        "body": "A travel agency can utilize this dataset to analyze customer preferences and create targeted marketing campaigns. By understanding traveler behaviors, agencies can tailor their services to meet the unique needs of different demographics, enhancing customer satisfaction and retention."
      },
      {
        "title": "Educational Purposes in Data Science",
        "body": "Instructors can use this dataset in data science courses to teach students about ETL processes and data analysis techniques. The diverse nature of the data allows students to practice extracting insights from complex relationships and developing data visualizations."
      },
      {
        "title": "Budget Management for Travelers",
        "body": "Travel bloggers and influencers can leverage this dataset to provide insights into budget management for trips. By analyzing expenses and accommodation choices, they can offer practical advice on how to save money while traveling without compromising on experiences."
      },
      {
        "title": "Real-time Travel Planning Apps",
        "body": "Developers can use this dataset to build and test real-time travel planning applications. By simulating various travel scenarios, they can evaluate how users respond to different itineraries, accommodations, and transportation options, refining their apps for better user engagement."
      }
    ]
  },
  "counts": {
    "travelers": 200,
    "itineraries": 400,
    "accommodations": 250,
    "expenses": 500,
    "transportation": 300
  },
  "stats": {
    "travelers": {
      "rows": 200,
      "columns": {
        "traveler_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 198,
          "min": "Alice Garcia",
          "max": "Zoe Shah"
        },
        "email": {
          "nulls": 0,
          "distinct": 199
        },
        "preferences": {
          "nulls": 16,
          "distinct": 135
        }
      }
    },
    "itineraries": {
      "rows": 400,
      "columns": {
        "itinerary_id": {
          "nulls": 0,
          "distinct": 400,
          "min": 1,
          "max": 400
        },
        "traveler_id": {
          "nulls": 0,
          "distinct": 166,
          "min": 1,
          "max": 200
        },
        "start_date": {
          "nulls": 0,
          "distinct": 242,
          "min": "2023-01-02",
          "max": "2023-12-31"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 222,
          "min": "2023-01-02",
          "max": "2023-12-31"
        }
      }
    },
    "transportation": {
      "rows": 300,
      "columns": {
        "transportation_id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "itinerary_id": {
          "nulls": 0,
          "distinct": 210,
          "min": 2,
          "max": 399
        },
        "departure_date": {
          "nulls": 176,
          "distinct": 99,
          "min": "2023-01-14",
          "max": "2023-12-24"
        },
        "mode": {
          "nulls": 0,
          "distinct": 4,
          "min": "bus",
          "max": "train"
        }
      }
    },
    "accommodations": {
      "rows": 250,
      "columns": {
        "accommodation_id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 250
        },
        "itinerary_id": {
          "nulls": 0,
          "distinct": 183,
          "min": 3,
          "max": 400
        },
        "hotel_name": {
          "nulls": 19,
          "distinct": 154
        },
        "check_in_date": {
          "nulls": 22,
          "distinct": 173,
          "min": "2023-01-03",
          "max": "2023-12-30"
        },
        "check_out_date": {
          "nulls": 26,
          "distinct": 171,
          "min": "2023-01-13",
          "max": "2023-12-30"
        }
      }
    },
    "expenses": {
      "rows": 500,
      "columns": {
        "expense_id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "itinerary_id": {
          "nulls": 0,
          "distinct": 282,
          "min": 1,
          "max": 399
        },
        "amount": {
          "nulls": 47,
          "distinct": 453,
          "min": 1,
          "max": 9919.14
        },
        "date": {
          "nulls": 99,
          "distinct": 229,
          "min": "2023-01-01",
          "max": "2023-12-31"
        },
        "category": {
          "nulls": 0,
          "distinct": 4,
          "min": "accommodation",
          "max": "transport"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/travelers.csv",
      "format": "csv",
      "table": "travelers",
      "key": "datasets/wanderwise-insights/v2/csv/travelers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/csv/travelers.csv",
      "bytes": 11096,
      "sha256": "885ca28cd2c108e7ce857e04ad4efa2b9a754bca9f6edcb8152120fd09ba58a2",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/itineraries.csv",
      "format": "csv",
      "table": "itineraries",
      "key": "datasets/wanderwise-insights/v2/csv/itineraries.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/csv/itineraries.csv",
      "bytes": 12127,
      "sha256": "4f0c0a3b252ed879985b84ad4487ac1a0955ff2e475583af6a747ee9b83d2c04",
      "rows": 400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/accommodations.csv",
      "format": "csv",
      "table": "accommodations",
      "key": "datasets/wanderwise-insights/v2/csv/accommodations.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/csv/accommodations.csv",
      "bytes": 10385,
      "sha256": "cf40b8d991502ebad3ba9f340148210416268c8fb29157632e51d274684013b0",
      "rows": 250,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/expenses.csv",
      "format": "csv",
      "table": "expenses",
      "key": "datasets/wanderwise-insights/v2/csv/expenses.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/csv/expenses.csv",
      "bytes": 17128,
      "sha256": "e649c62da29cdd448feda2fe98b2abbb3df1f34c0f8a2cd48448f42438b26dbc",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transportation.csv",
      "format": "csv",
      "table": "transportation",
      "key": "datasets/wanderwise-insights/v2/csv/transportation.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/csv/transportation.csv",
      "bytes": 5467,
      "sha256": "c08f227656190363bd2bc6ae8720f6e170a5fd262f9aef8a726d6fd7caa09f3f",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "wanderwise-insights.json",
      "format": "json",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/wanderwise-insights.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/wanderwise-insights.json",
      "bytes": 237362,
      "sha256": "542d421d33fdba4805e3177a8ee881458c66cd008447d4fc061aea85998e2320",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/sql/postgres.sql",
      "bytes": 83482,
      "sha256": "9b5b8025918df5059a3ae4cdaaf51e921dfeccbbf01f837f0ae206322cac3823",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/sql/mysql.sql",
      "bytes": 82791,
      "sha256": "20c394bfca6c9a1bc6be7740cd847e1f7e59f0b85f07924157e275d807ae5e06",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/sql/mssql.sql",
      "bytes": 86526,
      "sha256": "c23109932daaa87800b6d32b2971f03ebc579faef430baa730056d69c38f402d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/sql/sqlite.sql",
      "bytes": 82569,
      "sha256": "3683f941f8e8680d6968762d37fd24e389e1b8cc12ee4842b50a313bd61d4a82",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/prisma/seed.ts",
      "bytes": 187050,
      "sha256": "57e04d05993542813e7bc74bc0f577cb607b5409c987315b2149e8653fc391ee",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/wanderwise-insights/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/wanderwise-insights/v2/django/fixtures.json",
      "bytes": 292760,
      "sha256": "f939d79b6a0d240487ab652befdc135b7cec912e3fd0e520fe654c1763e4bbbb",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788734443791,
  "updatedAt": 1788786965343
}
