{
  "format": "dataset-manifest/1",
  "slug": "travel-agency-management-database",
  "version": 3,
  "seed": "travel-agency-management-database:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "travel-agency-management-database",
    "name": "Journey Management Insights",
    "tagline": "Customer bookings, flights, tours, and insurance data from a travel agency's journey management.",
    "description": "A travel agency coordinates a variety of experiences for customers, helping them explore new destinations through carefully curated tours and activities. This dataset revolves around customer bookings, flight arrangements, travel insurance policies, and the guidance provided by tour leaders. Events such as booking confirmations and payment transactions are logged meticulously, creating a detailed history of each journey planned. The dataset captures various aspects of the travel experience, including the customer details, booking specifics, flight information, insurance policies, and interactions with tour leaders. It is synthetic, designed to simulate the complexities of travel management while providing a structured dataset for analysis. Practitioners can uncover insights on booking trends, customer preferences, and payment behaviors across different travel experiences. This dataset can answer questions about which destinations are most popular, how insurance uptake varies with booking types, and the impact of tour leader interactions on customer satisfaction.",
    "domain": "travel",
    "shape": "event-log",
    "useCases": [
      "analytics-demo",
      "etl-pipelines"
    ],
    "keywords": [
      "travel",
      "agency",
      "management",
      "journey",
      "bookings",
      "flights",
      "insurance",
      "tours",
      "tour leaders",
      "customer experience"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "customers": {
        "description": "Each row represents a customer who has booked a journey. It links to bookings made by the customer.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each customer."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the customer."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Contact email of the customer."
          },
          "phone": {
            "kind": "phone",
            "description": "Contact phone number of the customer.",
            "nullable": true
          },
          "country": {
            "kind": "country",
            "description": "Country of residence of the customer.",
            "nullable": true
          }
        }
      },
      "bookings": {
        "description": "This table logs each booking transaction made by customers, linking to the respective customers and tours.",
        "rows": {
          "per": "customers",
          "via": "customer_id",
          "min": 1,
          "max": 5,
          "skew": "heavy-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each booking."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "The customer who made the booking."
          },
          "tour_id": {
            "kind": "fk",
            "ref": "tours.id",
            "description": "The tour associated with the booking."
          },
          "booking_date": {
            "kind": "date",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "Date when the booking was made.",
            "nullable": true,
            "when": {
              "column": "payment_status",
              "in": [
                "refunded"
              ]
            }
          },
          "payment_status": {
            "kind": "enum",
            "values": [
              "pending",
              "completed",
              "refunded"
            ],
            "description": "Current status of the payment for the booking.",
            "weights": [
              8,
              12,
              2
            ]
          },
          "total_amount": {
            "kind": "decimal",
            "min": 100,
            "max": 5000,
            "distribution": "long-tail",
            "description": "Total amount paid for the booking."
          },
          "booking_source": {
            "kind": "enum",
            "values": [
              "website",
              "mobile app",
              "agent"
            ],
            "weights": [
              50,
              30,
              20
            ],
            "description": "Source through which the booking was made."
          }
        }
      },
      "tours": {
        "description": "Details of tours available for booking, each linked to multiple bookings.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each tour."
          },
          "name": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Name of the tour.",
            "pool": [
              "adventure",
              "exploration",
              "journey",
              "expedition",
              "discovery",
              "safari",
              "voyage",
              "quest",
              "retreat",
              "getaway",
              "experience",
              "odyssey",
              "tour",
              "trip",
              "excursion",
              "wanderlust",
              "escape",
              "pilgrimage",
              "cruise",
              "sojourn",
              "itinerary",
              "destination",
              "landmark",
              "attraction",
              "sightseeing",
              "nature",
              "culture",
              "heritage",
              "tradition",
              "festival",
              "event",
              "landscape",
              "scenery",
              "wildlife",
              "photography",
              "adrenaline",
              "relaxation",
              "luxury",
              "budget",
              "family",
              "solo",
              "group",
              "custom",
              "guided",
              "self-drive",
              "roadtrip",
              "backpacking",
              "beach",
              "mountain",
              "city",
              "rural",
              "urban",
              "historic",
              "cultural",
              "culinary",
              "wellness"
            ]
          },
          "destination": {
            "kind": "city",
            "description": "The destination of the tour."
          },
          "duration_days": {
            "kind": "int",
            "min": 1,
            "max": 30,
            "description": "Duration of the tour in days."
          },
          "price": {
            "kind": "decimal",
            "min": 100,
            "max": 5000,
            "scale": 2,
            "description": "Cost of the tour.",
            "distribution": "long-tail"
          }
        }
      },
      "flights": {
        "description": "Flight details linked to bookings, with information about departure and arrival.",
        "rows": {
          "per": "bookings",
          "via": "booking_id",
          "min": 1,
          "max": 2,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each flight."
          },
          "booking_id": {
            "kind": "fk",
            "ref": "bookings.id",
            "description": "The booking this flight is associated with."
          },
          "departure_airport": {
            "kind": "city",
            "description": "Airport of departure for the flight."
          },
          "arrival_airport": {
            "kind": "city",
            "description": "Airport of arrival for the flight."
          },
          "departure_date": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "dayProfile": "business",
            "description": "Date and time when the flight departs."
          }
        }
      },
      "insurance": {
        "description": "Travel insurance policies purchased by customers, linked to their bookings.",
        "rows": {
          "per": "bookings",
          "via": "booking_id",
          "min": 0,
          "max": 1,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each insurance policy."
          },
          "booking_id": {
            "kind": "fk",
            "ref": "bookings.id",
            "description": "The booking this insurance policy is associated with."
          },
          "policy_number": {
            "kind": "uuid",
            "description": "Unique policy number for the insurance.",
            "nullable": true,
            "when": {
              "column": "policy_status",
              "in": [
                "expired"
              ]
            }
          },
          "coverage_amount": {
            "kind": "decimal",
            "min": 100,
            "max": 10000,
            "scale": 2,
            "description": "Total coverage amount of the insurance policy.",
            "nullable": true,
            "distribution": "long-tail"
          },
          "policy_status": {
            "kind": "enum",
            "values": [
              "active",
              "expired"
            ],
            "description": "Current status of the insurance policy."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most popular tour destinations among customers?",
      "How does the payment status affect booking frequency?",
      "What is the average insurance coverage purchased by customers?",
      "Which tours have the highest booking cancellations?",
      "How does customer demographic influence the choice of tours?"
    ],
    "suggestedQueries": [
      {
        "title": "Join customers and bookings",
        "sql": "SELECT c.full_name, b.booking_date FROM customers c JOIN bookings b ON c.id = b.customer_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count bookings by payment status",
        "sql": "SELECT payment_status, COUNT(*) FROM bookings GROUP BY payment_status;",
        "dialect": "postgres"
      },
      {
        "title": "Average price of tours by destination",
        "sql": "SELECT destination, AVG(price) FROM tours GROUP BY destination;",
        "dialect": "postgres"
      },
      {
        "title": "Flights for completed bookings",
        "sql": "SELECT f.* FROM flights f JOIN bookings b ON f.booking_id = b.id WHERE b.payment_status = 'completed';",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Data Analysis for Travel Trends",
        "body": "Analysts at a travel agency can use this dataset to explore booking trends over time, identifying peak seasons for various destinations. By analyzing data on customer demographics and booking behaviors, they can fine-tune marketing strategies and enhance customer targeting for specific tours."
      },
      {
        "title": "Optimizing Booking Processes",
        "body": "Travel agency operators can utilize this dataset to examine the booking process, focusing on payment statuses and common cancellation reasons. Understanding these patterns can help streamline operations, reduce cancellations, and enhance overall customer satisfaction by addressing pain points."
      },
      {
        "title": "Insurance Policy Assessment",
        "body": "Insurance companies collaborating with travel agencies can leverage this dataset to assess the uptake of travel insurance among customers. By analyzing the correlation between insurance purchases and booking types, they can tailor insurance products that meet customer needs and preferences."
      },
      {
        "title": "Tour Experience Enhancement",
        "body": "Tour leaders can access insights from this dataset to understand customer feedback and preferences. By evaluating booking histories and interactions with customers, they can enhance the quality of tours offered, ensuring a more personalized experience for travelers."
      }
    ]
  },
  "counts": {
    "customers": 200,
    "tours": 50,
    "bookings": 380,
    "flights": 463,
    "insurance": 117
  },
  "stats": {
    "customers": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 196,
          "min": "Alice Johnson",
          "max": "Zoe Young"
        },
        "email": {
          "nulls": 0,
          "distinct": 199
        },
        "phone": {
          "nulls": 24,
          "distinct": 172
        },
        "country": {
          "nulls": 25,
          "distinct": 39,
          "min": "Argentina",
          "max": "United States"
        }
      }
    },
    "bookings": {
      "rows": 380,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 380,
          "min": 1,
          "max": 380
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "tour_id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "booking_date": {
          "nulls": 348,
          "distinct": 31,
          "min": "2022-01-01",
          "max": "2023-12-29"
        },
        "payment_status": {
          "nulls": 0,
          "distinct": 3,
          "min": "completed",
          "max": "refunded"
        },
        "total_amount": {
          "nulls": 0,
          "distinct": 380,
          "min": 100,
          "max": 4984.09
        },
        "booking_source": {
          "nulls": 0,
          "distinct": 3,
          "min": "agent",
          "max": "website"
        }
      }
    },
    "tours": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 48
        },
        "destination": {
          "nulls": 0,
          "distinct": 33,
          "min": "Ankara",
          "max": "Zurich"
        },
        "duration_days": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 30
        },
        "price": {
          "nulls": 0,
          "distinct": 50,
          "min": 100.05,
          "max": 4261.02
        }
      }
    },
    "flights": {
      "rows": 463,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 463,
          "min": 1,
          "max": 463
        },
        "booking_id": {
          "nulls": 0,
          "distinct": 380,
          "min": 1,
          "max": 380
        },
        "departure_airport": {
          "nulls": 0,
          "distinct": 63,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "arrival_airport": {
          "nulls": 0,
          "distinct": 63,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "departure_date": {
          "nulls": 0,
          "distinct": 463,
          "min": "2022-01-02 15:36:30",
          "max": "2023-12-23 09:55:14"
        }
      }
    },
    "insurance": {
      "rows": 117,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 117,
          "min": 1,
          "max": 117
        },
        "booking_id": {
          "nulls": 0,
          "distinct": 117,
          "min": 4,
          "max": 372
        },
        "policy_number": {
          "nulls": 63,
          "distinct": 54
        },
        "coverage_amount": {
          "nulls": 8,
          "distinct": 109,
          "min": 100.8,
          "max": 8784.66
        },
        "policy_status": {
          "nulls": 0,
          "distinct": 2,
          "min": "active",
          "max": "expired"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/customers.csv",
      "format": "csv",
      "table": "customers",
      "key": "datasets/travel-agency-management-database/v3/csv/customers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/csv/customers.csv",
      "bytes": 12570,
      "sha256": "4b011fed7a85a757cb47fdfffae545caec5b80c5b7d5262d04e78e22177777e2",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/tours.csv",
      "format": "csv",
      "table": "tours",
      "key": "datasets/travel-agency-management-database/v3/csv/tours.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/csv/tours.csv",
      "bytes": 2012,
      "sha256": "97bd205d652d7e0acada7f0f1b5e05e070b0ae243c17dc7038cd1f1d97fdc310",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/bookings.csv",
      "format": "csv",
      "table": "bookings",
      "key": "datasets/travel-agency-management-database/v3/csv/bookings.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/csv/bookings.csv",
      "bytes": 14477,
      "sha256": "6369805a1874797c1c8eb25904d943bbbafdab7c37a111b17dcc5d990fad708d",
      "rows": 380,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/flights.csv",
      "format": "csv",
      "table": "flights",
      "key": "datasets/travel-agency-management-database/v3/csv/flights.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/csv/flights.csv",
      "bytes": 20588,
      "sha256": "523d7ef908e7e5d978b4957909b1cdcb0b74e9bff87ba1a1a36912b09a419add",
      "rows": 463,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/insurance.csv",
      "format": "csv",
      "table": "insurance",
      "key": "datasets/travel-agency-management-database/v3/csv/insurance.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/csv/insurance.csv",
      "bytes": 4743,
      "sha256": "6f9e550a9b27829e7b250d0582093f158895ca377d0f87c3f53908c300b58694",
      "rows": 117,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "travel-agency-management-database.json",
      "format": "json",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/travel-agency-management-database.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/travel-agency-management-database.json",
      "bytes": 218408,
      "sha256": "9a9cfd52eb579a0993c417da3328834a3e3a4afdae231e582d08eda8a098a5d7",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/sql/postgres.sql",
      "bytes": 78628,
      "sha256": "c72acfad1dfaca56e418cd79261e28b4de6504c51811017e4cd81a1954ecdfb7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/sql/mysql.sql",
      "bytes": 78084,
      "sha256": "e1f0e2cb8d98b0b6f26406c55d01557ba93cc60921426b29dc7686ef85055eae",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/sql/mssql.sql",
      "bytes": 81608,
      "sha256": "9704fffbfbf1624cc64ab6e4ec0defcd6745a8ae8c4aca2d0d29ff8bfa64127a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/sql/sqlite.sql",
      "bytes": 77863,
      "sha256": "e36acbf4934483c518a87996ced2fd61291db30e19974be37a65bf53dc383192",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/prisma/seed.ts",
      "bytes": 175953,
      "sha256": "148ef53085069236e14ad9145e05f70466df9d329683a49d0a21e18e3ea7dcc2",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/travel-agency-management-database/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-management-database/v3/django/fixtures.json",
      "bytes": 268960,
      "sha256": "9dbbf2ea9ee1e45b3a343a0b6ecb2a158c6da8c5083b1021957288a6ef8ef5c9",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767168179,
  "updatedAt": 1789096077466
}
