{
  "format": "dataset-manifest/1",
  "slug": "candidate-journey-insights",
  "version": 1,
  "seed": "candidate-journey-insights:1",
  "spec": {
    "format": "dataset/1",
    "slug": "candidate-journey-insights",
    "name": "Candidate Journey Insights",
    "tagline": "Candidate demographics, job postings, interview evaluations, and rejection reasons from recruitment agencies.",
    "description": "Recruitment agencies connect skilled candidates with job openings, navigating a complex journey to identify the right fit for each role. This dynamic process features candidates applying for various positions, job postings that outline the requirements and responsibilities, interviews that evaluate candidates’ suitability, and evaluations that provide insights into performance. As resumes are reviewed against job criteria, agencies seek to streamline the hiring process, minimizing the drop-off that occurs after initial assessments. Each row in the candidates table represents an individual seeking employment, while job_postings details the available roles and their requirements.\n\nThe interviews table captures the interactions between candidates and interviewers, detailing the stages of the evaluation process. The evaluations table reflects the outcomes of these interviews, providing a summary of how candidates performed based on predefined criteria. Rejection reasons are documented in the rejection_reasons table, outlining the various factors that lead to an application's dismissal. These tables are interconnected, allowing for comprehensive analysis; for example, linking candidates to their respective job postings and interviews helps identify trends in candidate success and failure.\n\nThis dataset answers critical questions about recruitment effectiveness, such as common rejection reasons, candidate performance trends, and the overall success rate of job postings. Practicing on this data equips developers to analyze recruitment funnels, identify bottlenecks in the hiring process, and enhance strategies for candidate selection. It's important to note that the data is synthetic, designed to simulate real-world recruitment scenarios for effective learning and experimentation.",
    "domain": "hr",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "recruitment",
      "candidates",
      "job postings",
      "interviews",
      "evaluations",
      "hr analytics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "candidates": {
        "description": "This table contains information about candidates applying for jobs, linking to evaluations and interviews. Each candidate has a unique identifier.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the candidate."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The candidate's full name.",
            "nullable": true
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "The candidate's email address.",
            "nullable": true
          },
          "phone": {
            "kind": "phone",
            "description": "Contact number for the candidate.",
            "nullable": true
          },
          "application_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date the candidate applied.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "applied",
                "interviewed",
                "offered",
                "rejected"
              ]
            }
          },
          "status": {
            "kind": "enum",
            "values": [
              "applied",
              "interviewed",
              "offered",
              "hired",
              "rejected"
            ],
            "description": "Current status of the candidate in the recruitment process."
          }
        }
      },
      "job_postings": {
        "description": "This table contains details about job postings, linking to candidates and evaluations. Each posting has a unique identifier.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the job posting."
          },
          "title": {
            "kind": "title",
            "description": "Title of the job position."
          },
          "department": {
            "kind": "words",
            "description": "Department offering the job."
          },
          "posting_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date the job was posted."
          },
          "closing_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date the job posting closes."
          },
          "status": {
            "kind": "enum",
            "values": [
              "open",
              "closed"
            ],
            "description": "Current status of the job posting."
          }
        }
      },
      "interviews": {
        "description": "This table tracks interviews conducted for candidates, linking back to the candidates and job postings. Each interview has a unique identifier.",
        "rows": {
          "per": "candidates",
          "via": "candidate_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the interview."
          },
          "candidate_id": {
            "kind": "fk",
            "ref": "candidates.id",
            "description": "Identifier for the candidate being interviewed."
          },
          "job_id": {
            "kind": "fk",
            "ref": "job_postings.id",
            "description": "Identifier for the job being interviewed for."
          },
          "interview_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "dayProfile": "business",
            "description": "Date and time of the interview.",
            "nullable": true,
            "when": {
              "column": "result",
              "in": [
                "pass",
                "fail"
              ]
            }
          },
          "interviewers": {
            "kind": "words",
            "description": "Names of the interviewers."
          },
          "result": {
            "kind": "enum",
            "values": [
              "pass",
              "fail"
            ],
            "description": "Result of the interview."
          }
        }
      },
      "evaluations": {
        "description": "This table captures evaluations given to candidates based on interviews, linking to the candidates and interviews. Each evaluation has a unique identifier.",
        "rows": {
          "per": "interviews",
          "via": "interview_id",
          "min": 1,
          "max": 2,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the evaluation."
          },
          "interview_id": {
            "kind": "fk",
            "ref": "interviews.id",
            "description": "Identifier for the interview being evaluated."
          },
          "criteria": {
            "kind": "words",
            "description": "Criteria used for evaluation."
          },
          "score": {
            "kind": "int",
            "min": 1,
            "max": 10,
            "description": "Score given to the candidate based on evaluation criteria."
          },
          "comments": {
            "kind": "sentence",
            "description": "Additional comments from the evaluators.",
            "nullable": true
          }
        }
      },
      "rejection_reasons": {
        "description": "This table lists reasons for candidate rejections, linking to candidates. Each reason has a unique identifier.",
        "rows": {
          "per": "candidates",
          "via": "candidate_id",
          "min": 0,
          "max": 1,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the rejection reason."
          },
          "candidate_id": {
            "kind": "fk",
            "ref": "candidates.id",
            "description": "Identifier for the candidate who was rejected."
          },
          "reason": {
            "kind": "enum",
            "values": [
              "lack of experience",
              "poor interview",
              "overqualified",
              "cultural fit",
              "no-show"
            ],
            "description": "Reason for the candidate's rejection."
          },
          "date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date the rejection was recorded.",
            "nullable": true,
            "when": {
              "column": "reason",
              "in": [
                "lack of experience",
                "poor interview",
                "overqualified",
                "cultural fit",
                "no-show"
              ]
            }
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "nullable",
      "timestamped",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most common reasons for candidate rejections?",
      "How do candidate scores vary across different job postings?",
      "What percentage of candidates make it past the interview stage?",
      "Which job postings have the highest application rates?",
      "How does the time to hire change based on the department?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Candidates with Interviews",
        "sql": "SELECT c.full_name, i.interview_date FROM candidates c JOIN interviews i ON c.id = i.candidate_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Candidates by Status",
        "sql": "SELECT status, COUNT(*) FROM candidates GROUP BY status;",
        "dialect": "postgres"
      },
      {
        "title": "Average Score by Job Title",
        "sql": "SELECT jp.title, AVG(e.score) FROM evaluations e JOIN interviews i ON e.interview_id = i.id JOIN job_postings jp ON i.job_id = jp.id GROUP BY jp.title;",
        "dialect": "postgres"
      },
      {
        "title": "Candidates Rejected by Reason",
        "sql": "SELECT rr.reason, COUNT(*) FROM rejection_reasons rr JOIN candidates c ON rr.candidate_id = c.id GROUP BY rr.reason;",
        "dialect": "postgres"
      },
      {
        "title": "Candidates Status Over Time",
        "sql": "SELECT application_date, COUNT(*) FROM candidates GROUP BY application_date ORDER BY application_date;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "HR Data Analysis",
        "body": "HR analysts can utilize this dataset to understand the recruitment pipeline better. By analyzing candidate drop-off rates and interview outcomes, they can identify areas for improvement and optimize their hiring processes."
      },
      {
        "title": "Teaching Recruitment Strategies",
        "body": "Educators teaching HR management can use this dataset in classroom settings to demonstrate the candidate journey. Students can engage with real-world scenarios, learning how to analyze data to make informed recruitment decisions."
      },
      {
        "title": "ETL Pipeline Development",
        "body": "Data engineers can leverage this dataset to build ETL pipelines, transforming raw candidate data into structured formats for analysis. This can help organizations streamline their data processing workflows and improve insights."
      },
      {
        "title": "Performance Evaluation of Job Postings",
        "body": "Recruitment teams can analyze the effectiveness of different job postings using this dataset. By examining application rates and interview results linked to specific job titles, they can refine their recruitment strategies."
      }
    ]
  },
  "counts": {
    "candidates": 200,
    "job_postings": 100,
    "interviews": 316,
    "evaluations": 403,
    "rejection_reasons": 57
  },
  "stats": {
    "candidates": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 22,
          "distinct": 175,
          "min": "Alice Adams",
          "max": "Zoe Young"
        },
        "email": {
          "nulls": 39,
          "distinct": 159
        },
        "phone": {
          "nulls": 22,
          "distinct": 173
        },
        "application_date": {
          "nulls": 46,
          "distinct": 126,
          "min": "2023-01-04",
          "max": "2023-12-31"
        },
        "status": {
          "nulls": 0,
          "distinct": 5,
          "min": "applied",
          "max": "rejected"
        }
      }
    },
    "job_postings": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 100
        },
        "department": {
          "nulls": 0,
          "distinct": 100
        },
        "posting_date": {
          "nulls": 0,
          "distinct": 87,
          "min": "2023-01-03",
          "max": "2023-12-11"
        },
        "closing_date": {
          "nulls": 0,
          "distinct": 85,
          "min": "2023-01-01",
          "max": "2023-12-29"
        },
        "status": {
          "nulls": 0,
          "distinct": 2,
          "min": "closed",
          "max": "open"
        }
      }
    },
    "interviews": {
      "rows": 316,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 316,
          "min": 1,
          "max": 316
        },
        "candidate_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "job_id": {
          "nulls": 0,
          "distinct": 99,
          "min": 1,
          "max": 100
        },
        "interview_date": {
          "nulls": 0,
          "distinct": 316,
          "min": "2023-01-03 11:15:35",
          "max": "2023-12-31 16:56:35"
        },
        "interviewers": {
          "nulls": 0,
          "distinct": 315
        },
        "result": {
          "nulls": 0,
          "distinct": 2,
          "min": "fail",
          "max": "pass"
        }
      }
    },
    "evaluations": {
      "rows": 403,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 403,
          "min": 1,
          "max": 403
        },
        "interview_id": {
          "nulls": 0,
          "distinct": 316,
          "min": 1,
          "max": 316
        },
        "criteria": {
          "nulls": 0,
          "distinct": 403
        },
        "score": {
          "nulls": 0,
          "distinct": 10,
          "min": 1,
          "max": 10
        },
        "comments": {
          "nulls": 42,
          "distinct": 360
        }
      }
    },
    "rejection_reasons": {
      "rows": 57,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 57,
          "min": 1,
          "max": 57
        },
        "candidate_id": {
          "nulls": 0,
          "distinct": 57,
          "min": 2,
          "max": 200
        },
        "reason": {
          "nulls": 0,
          "distinct": 5,
          "min": "cultural fit",
          "max": "poor interview"
        },
        "date": {
          "nulls": 0,
          "distinct": 51,
          "min": "2023-01-02",
          "max": "2023-12-21"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/candidates.csv",
      "format": "csv",
      "table": "candidates",
      "key": "datasets/candidate-journey-insights/v1/csv/candidates.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/csv/candidates.csv",
      "bytes": 13342,
      "sha256": "8689fed8f460a286e3ab1a1133da083cc5420d7e91beadb4050e2cf6a1f7f9fc",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/job_postings.csv",
      "format": "csv",
      "table": "job_postings",
      "key": "datasets/candidate-journey-insights/v1/csv/job_postings.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/csv/job_postings.csv",
      "bytes": 7987,
      "sha256": "d52b3de10e464d6d0cac49c4fc4501fafa67958ab1317962ea5036007142db42",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/interviews.csv",
      "format": "csv",
      "table": "interviews",
      "key": "datasets/candidate-journey-insights/v1/csv/interviews.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/csv/interviews.csv",
      "bytes": 20026,
      "sha256": "f75ccfb4fef093a338f78505068c9595f3877739f6b0ab411781224d96a8cdb6",
      "rows": 316,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/evaluations.csv",
      "format": "csv",
      "table": "evaluations",
      "key": "datasets/candidate-journey-insights/v1/csv/evaluations.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/csv/evaluations.csv",
      "bytes": 35372,
      "sha256": "bef3153e1e43bf5c1d69cbc1909bbb2ccf596d6b9e8c676e659c85a84953bf0e",
      "rows": 403,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/rejection_reasons.csv",
      "format": "csv",
      "table": "rejection_reasons",
      "key": "datasets/candidate-journey-insights/v1/csv/rejection_reasons.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/csv/rejection_reasons.csv",
      "bytes": 1854,
      "sha256": "47bc8ea16c0f72bc473b8f7d321a686e2ca2aa38c5ea3466a167e8ff548aff43",
      "rows": 57,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "candidate-journey-insights.json",
      "format": "json",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/candidate-journey-insights.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/candidate-journey-insights.json",
      "bytes": 207775,
      "sha256": "9252c9258f495ffca579ab34a8b023dfe628eaa21eedbc9dcfdff803979dda0c",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/sql/postgres.sql",
      "bytes": 99910,
      "sha256": "8639a0a5cb97d43f8e3872e987139ab8ba1274cded912b8f59755bc24d2d77bd",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/sql/mysql.sql",
      "bytes": 99318,
      "sha256": "cc748daa501179434f4ffea1cba250840d3869dfa576c8da4b88938fd3b78d61",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/sql/mssql.sql",
      "bytes": 102881,
      "sha256": "a5c0d24ee56701b35494a5413a7b5eabd41083cf62ed0a067193365837d72e76",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/sql/sqlite.sql",
      "bytes": 99064,
      "sha256": "eda8bc8ca30e64f53c474c8ccb2026437ccf699148c0e23e2e2a5db21d97ab8c",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/prisma/seed.ts",
      "bytes": 168982,
      "sha256": "2fc132629eb9282fadaf1bec5b2155e8f17e551592500034de61cb10599a7ead",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/candidate-journey-insights/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/candidate-journey-insights/v1/django/fixtures.json",
      "bytes": 255036,
      "sha256": "aba3ecbf581a5380d1682c0ddbbf76320f96d0a9de662616a12979f60227d40d",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766030746,
  "updatedAt": 1788766030746
}
