{
  "format": "dataset-manifest/1",
  "slug": "travel-expense-tracker",
  "version": 3,
  "seed": "travel-expense-tracker:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "travel-expense-tracker",
    "name": "Travel Expense Insights",
    "tagline": "Trips, expenses, transportation modes, activities, and reimbursements for corporate travel and agency operations.",
    "description": "Travel agencies or corporate travel departments coordinate journeys for clients or employees, meticulously managing everything from itineraries to budgeting. Each trip is an intricate tapestry woven with essential components such as accommodation, transportation, and activities. Clients expect seamless experiences, and the agencies need to track every detail to ensure satisfaction and efficiency. This involves careful planning and oversight of expenses, which include travel-related costs like lodging and meals, as well as unique entries for special activities or services that not every traveler will require.\n\nWithin the dataset, the 'trips' table holds the fundamental details of each journey, such as destinations and travel dates. This table connects to 'expenses', which captures the financial outlay associated with each trip, detailing costs for lodging, meals, and transportation. The 'transportation' table specifies the modes of travel selected for each trip, while the 'activities' table outlines the various planned events or excursions. Reimbursements are tracked in their own table, reflecting the requests clients or employees submit for expenses incurred during their travels. Lastly, the 'clients' table provides critical information about the individuals or organizations utilizing these travel services.\n\nThis dataset enables users to answer important questions regarding travel management, such as how expenses vary across different destinations, which activities are most popular among clients, or how transportation choices affect overall trip costs. Additionally, practitioners can analyze reimbursement patterns to identify potential areas for cost savings. It presents an excellent opportunity for those looking to sharpen their skills in handling and analyzing travel-related financial data. Notably, all information is synthetic, allowing for a realistic yet safe environment to practice data manipulation and analysis.",
    "domain": "travel",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "travel",
      "expenses",
      "itineraries",
      "reimbursements",
      "transportation",
      "analytics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "trips": {
        "description": "This table contains records of trips coordinated for clients or employees, linking to associated expenses and transportation options. Each trip has a unique identifier and details regarding the destination, client, and trip dates.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each trip."
          },
          "client_name": {
            "kind": "fullName",
            "description": "Full name of the client for whom the trip is organized."
          },
          "destination": {
            "kind": "city",
            "description": "Destination city for the trip."
          },
          "start_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Start date of the trip.",
            "trend": "growing"
          },
          "end_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "End date of the trip.",
            "trend": "growing"
          }
        }
      },
      "expenses": {
        "description": "This table records various expenses incurred during trips, linking back to the trips table. Each expense is categorized and associated with a specific trip, detailing amounts and descriptions.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each expense."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip to which this expense belongs."
          },
          "category": {
            "kind": "enum",
            "values": [
              "lodging",
              "meals",
              "transportation",
              "activities",
              "other"
            ],
            "description": "Category of the expense.",
            "weights": [
              5,
              4,
              3,
              2,
              1
            ]
          },
          "amount": {
            "kind": "decimal",
            "min": 10,
            "max": 5000,
            "scale": 2,
            "description": "Amount of the expense.",
            "nullable": true,
            "when": {
              "column": "category",
              "in": [
                "lodging",
                "meals",
                "transportation",
                "activities",
                "other"
              ]
            },
            "distribution": "long-tail"
          },
          "date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the expense was incurred.",
            "trend": "seasonal"
          },
          "description": {
            "kind": "sentence",
            "max": 200,
            "description": "Description of the expense.",
            "nullable": true
          }
        }
      },
      "transportation": {
        "description": "This table captures transportation details related to trips, such as modes of transport and associated costs. It links back to the trips table to provide context.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transportation record."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip related to this transportation."
          },
          "transport_mode": {
            "kind": "enum",
            "values": [
              "car",
              "plane",
              "train",
              "bus",
              "other"
            ],
            "description": "Mode of transportation used.",
            "weights": [
              6,
              5,
              3,
              2,
              1
            ]
          },
          "cost": {
            "kind": "decimal",
            "min": 20,
            "max": 3000,
            "scale": 2,
            "description": "Cost associated with the transportation.",
            "nullable": true,
            "when": {
              "column": "transport_mode",
              "in": [
                "car",
                "plane",
                "train",
                "bus",
                "other"
              ]
            },
            "distribution": "long-tail"
          },
          "departure_time": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "dayProfile": "business",
            "description": "Date and time when the transportation departs."
          },
          "arrival_time": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "dayProfile": "business",
            "description": "Date and time when the transportation arrives."
          }
        }
      },
      "activities": {
        "description": "This table lists activities planned during trips, linking back to the trips table. It includes details about the nature of the activity and any associated costs.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 0,
          "max": 4,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each activity record."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip associated with this activity."
          },
          "activity_name": {
            "kind": "title",
            "description": "Name of the planned activity.",
            "pool": [
              "hiking",
              "sightseeing",
              "wellness",
              "exploration",
              "adventure",
              "cultural",
              "culinary",
              "relaxation",
              "touring",
              "photography",
              "shopping",
              "beach",
              "sports",
              "nature",
              "historical",
              "art",
              "festival",
              "cruise",
              "camping",
              "roadtrip",
              "yoga",
              "retreat",
              "workshop",
              "excursion",
              "scenic",
              "spa",
              "event",
              "experience",
              "journey",
              "expedition",
              "wildlife",
              "heritage",
              "local",
              "adrenaline",
              "city",
              "landmark",
              "theater",
              "music",
              "dance",
              "craft",
              "exploit",
              "safari",
              "biking",
              "fishing",
              "kayaking",
              "surfing",
              "snowboarding",
              "climbing",
              "rafting",
              "tasting",
              "tour",
              "explore",
              "discover",
              "wander"
            ],
            "min": 1,
            "max": 3
          },
          "cost": {
            "kind": "decimal",
            "min": 5,
            "max": 1000,
            "scale": 2,
            "description": "Cost associated with the activity.",
            "nullable": true,
            "distribution": "long-tail"
          },
          "activity_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the activity is scheduled."
          },
          "participants_count": {
            "kind": "int",
            "min": 1,
            "max": 100,
            "distribution": "normal",
            "description": "Number of participants involved in the activity."
          }
        }
      },
      "reimbursements": {
        "description": "This table captures reimbursement requests made by clients or employees for expenses incurred during trips. It links back to the expenses table for detailed tracking.",
        "rows": {
          "per": "expenses",
          "via": "expense_id",
          "min": 1,
          "max": 1,
          "skew": "flat"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each reimbursement record."
          },
          "expense_id": {
            "kind": "fk",
            "ref": "expenses.id",
            "description": "Reference to the expense for which reimbursement is requested."
          },
          "request_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the reimbursement request was made.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "pending",
                "approved",
                "denied"
              ]
            },
            "trend": "growing"
          },
          "status": {
            "kind": "enum",
            "values": [
              "pending",
              "approved",
              "denied"
            ],
            "description": "Current status of the reimbursement request.",
            "weights": [
              7,
              2,
              1
            ]
          },
          "amount_requested": {
            "kind": "decimal",
            "min": 0,
            "max": 5000,
            "distribution": "long-tail",
            "description": "Amount requested for reimbursement."
          },
          "approval_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the reimbursement request was approved."
          }
        }
      },
      "clients": {
        "description": "This table contains information about clients, linking to trips organized for them. It provides demographic and contact details.",
        "rows": 100,
        "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."
          },
          "phone": {
            "kind": "phone",
            "description": "Contact phone number of the client."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "monetary",
      "timestamped",
      "categorical"
    ],
    "analysisQuestions": [
      "What are the most common expense categories for trips?",
      "How do transportation costs vary by destination?",
      "Which clients have the highest travel expenses?",
      "What is the average reimbursement request amount?",
      "How do trip durations affect overall spending?"
    ],
    "suggestedQueries": [
      {
        "title": "Join trips and expenses",
        "sql": "SELECT t.client_name, e.category, e.amount FROM trips t JOIN expenses e ON t.id = e.trip_id;",
        "dialect": "postgres"
      },
      {
        "title": "Aggregate expenses by category",
        "sql": "SELECT e.category, SUM(e.amount) AS total_amount FROM expenses e GROUP BY e.category;",
        "dialect": "postgres"
      },
      {
        "title": "Count trips by transportation mode",
        "sql": "SELECT tr.transport_mode, COUNT(*) AS trip_count FROM transportation tr GROUP BY tr.transport_mode;",
        "dialect": "postgres"
      },
      {
        "title": "Find average expenses per trip",
        "sql": "SELECT t.id, AVG(e.amount) AS avg_expense FROM trips t LEFT JOIN expenses e ON t.id = e.trip_id GROUP BY t.id;",
        "dialect": "postgres"
      },
      {
        "title": "Get reimbursement status for expenses",
        "sql": "SELECT e.id, r.status FROM expenses e LEFT JOIN reimbursements r ON e.id = r.expense_id;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Travel Agency Financial Analysis",
        "body": "A travel agency can utilize this dataset to analyze spending patterns across different clients and trips, helping them optimize budgets and identify cost-saving opportunities."
      },
      {
        "title": "Corporate Travel Management",
        "body": "Corporate travel departments can leverage this dataset to track employee travel expenses, ensuring compliance with company policies and facilitating efficient reimbursement processes."
      },
      {
        "title": "Expense Reporting Automation",
        "body": "Developers can use this dataset as a seed for ORM applications to automate expense reporting, allowing users to submit, track, and manage their travel expenses more effectively."
      }
    ]
  },
  "counts": {
    "clients": 100,
    "trips": 200,
    "activities": 278,
    "expenses": 438,
    "reimbursements": 438,
    "transportation": 300
  },
  "stats": {
    "trips": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "client_name": {
          "nulls": 0,
          "distinct": 195,
          "min": "Alice Pereira",
          "max": "Zoe Nguyen"
        },
        "destination": {
          "nulls": 0,
          "distinct": 61,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "start_date": {
          "nulls": 0,
          "distinct": 151,
          "min": "2023-01-03",
          "max": "2023-12-28"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 141,
          "min": "2023-01-04",
          "max": "2023-12-29"
        }
      }
    },
    "expenses": {
      "rows": 438,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 438,
          "min": 1,
          "max": 438
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "category": {
          "nulls": 0,
          "distinct": 5,
          "min": "activities",
          "max": "transportation"
        },
        "amount": {
          "nulls": 0,
          "distinct": 438,
          "min": 10.02,
          "max": 4968.2
        },
        "date": {
          "nulls": 0,
          "distinct": 237,
          "min": "2023-01-02",
          "max": "2023-12-31"
        },
        "description": {
          "nulls": 39,
          "distinct": 396
        }
      }
    },
    "transportation": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "transport_mode": {
          "nulls": 0,
          "distinct": 5,
          "min": "bus",
          "max": "train"
        },
        "cost": {
          "nulls": 0,
          "distinct": 298,
          "min": 20.01,
          "max": 2990.33
        },
        "departure_time": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-04 20:54:21",
          "max": "2024-12-31 12:58:11"
        },
        "arrival_time": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-01 12:59:37",
          "max": "2024-12-30 08:44:46"
        }
      }
    },
    "activities": {
      "rows": 278,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 278,
          "min": 1,
          "max": 278
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 116,
          "min": 2,
          "max": 199
        },
        "activity_name": {
          "nulls": 0,
          "distinct": 225
        },
        "cost": {
          "nulls": 28,
          "distinct": 249,
          "min": 5,
          "max": 996.76
        },
        "activity_date": {
          "nulls": 0,
          "distinct": 201,
          "min": "2023-01-02",
          "max": "2023-12-30"
        },
        "participants_count": {
          "nulls": 0,
          "distinct": 58,
          "min": 17,
          "max": 79
        }
      }
    },
    "reimbursements": {
      "rows": 438,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 438,
          "min": 1,
          "max": 438
        },
        "expense_id": {
          "nulls": 0,
          "distinct": 438,
          "min": 1,
          "max": 438
        },
        "request_date": {
          "nulls": 0,
          "distinct": 250,
          "min": "2023-01-04",
          "max": "2023-12-31"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "approved",
          "max": "pending"
        },
        "amount_requested": {
          "nulls": 0,
          "distinct": 436,
          "min": 0.01,
          "max": 4988.19
        },
        "approval_date": {
          "nulls": 0,
          "distinct": 258,
          "min": "2023-01-01",
          "max": "2023-12-31"
        }
      }
    },
    "clients": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "full_name": {
          "nulls": 0,
          "distinct": 99,
          "min": "Alice Rossi",
          "max": "Zoe Tanaka"
        },
        "email": {
          "nulls": 0,
          "distinct": 100
        },
        "phone": {
          "nulls": 0,
          "distinct": 96
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/clients.csv",
      "format": "csv",
      "table": "clients",
      "key": "datasets/travel-expense-tracker/v3/csv/clients.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/clients.csv",
      "bytes": 5592,
      "sha256": "c7d1f444a0ace1cdacb70f288b4f5513c975ebb4da1ed2d6b3e34aee95bdbde8",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/trips.csv",
      "format": "csv",
      "table": "trips",
      "key": "datasets/travel-expense-tracker/v3/csv/trips.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/trips.csv",
      "bytes": 9379,
      "sha256": "7ceaf9cb7b32316f29d39835ed642e3de081917f4fa4fda376d853daa8043ace",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/activities.csv",
      "format": "csv",
      "table": "activities",
      "key": "datasets/travel-expense-tracker/v3/csv/activities.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/activities.csv",
      "bytes": 12477,
      "sha256": "62920b7175cf9f811bb0ad17e4ae368036f48d60563eaf3205be92337be1f939",
      "rows": 278,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/expenses.csv",
      "format": "csv",
      "table": "expenses",
      "key": "datasets/travel-expense-tracker/v3/csv/expenses.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/expenses.csv",
      "bytes": 38309,
      "sha256": "d30ce46bcc43f009808bac668336633fa8b194fb2ce909e04efc2f395ecf3657",
      "rows": 438,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/reimbursements.csv",
      "format": "csv",
      "table": "reimbursements",
      "key": "datasets/travel-expense-tracker/v3/csv/reimbursements.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/reimbursements.csv",
      "bytes": 20213,
      "sha256": "2136fd357e70f114661a15af4817b5bd33fdaad6703b8447e9b37a00614d31bd",
      "rows": 438,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transportation.csv",
      "format": "csv",
      "table": "transportation",
      "key": "datasets/travel-expense-tracker/v3/csv/transportation.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/csv/transportation.csv",
      "bytes": 18177,
      "sha256": "ff787515a3aabc30b77ab38ace02efac20b97fe26c5b0abebad8f1bef860d859",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "travel-expense-tracker.json",
      "format": "json",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/travel-expense-tracker.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/travel-expense-tracker.json",
      "bytes": 329593,
      "sha256": "d36fb3c709d7b84881a4cfdd4ea67e46a0c35c41e38647d6738074779753e336",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/sql/postgres.sql",
      "bytes": 137253,
      "sha256": "d8ddc38aedd292a357316db1aa3226b9b48068e8de97fba1bd6f16eb433791dc",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/sql/mysql.sql",
      "bytes": 136572,
      "sha256": "acf30e627b102558c2bce1d3860b64aced1753df1e95334da3ffd75f5132c2a8",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/sql/mssql.sql",
      "bytes": 142123,
      "sha256": "13d2a5c40177dfb50eac6b2be5946eff36aee18a38c4fd901086f5ffa7dc7316",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/sql/sqlite.sql",
      "bytes": 136336,
      "sha256": "10aa51140a51af605ce1f077b26b9dd612c04775fdd4d1b8ebfccebfd6a30f4d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/prisma/seed.ts",
      "bytes": 266226,
      "sha256": "c2ad4ecf0cd5c6bce07f545bd4d1bc01bceaf5c5ca122c51adb9cdc763aa82a1",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/travel-expense-tracker/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-expense-tracker/v3/django/fixtures.json",
      "bytes": 409771,
      "sha256": "8fcd34aa0a9d7cf27ea2165331fae6e3a6265ede49a8e13942b0004bc8554d17",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788765883005,
  "updatedAt": 1789096093324
}
