{
  "format": "dataset-manifest/1",
  "slug": "travel-budget-optimizer",
  "version": 2,
  "seed": "travel-budget-optimizer:1",
  "spec": {
    "format": "dataset/1",
    "slug": "travel-budget-optimizer",
    "name": "Travel Expense Tracker",
    "tagline": "Travel expenses including transport, food, accommodation and activities from frequent journeys.",
    "description": "Travelers plan journeys filled with various expenses and experiences, balancing their budgets against memorable activities. This dataset revolves around key aspects of trips such as local transport options, food spending, and accommodation costs, along with miscellaneous expenses for activities and shopping. With frequent trips generating bulk data, travelers create many entries for routine food expenses, while certain items like souvenirs are occasionally rare, resulting in an interesting mix of common and unique expenditure patterns. This synthetic dataset enables users to practice SQL queries and ORM seeding, making it a valuable resource for developers and analysts alike. The table is designed to provide insights into spending habits, budget management, and the overall cost of travel, allowing users to create comprehensive financial reports and analyses.",
    "domain": "travel",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "travel",
      "expenses",
      "budget",
      "analysis",
      "food",
      "accommodation",
      "transport",
      "activities",
      "shopping"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "travel_expenses": {
        "description": "Each row represents an individual expense incurred during a trip, detailing the type of expense, amount spent, and the date of the transaction. This table allows for analysis of spending patterns across various categories such as food, transport, and accommodations.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each expense entry."
          },
          "trip_name": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "The name of the trip or destination.",
            "pool": [
              "adventure",
              "escape",
              "journey",
              "exploration",
              "expedition",
              "retreat",
              "getaway",
              "voyage",
              "odyssey",
              "tour",
              "safari",
              "holiday",
              "quest",
              "sojourn",
              "trip",
              "cruise",
              "pilgrimage",
              "roadtrip",
              "excursion",
              "destination",
              "paradise",
              "sanctuary",
              "resort",
              "landmark",
              "site",
              "locale",
              "attraction",
              "experience",
              "wanderlust",
              "travels",
              "scenic",
              "explore",
              "discover",
              "unwind",
              "relaxation",
              "journeys",
              "escapade",
              "landscape",
              "view",
              "retreats",
              "explorations",
              "getaways",
              "vacation",
              "expeditions",
              "trips",
              "sightseeing",
              "adventures",
              "escapes",
              "pilgrimages",
              "tours",
              "safaris",
              "holidays",
              "quests",
              "sojourns",
              "cruises",
              "roadtrips",
              "excursions",
              "destinations"
            ]
          },
          "expense_type": {
            "kind": "enum",
            "values": [
              "food",
              "transport",
              "accommodation",
              "activities",
              "shopping"
            ],
            "weights": [
              0.4,
              0.2,
              0.2,
              0.1,
              0.1
            ],
            "description": "Category of the expense."
          },
          "amount": {
            "kind": "decimal",
            "min": 5,
            "max": 5000,
            "scale": 2,
            "distribution": "heavy-tail",
            "description": "Amount spent on the expense, in the local currency."
          },
          "expense_date": {
            "kind": "date",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "Date when the expense was incurred.",
            "trend": "growing"
          },
          "notes": {
            "kind": "sentence",
            "max": 200,
            "nullable": true,
            "description": "Optional notes about the expense, such as details or comments."
          }
        }
      }
    },
    "structure": "single-table",
    "traits": [
      "monetary",
      "free-text",
      "nullable"
    ],
    "analysisQuestions": [
      "What are the most common types of expenses incurred during trips?",
      "How does spending vary by expense type across different trips?",
      "What is the average amount spent on food compared to accommodation?",
      "Are there specific times of the year when expenses are higher?",
      "What percentage of the budget is allocated to activities and experiences?"
    ],
    "suggestedQueries": [
      {
        "title": "Total expenses by type",
        "sql": "SELECT expense_type, SUM(amount) AS total_spent FROM travel_expenses GROUP BY expense_type;",
        "dialect": "postgres"
      },
      {
        "title": "Average expense per trip",
        "sql": "SELECT trip_name, AVG(amount) AS average_expense FROM travel_expenses GROUP BY trip_name;",
        "dialect": "postgres"
      },
      {
        "title": "Monthly spending trends",
        "sql": "SELECT DATE_TRUNC('month', expense_date) AS month, SUM(amount) AS total_spent FROM travel_expenses GROUP BY month ORDER BY month;",
        "dialect": "postgres"
      },
      {
        "title": "Expenses with notes",
        "sql": "SELECT * FROM travel_expenses WHERE notes IS NOT NULL;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Budget Management App Development",
        "body": "Developers creating a travel budget management app can use this dataset to test features that track and categorize travel expenses. The dataset allows them to simulate user interactions, ensuring the app functions correctly with various types of expenses and provides insights into spending habits."
      },
      {
        "title": "Financial Analysis for Travel Agencies",
        "body": "Travel agencies can utilize this dataset to analyze customer spending patterns and preferences on trips. By understanding which expenses are most common and which categories consume the largest portions of budgets, agencies can tailor their offerings and marketing strategies to enhance customer satisfaction and loyalty."
      },
      {
        "title": "Personal Finance Tracking",
        "body": "Individuals interested in tracking their travel expenses can import this dataset into their personal finance tools. By doing so, they can practice analyzing their spending behaviors, comparing trips, and identifying areas where they can save money, ultimately leading to more informed financial decisions."
      }
    ]
  },
  "counts": {
    "travel_expenses": 500
  },
  "stats": {
    "travel_expenses": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "trip_name": {
          "nulls": 0,
          "distinct": 379
        },
        "expense_type": {
          "nulls": 0,
          "distinct": 5,
          "min": "accommodation",
          "max": "transport"
        },
        "amount": {
          "nulls": 0,
          "distinct": 491,
          "min": 5,
          "max": 4964.58
        },
        "expense_date": {
          "nulls": 0,
          "distinct": 347,
          "min": "2022-01-08",
          "max": "2023-12-31"
        },
        "notes": {
          "nulls": 43,
          "distinct": 453
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/travel_expenses.csv",
      "format": "csv",
      "table": "travel_expenses",
      "key": "datasets/travel-budget-optimizer/v2/csv/travel_expenses.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/csv/travel_expenses.csv",
      "bytes": 50341,
      "sha256": "47725885b0eaf5b2fb5d4b7f542af7dc05d7d78653d41b051de6dc0fd347ef97",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "travel-budget-optimizer.json",
      "format": "json",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/travel-budget-optimizer.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/travel-budget-optimizer.json",
      "bytes": 115676,
      "sha256": "50d7df559d5fed68495086728e5a471e150cbe66517b2d19fb589fffcc283d03",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/sql/postgres.sql",
      "bytes": 60688,
      "sha256": "1c0cdbb30604667c35de90c66f9b51f170ee4f07639f1f138b278db96643700d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/sql/mysql.sql",
      "bytes": 60575,
      "sha256": "7dc0dbbfa8a434c11ace6604a81fc4e6d7d5e53397469edf119ee191d8c60a19",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/sql/mssql.sql",
      "bytes": 62618,
      "sha256": "52dc9955641da23ee0647d51ef5f534e7c9d687b2f1f84cb857934aaeb21705e",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/sql/sqlite.sql",
      "bytes": 60544,
      "sha256": "b20a9ab3a572b2c076159de36ebd93da9c2f00381f80dde3a4d30aabeb468f9d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/prisma/seed.ts",
      "bytes": 95447,
      "sha256": "28380f5828bdcf908c588afafeb5b511a266aac6b7f862b0e7ca33cd17cd6787",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/travel-budget-optimizer/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-budget-optimizer/v2/django/fixtures.json",
      "bytes": 141199,
      "sha256": "c7504f225fe7e0560519e5cde44f3272b997708624dcaecaa353c136baa358f7",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788768803888,
  "updatedAt": 1788786526674
}
