Datasets overview
This doc gives a high-level, at-a-glance view of every dataset powering our analytics dashboards — what each one covers, where it draws from, and what it powers. It's meant as a quick reference and comparison tool, not the full technical spec.
For column-level schema, derivation logic, and data types, see the linked Dataset Model doc for each dataset.
| Dataset Name | Description | Source Tables | Grain | Dashboard Supported | Metric Supported | Known Exclusions / Filters Applied | Dataset Documentation |
| recruitment_funnel | Stage-level dataset tracking each candidate's progress through the hiring pipeline, mapping stage events to standardized stage groups and adding hire status, match score, and source category. | application_stage, stage_mapping, applications, positions | One row per application-stage combination (an app in 5 stages = 5 rows) | Recruitment Effectiveness Dashboard | Recruitment Funnel; Pass-Through Rate (%); Avg Time Spent in Stage Group + Match Stars | Dedup on stage_mapping to prevent fan-out; INNER JOIN excludes unmapped stage groups; match_stars only averaged over calibrated positions; pass-through rate denominator anchored to stage_group_index = 1 | Read recruitment_funnel |
| application_x_positions_sr | Application-level dataset joining every application to its parent position, enriched with calibration status/percentage and position-aging buckets. | positions, applications, user_analytics | One row per application_id (LEFT JOINs, so position- or application-only rows can appear) | Recruitment Effectiveness; TA Feature – Usage and Outcome; Calibration Dashboard; Source Analytics Dashboard | Time to Fill; Time to Hire; Match Score; Filled Positions; Hired (count/rate); Recruitment Funnel; Open Positions | Excludes system_id = 'sourcing' applications and 'Sourcing Pipeline' positions; 5 hardcoded position IDs flagged (not dropped); calibration complete requires ≥4/5 flags | Read application_x_positions_sr |
| ai_interview | Interview-level dataset turning AI Interviewer activity into one row per interview session, with milestone timestamps, durations, and recruiter/sourcer ownership. | user_analytics, interview_session, positions, applications, profile_feedback, ai_credit_purchased_data | One row per interview_id (left-join chain, NULLs where no completion/feedback/application match) | AI Interviewer (AII) Dashboard | Feedback Generation Rate; Invites Sent/Completed; Completion Rate; Interview Time metrics; Candidate Survey/Satisfaction/NPS; Credit consumption metrics; Retry/Rejoin rates; Feedback turnaround/review time; and more | Only 7 defined interview_session_* events pivoted; duration only valid when completed_at > call_started_at; total_credits_purchased denormalized (use MAX not SUM downstream); sourcer/recruiter default to 'Unassigned'; DISTINCT applied to collapse duplicate joins | Read ai_interview |
| positions_x_ai_interviews | Position-level dataset identifying which positions have used AI interviews, with median time-to-fill for AI vs. non-AI positions. | positions, applications, interview_session | One row per position_id, restricted to positions with ≥1 application | AI Interviewer (AII) Dashboard | Active Positions Using AI Interviewer; Median Time to Fill (AI vs. Non-AI) | Positions with zero applications excluded entirely; ai_enabled requires only an interview_session record to exist, not completion; median time-to-fill only for closed positions, computed via PERCENTILE_CONT | Read positions_x_ai_interviews |
| ai_interview_funnel | Stage-level funnel dataset following each candidate's journey through the AI Interviewer process across 8 stages (Invite Sent → Hired). | user_analytics, interview_session, applications | One row per interview session per funnel stage reached | AI Interviewer (AII) Dashboard | AI Interview Funnel; AI Recruitment Funnel | Only 6 defined events pivoted; sequencing rule requires prior stage reached (except Offer Extended, always included); Offer/Hired stages joined via profile_id + position_id match | Read ai_interview_funnel |
| application_x_ai_interviews | Application-level dataset identifying whether an application went through an AI Interview, with hiring outcomes (days to hire, match score). | applications, positions, interview_session | One row per application_id (LEFT JOINs for position/AI interview) | AI Interviewer (AII) Dashboard | Average Match Score – AII Hires; Time to Hire using AII | used_ai_interview requires a completed interview for the exact candidate-position pair; days_to_hire only valid when hired_ts follows applied_at; recruiter defaults to 'Unassigned'; dataset carries all applications, hire-only filtering happens at metric level | Read application_x_ai_interviews |
| aii_credits_plan_purchased_data_e858f220 | Plan-level, unaggregated dataset listing every AI Interviewer credit plan purchased by the customer. | ai_credit_purchased_data (sole source) | One row per purchased credit plan | AI Interviewer (AII) Dashboard | Plans Purchased Data | No filters or aggregation applied — direct unfiltered SELECT; future-dated plans included | Read aii_credits_plan_purchased_data_e858f220 |
| survey_analytics | Response-level dataset capturing every survey event submitted by candidates, with NPS classification and participant identification. | survey_analytics (sole source) | One row per survey event per participant | Survey Analytics Dashboard | Candidate Experience Score (NPS); % Promoters/Detractors; Average Rating; Unique Survey Participants; NPS/rating trends by country and device | 5 hardcoded position IDs excluded; NPS metrics filter to event = 'submit_survey'; participant counts use vs_cookie (distinct users), NPS uses unique_id (distinct submissions); rows with NULL is_promoter excluded from NPS denominator | Read survey_analytics |
| survey_test_response_rate | Response-rate dataset combining survey submissions and survey deliveries to calculate share of candidates who responded. | survey_analytics, www_server_log | One row per vs_cookie per event type per session (UNION ALL of submit/get events) | Survey Analytics Dashboard | Response Rate; Response Rate Trend by Device; Response Rate by Country | Numerator filtered to event = 'submit_survey' and t_create >= 2021-03-14; denominator filtered to event = 'get_survey'; embedding_id NULL on the get_survey branch; NULLIF guards division by zero | Read survey_test_response_rate |
| uce_with_time | Calendar-event-level dataset surfacing scheduled interview slots for AI Companion adoption analysis. | user_calendar_events (sole source) | One row per calendar event (may contain multiple slots) | AI Companion Dashboard | Total Interviews Scheduled; Companion Scheduled Interviews; Companion Adoption Rate | Slot counts derived via JSON string-length differencing, not a normalized table; canceled/deleted/declined slots subtracted from both numerator and denominator; companion-enabled signal is add_ai_bot: true | Read uce_with_time |
| companion_funnel | Stage-level funnel dataset tracking AI Companion sessions through 4 milestones: Scheduled to Join, Joined, Recorded, Feedback Generated. | companion_session (sole source) | One row per companion session per funnel stage reached | AI Companion Dashboard | AI Companion Funnel | Deleted bot statuses excluded from Stage 1; sequential gate rule requires prior stage reached; scheduled_at carried via window function onto every stage row | Read companion_funnel |
| profile_feedback_for_companion | Feedback-record-level dataset exposing interview feedback forms for compliance and companion-assisted submission analysis. | profile_feedback (sole source) | One row per feedback record | AI Companion Dashboard | Interview Feedback Submitted; Feedback Submission Rate; Companion-Filled Feedback Submission Rate/Submitted | Filtered to feedback_type = 'interview_feedback'; submission metrics use status = 'SUBMITTED' as numerator; companion metrics additionally require a non-null companion_session_rds_id; Companion-Filled Feedback Submitted is an all-time count (no date filter) | Read profile_feedback_for_companion |
| companion_feedback_metrics_dataset | Session-level dataset exposing companion session records for feedback generation volume, coverage, and time-savings analysis. | companion_session (sole source) | One row per companion session | AI Companion Dashboard | Companion Feedback Generated; Companion Feedback Generated %; Estimated Time Saved by Companion | Feedback/time-saved metrics require status = 'feedback_generated'; coverage % uses COUNT(*) as denominator (all sessions); time saved uses a fixed 10-min assumption per session (approximate, shown with '~') | Read companion_feedback_metrics_dataset |
| tm_diversity | Employee-level dataset for DEI analytics; each row is an employee-skill pair enriched with mentorship flags, direct report counts, succession data, and profile skills. | employee, employee_skills, role_skills, profile_data, succession_plan | One row per employee-skill pair | TM Diversity Dashboard | Total/Female/URM Employees (+%); Pipelines with female/URM/diverse successors; Employee Distribution by Gender/Race; Skill-level Gender/Race Distribution; diversity by Job Function/Business Unit/Location | employee_id IS NOT NULL is the active-employee filter; is_urm sourced from JSON attribute, defaults FALSE; is_leader defined by seniority in CXO/VP/Director; succession columns NULL for non-incumbents; all metrics are all-time snapshots | Read tm_diversity |
| tm_skills_and_gaps_v2 | Employee-skill-level dataset joining employees to role skill gaps, profile skills, and required role skills, with window-function coverage/fit percentages. | employee, employee_skill_gaps, employee_skills, role_skills | One row per employee-skill combination (gap-side and profile-side rows both LEFT JOINed independently) | TM Skills Dashboard | Total Employees/Profile Skills/Role Skills; Top Profile Skills; Role Skill Benchmark/Assessment coverage; Manager/Self Assessment Distribution; Role Skill Distribution; Top Skill Gaps (self/manager) | employee_id IS NOT NULL active-employee filter; is_role_skill flags matches between profile and role skills; window-function aggregates computed per profile_id and repeated on every row; all metrics are all-time snapshots | Read tm_skills |
| tm_learnings_v2 | Upskilling-activity-level dataset unifying LMS course completions, project-based upskilling, and development plan completions into one table. | course_attendance, courses, project_teammembers_details, profile_upskilling, employee | One row per upskilling activity per employee per skill per source type (UNNEST on skill JSON arrays) | TM Skills Dashboard | Courses/Projects/Dev Plans Completed; Skills Added by Upskilling; Employees who Completed Courses/Projects/Dev Plans (+trends and business-unit breakdowns) | Course branch requires completion_date IS NOT NULL; Project branch requires project_completed_ts IS NOT NULL; Upskilling completion filter (=1.0) applied at widget level; source_type distinguishes the 3 UNION ALL branches; Dev Plan (All Time) metrics have no date filter | Read tm_skills |
| tm_learning | Employee-level learning and development activity dataset that unions three sources of skill-building activity — completed courses, completed internal projects, and upskilling plan progress — each denormalized to one row per activity-skill combination, enriched with employee attributes. | course_attendance, courses, project_teammembers_details, profile_upskilling, employee (joined twice — appears to be a redundant duplicate join rather than intentional double enrichment) | One row per (profile_id, skill_name, activity record), where "activity record" is one of: a completed course (one row per skill tagged to that course), a completed project (one row per project teammate record), or an upskilling plan update (one row per skill tagged to that plan). | Learning & Development / Course Completion Dashboard; Skill Building / Upskilling Dashboard; Project-Based Learning Dashboard | Course Completions; Project Completions; Upskilling Plan Completion %; Activity by Source Type; Skill-Tagged Completions | Course rows included only where completion_date is not null; project rows included only where project_completed_ts is not null; upskilling rows have no equivalent completion-status filter (check completion_percentage instead); completion_percentage hardcoded to 1 (100%) for Course and Project rows regardless of partial completion; many columns are source_type-conditional (populated for one source type, null for the others); employee is joined twice on the same key — appears redundant, flagged for cleanup, though it shouldn't inflate row counts since profile_id is unique | Read tm_learning |
| tm_usage_and_outcomes | Event-level Career Hub / internal-mobility engagement dataset that joins every employee record to raw web server log events (aggregated to daily grain), enriched with profile, demographic, and lifecycle attributes, mentorship opt-in status, and profile-connection (networking) activity. | www_server_log, employee, profile_data (filtered to namespace = 'mentorship', for open_to_mentoring), profile_connection | Nominally one row per (employee_email, log event) — denormalized further by a LEFT JOIN to profile_connection on source_profile_id = profile_id, so an employee with multiple profile-connection records produces multiple rows per logged event | TM Outcomes Summary Dashboard; Career Navigator Engagement Dashboard; Skill Assessment Dashboard | Feature/Event Usage; Career Hub Returning User Rate; Career Navigator Engagement; Skill Assessment Engagement; Mentorship Opt-In Rate; Networking / Profile Connections; Profile Completeness Distribution; Goal Completeness | Excludes non-production traffic (stage/qa/dev hostnames, github-ci) and bot traffic; excludes failed requests (only response_code < '400' kept); scoped to only four namespaces (career_hub, pr_bootstrap_init, saved_searches, smartrefer); excludes candidate-role users and internal/test events containing "::: "; returning_user_ind hardcoded to 0 for all non-career_hub rows; open_to_mentoring is null (not "opted out") when no mentorship record exists; consumers must de-duplicate event_count on event-level columns before summing (see Grain) | Readtm_usage_outcome |
| tm_attrition_data | Period-level workforce dataset that generates a full monthly/quarterly/yearly date spine and reports active headcount, terminations, and new hires against it, broken out by job function, location, seniority, business unit, gender, and race. | employee (sole source) | One row per (granularity, period_start, period_end, job_function, location_country, seniority, business_unit, ef_gender, ef_race) combination; granularity is Monthly, Quarterly, or Yearly, each spanning the full range from earliest hire date to latest effective end date. A dimension combo with zero active/terminated/hired employees can still appear as a 0-count row. | TM Outcomes Summary Dashboard (Headcount Trend, Monthly/Quarterly/Annual Attrition %, Monthly Hires and Terminations); Headcount Trends / Attrition / New Hire Analytics dashboards | Active Headcount; Terminations/Attrition Count; Attrition Rate; New Hires; Net Headcount Change; Headcount Trend Over Time | Employees with null employee_id or null hiring_date excluded entirely; active_employees is a start-of-period snapshot, not an average or end-of-period count; a dimension combo with a termination/hire in a period but zero active at period start is dropped rather than shown as 0; periods with no matching employee record still produce one all-null-dimension row; month populated only for Monthly rows, quarter only for Quarterly rows | Readtm_attrition |
| career_site_server_log_aggregated | Event-level dataset capturing candidate activity on the Career Site, aggregated to a daily grain per event-namespace-visitor combination, enriched with position metadata. | www_server_log, positions | One row per (event_date, group_id, vs_cookie, position_id, namespace, event, and other context fields) combination, with event_count aggregated | Career Site (PCS) Dashboard | Unique Visitors/Applicants; Visitor-to-Applicant Conversion; Unique Applications Submitted; Conversion Funnel (activities and unique users); Applicant/Visitor Trend by UTM Source Group | Bot traffic, internal/staging/demo hostnames, and non-2xx/3xx responses excluded; scoped to candidate-facing roles/events only; Unique Applicants requires logged-in email; source_group derived via UTM waterfall; date filtering maps to t_create, not event_date | Read career_site_server_log_aggregated |
| position_x_calibration_fields | Position-level dataset that unpivots each position's five calibration attributes (Location, Job Titles, Skills, Work Experience, Ideal Candidate) into one row per position per calibration field, so each position appears exactly five times. | positions, employee | One row per position_id × calibration_field (5 rows per position, via CROSS JOIN against a fixed 5-value list) | Calibration Dashboard | Calibrated Positions % by Calibration Criteria | Excludes system_id = 'sourcing' and 'Sourcing Pipeline' positions (unless null); recruiter/hiring manager fall back to raw email if unresolved; calibration_field is a fixed 5-value list; use application_x_positions_sr for overall Calibrated Positions % (this dataset row-inflates 5x) | Read position_x_calibration_fields |
Schema details for each dataset are maintained in the corresponding Dataset Model doc (linked above).