{
  "format": "dataset-manifest/1",
  "slug": "personalized-culinary-creations",
  "version": 1,
  "seed": "personalized-culinary-creations:1",
  "spec": {
    "format": "dataset/1",
    "slug": "personalized-culinary-creations",
    "name": "Personalized Culinary Creations",
    "tagline": "AI-generated recipes tailored to your dietary needs and preferences.",
    "description": "Guests share their dietary preferences and restrictions, enabling chefs to create personalized recipes tailored to individual tastes. In this innovative restaurant environment, the use of AI technology ensures that each dish crafted considers not only the ingredients that align with user-specific allergens but also the kitchen appliances available for preparation and the desired nutritional values. Patrons often look for healthy meal options that cater to various diets, while some may request unique blends of rare ingredients or specific cultural cuisines, showcasing the restaurant's versatility in accommodating diverse culinary demands. \n\nThe dataset comprises several interconnected tables that model this operation. The 'users' table captures valuable details about each guest, including their dietary restrictions and preferences. The 'recipes' table holds the unique dishes generated by the AI, linking to the ingredients necessary for their preparation found in the 'ingredients' table. Each recipe can draw from various ingredients, ensuring flexibility in meal creation. The 'appliances' table provides insight into the kitchen tools available for each user, which influences recipe feasibility. To refine these recipes further, the 'feedback' table collects user responses about their dining experience, allowing the restaurant to adjust and improve personalized offerings continuously. \n\nThis dataset is ideal for developers looking to practice data analysis and manipulation techniques in a culinary context. It answers questions like: How can dietary preferences be matched with suitable recipes? What trends emerge from user feedback regarding ingredient combinations? How does appliance availability affect recipe creation? With this synthetic data, one can explore complex relationships and gain insights into user-driven culinary innovations.",
    "domain": "restaurants",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "ai recipes",
      "personalized meals",
      "dietary preferences",
      "restaurant management",
      "customer feedback"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "This table contains unique user profiles that share dietary preferences and restrictions. Each user can be associated with multiple recipes and feedback entries.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the user."
          },
          "age": {
            "kind": "int",
            "min": 18,
            "max": 100,
            "description": "Age of the user."
          },
          "dietary_restrictions": {
            "kind": "words",
            "max": 50,
            "description": "List of dietary restrictions like vegan, gluten-free, etc.",
            "nullable": true
          },
          "preferences": {
            "kind": "words",
            "max": 100,
            "description": "User's cuisine preferences.",
            "nullable": true
          }
        }
      },
      "recipes": {
        "description": "This table lists recipes generated based on user preferences and dietary restrictions. Each recipe can be linked to multiple users through feedback.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each recipe."
          },
          "name": {
            "kind": "productName",
            "description": "Name of the recipe."
          },
          "ingredients": {
            "kind": "words",
            "max": 150,
            "description": "List of ingredients used in the recipe.",
            "nullable": true
          },
          "cooking_time": {
            "kind": "int",
            "min": 5,
            "max": 240,
            "description": "Time required to prepare the recipe in minutes.",
            "nullable": true
          },
          "nutritional_values": {
            "kind": "json",
            "template": {
              "calories": {
                "kind": "decimal",
                "min": 0,
                "max": 2000,
                "scale": 0
              },
              "protein": {
                "kind": "decimal",
                "min": 0,
                "max": 200,
                "scale": 1
              },
              "fat": {
                "kind": "decimal",
                "min": 0,
                "max": 100,
                "scale": 1
              },
              "carbohydrates": {
                "kind": "decimal",
                "min": 0,
                "max": 300,
                "scale": 1
              }
            },
            "description": "Nutritional values of the recipe.",
            "nullable": true
          }
        }
      },
      "feedback": {
        "description": "This table captures user feedback on recipes provided to them, which helps refine future suggestions. Each entry is linked to a specific user and recipe.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each feedback entry."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Reference to the user providing feedback."
          },
          "recipe_id": {
            "kind": "fk",
            "ref": "recipes.id",
            "description": "Reference to the recipe being reviewed."
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "User's rating of the recipe.",
            "nullable": true
          },
          "comments": {
            "kind": "sentence",
            "max": 200,
            "description": "User's comments about the recipe.",
            "nullable": true
          }
        }
      },
      "ingredients": {
        "description": "This table holds information about various ingredients, including allergens and availability, which is important for recipe creation.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each ingredient."
          },
          "name": {
            "kind": "productName",
            "description": "Name of the ingredient."
          },
          "is_allergen": {
            "kind": "bool",
            "trueRate": 0.3,
            "description": "Indicates if the ingredient is a common allergen.",
            "nullable": true,
            "when": {
              "column": "availability",
              "in": [
                "seasonal",
                "out of stock"
              ]
            }
          },
          "availability": {
            "kind": "enum",
            "values": [
              "available",
              "seasonal",
              "out of stock"
            ],
            "description": "Availability status of the ingredient."
          }
        }
      },
      "appliances": {
        "description": "This table lists kitchen appliances available to users, which can affect the recipes generated for them.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each appliance."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Reference to the user who owns the appliance."
          },
          "name": {
            "kind": "productName",
            "description": "Name of the kitchen appliance."
          },
          "is_available": {
            "kind": "bool",
            "trueRate": 0.8,
            "description": "Indicates if the appliance is currently available for use.",
            "nullable": true
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "high-cardinality",
      "nullable"
    ],
    "analysisQuestions": [
      "What are the most common dietary restrictions among users?",
      "How do user ratings correlate with specific ingredients used in recipes?",
      "Which kitchen appliances are most commonly associated with higher-rated recipes?",
      "What trends can be identified in user preferences over time?",
      "How does the availability of ingredients impact the creation of recipes?"
    ],
    "suggestedQueries": [
      {
        "title": "Join users and feedback",
        "sql": "SELECT users.full_name, feedback.rating FROM users JOIN feedback ON users.id = feedback.user_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average rating per recipe",
        "sql": "SELECT recipes.name, AVG(feedback.rating) AS average_rating FROM recipes JOIN feedback ON recipes.id = feedback.recipe_id GROUP BY recipes.name;",
        "dialect": "postgres"
      },
      {
        "title": "Find recipes with allergens",
        "sql": "SELECT recipes.name FROM recipes JOIN ingredients ON recipes.ingredients @> ARRAY[ingredients.name] WHERE ingredients.is_allergen = TRUE;",
        "dialect": "postgres"
      },
      {
        "title": "User feedback over time",
        "sql": "SELECT DATE(feedback.created_at), COUNT(*) FROM feedback GROUP BY DATE(feedback.created_at);",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Culinary Data Analysis",
        "body": "Culinary researchers can utilize this dataset to analyze dietary trends and preferences, leading to better menu planning in restaurants. By understanding customer feedback and preferences, they can create more appealing dishes that cater to specific dietary needs."
      },
      {
        "title": "Recipe Recommendation Systems",
        "body": "Developers can leverage this dataset to build AI-powered recipe recommendation systems that take user preferences into account. This will help in crafting personalized culinary experiences that resonate with users' tastes and dietary restrictions."
      },
      {
        "title": "Training Culinary Professionals",
        "body": "Culinary schools can use this dataset as a teaching tool for students learning about nutrition, menu design, and customer service. It offers practical insights into how dietary restrictions and preferences influence recipe development."
      }
    ]
  },
  "counts": {
    "ingredients": 100,
    "recipes": 300,
    "users": 200,
    "appliances": 150,
    "feedback": 500
  },
  "stats": {
    "users": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 196,
          "min": "Alice Mendes",
          "max": "Zoe Wagner"
        },
        "age": {
          "nulls": 0,
          "distinct": 77,
          "min": 19,
          "max": 100
        },
        "dietary_restrictions": {
          "nulls": 15,
          "distinct": 185
        },
        "preferences": {
          "nulls": 20,
          "distinct": 180
        }
      }
    },
    "recipes": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "name": {
          "nulls": 0,
          "distinct": 218,
          "min": "Classic Desk Lamp",
          "max": "Wireless Watch"
        },
        "ingredients": {
          "nulls": 28,
          "distinct": 272
        },
        "cooking_time": {
          "nulls": 39,
          "distinct": 159,
          "min": 6,
          "max": 240
        },
        "nutritional_values": {
          "nulls": 32,
          "distinct": 268
        }
      }
    },
    "feedback": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "user_id": {
          "nulls": 0,
          "distinct": 184,
          "min": 1,
          "max": 200
        },
        "recipe_id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 299
        },
        "rating": {
          "nulls": 72,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "comments": {
          "nulls": 48,
          "distinct": 450
        }
      }
    },
    "ingredients": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "name": {
          "nulls": 0,
          "distinct": 92,
          "min": "Classic Blender",
          "max": "Wireless Tripod"
        },
        "is_allergen": {
          "nulls": 32,
          "distinct": 2,
          "min": "false",
          "max": "true"
        },
        "availability": {
          "nulls": 0,
          "distinct": 3,
          "min": "available",
          "max": "seasonal"
        }
      }
    },
    "appliances": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "user_id": {
          "nulls": 0,
          "distinct": 112,
          "min": 1,
          "max": 200
        },
        "name": {
          "nulls": 0,
          "distinct": 137,
          "min": "Classic Backpack",
          "max": "Wireless Umbrella"
        },
        "is_available": {
          "nulls": 17,
          "distinct": 2,
          "min": "false",
          "max": "true"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/ingredients.csv",
      "format": "csv",
      "table": "ingredients",
      "key": "datasets/personalized-culinary-creations/v1/csv/ingredients.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/csv/ingredients.csv",
      "bytes": 3439,
      "sha256": "1315b2553fc573c3d854c1e1e8d3b971fb73f4204c823ab18c182d6ac2d4ee90",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/recipes.csv",
      "format": "csv",
      "table": "recipes",
      "key": "datasets/personalized-culinary-creations/v1/csv/recipes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/csv/recipes.csv",
      "bytes": 184839,
      "sha256": "874b409d00e5c9888b5b796a309560cccc6908f088edc1cff28d4df3449781f3",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/personalized-culinary-creations/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/csv/users.csv",
      "bytes": 101281,
      "sha256": "9946f7c8fb7bd78cec2fb10eadafad1c1061ef41d973e73f42bdd0e7d603862c",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/appliances.csv",
      "format": "csv",
      "table": "appliances",
      "key": "datasets/personalized-culinary-creations/v1/csv/appliances.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/csv/appliances.csv",
      "bytes": 4099,
      "sha256": "0d8313e5c785ed6c191b6b0df018fc50604d644b0913c9b818460b50d7c4c69c",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/feedback.csv",
      "format": "csv",
      "table": "feedback",
      "key": "datasets/personalized-culinary-creations/v1/csv/feedback.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/csv/feedback.csv",
      "bytes": 32675,
      "sha256": "c3c9cd45fb06c82053e958eae231ddf7e5a76718ac2407b757498f3dfa4b9b49",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "personalized-culinary-creations.json",
      "format": "json",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/personalized-culinary-creations.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/personalized-culinary-creations.json",
      "bytes": 466037,
      "sha256": "5b3cc83f8d3f9f9db8650e9402e34499f9343abfbed1b3ed23a11fb2e2856c55",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/sql/postgres.sql",
      "bytes": 343485,
      "sha256": "180882ba55946356aa4dc5db85a0187382a257981fee4f837b32cb77200e4ee7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/sql/mysql.sql",
      "bytes": 342271,
      "sha256": "84f92561c994ced13921fd36814d54dffb15e49fa5eab3682cfc7e0595b0835f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/sql/mssql.sql",
      "bytes": 344797,
      "sha256": "9830885a4ecb00b3575aff43792e1babf2475fde79b435e18bf7efb710ac9336",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/sql/sqlite.sql",
      "bytes": 342101,
      "sha256": "63a805480f9176642ccdfab4ccf942f79dbbb178dc98569ccf91422d93f832dc",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/prisma/seed.ts",
      "bytes": 411391,
      "sha256": "8ea0dc52b2fa7636eb9cb46af1cb6d716b33e218b58ae855353feeaa7d65877b",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/personalized-culinary-creations/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/personalized-culinary-creations/v1/django/fixtures.json",
      "bytes": 517686,
      "sha256": "c92194d6e3024a85ddcfce14d1d10b68ff21f2664b6020342fb387389685077e",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767048206,
  "updatedAt": 1788767048206
}
