← Back to history

Pipeline run

b464d3e0-1325-48f4-b379-8c7db23f7b01

Pipeline LLM cost (USD)
API 1: $0.0088 API 2: $0.0005 API 3: $0.0000 Total: $0.0093

Client output enrichment

v2 Skill cluster · Nature of work · AI index · Tech stack maturity · Evidence · KRA description
Nature of work · Clinical Programming
Leads clinical programming work in SAS/Python/SDTM, including complex dataset development/validation, external data reconciliation, post-production edits, and QC/peer review. Also supports dashboards and acts as SME for technical issues.
""Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.""
Tech stack maturity
Mainstream Modern
The skill mix of Python, Tableau, SOPS, and data reconciliation aligns with widely adopted modern analytics and data operations practices rather than legacy or bleeding-edge stacks.
AI index (0 = no AI use, 5 = totally AI-dependent · v2.1)
0.00 / 5
· Title match
· Has AI skill
· AI skill (primary)
· AI skill (secondary)
· On AI team
· Builds AI products
vocab breakdown (legacy)
Assistants (×1):
Frameworks (×2):
Models / concepts (×3):
Evidence — skills matched in JD (17)
SAS Python SDTM Medidata RAVE Oracle Inform Spotfire Tableau Clinical Programming Data Reconciliation Quality Control Peer Review Automation Standardization Good Clinical Practices SOPs Work Instructions SAAMA
Skill cluster (2 dimension groups, role-scoped)
Python Programming
Python
Cross-cutting / unaligned
SAS SDTM Medidata RAVE Oracle Inform Spotfire Tableau Clinical Programming Data Reconciliation Quality Control Peer Review Automation Standardization Good Clinical Practices SOPs Work Instructions SAAMA
Show KRA description ↓
Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analytics tools like Spotfire or Tableau. Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations. Perform any postproduction changes to the EDC database or enhancements to the SAS programs like SAS edit checks, listings, Protocol Deviations, SAS Datasets etc., Conduct Peer Review/Quality control of study design for assigned projects. • Lead the development and implementation of solutions to global technical services issues and concerns regarding SAS or Python or Data/Report programming or Visual Analytics tools like Spotfire or Tableau. • Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations. • Perform any post production changes to the SAS/Python programs edit checks, listings, Protocol Deviations, Datasets etc., • Conduct Peer Review/Quality control of study design for assigned projects. • Lead the development and implementation of Clinical solutions to global technical services issues and concerns regarding SAS programming. • Lead the development of visual analytics dashboard using tools like Spotfire/Tableau. • Complete assigned work utilising SAS, Python, SAAMA or other proprietary software according to Fortrea SOPs, Work Instructions, and project specific guidelines in accordance with Good Clinical Practices. • Perform any post-production changes to the enhancements for SAS programs like SAS edit checks, listings, Protocol Deviations, etc., • With assistance, meet with Data Manager on assigned projects to discuss contractual obligations and timelines. • Act as Subject Matter Expert (SME) and be point of contact for any technical services, issues related to SAS programming. • Serve as Lead Statistical Programmer providing programming support for development and maintenance of SDTM/Client standards datasets. • Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations. • Develop and implement SDTM automation/standardization and best programming practices across projects to enhance quality and productivity. • Plan, execute and oversee all programming activities on a study, including but not limited to, resource estimation, meeting timelines, maximizing quality, interaction with other departments and the client, etc. • Exhibit good imparting, analytical skills along with testing, troubleshooting, error fixing, and documentation skills. • Participate in the ongoing review of the processes used to ensure adaptation of best practices. • Conduct Peer Review/Quality control of study design for assigned projects. • Able to work independently and take initiative to accept new challenges in Clinical Programming Applications, also participate in the validation of new or updates to software. • Resource forecasting and allocate activities to the team members on the project. • Generate reports/metrics or demonstrate programming process to sponsors/auditors (if required), assist with the design of study documents. • Perform other duties as assigned by Manager.

Signals

Skill data-engineer
0.19
Alias
KRA data-engineer
0.56

Post-classification

Centroidupdated · n=13
Alias collision log
New-role queue
New skills captured13
New KRA capturedyes

Captured for admin review

SAS primary BI Developer pending
SDTM primary BI Developer pending
Medidata RAVE primary BI Developer pending
Oracle Inform primary BI Developer pending
Spotfire primary BI Developer pending
SAAMA BI Developer pending
Clinical Programming primary BI Developer pending
Quality Control primary BI Developer pending
Peer Review primary BI Developer pending
Automation primary BI Developer pending
Standardization primary BI Developer pending
Good Clinical Practices primary BI Developer pending
Work Instructions primary BI Developer pending
R&R fragment (sim 0.00) BI Developer pending

Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analy…

Status: completed Created: 2026-05-27T17:40:34.819419Z Updated: 2026-06-07T08:01:00.400187Z API 3 duration: 6796 ms
Flow Current 3-step pipeline

1 POST /skills/extract-from-jd

2 POST /skills/extract-details

3 POST /skills/final-role-output

Role Chosen role & resolution

BI Developer

domain · Data Engineering & Analytics CASE DOMAIN

slug: bi-developer · id: 147 · source: db

Domain=Data Engineering & Analytics; The JD centers on SAS/Python programming plus Spotfire/Tableau dashboard development and clinical data/reporting support, which best matches a BI Developer role among the candidates.

Matched skills

SASPythonSDTMSpotfireTableauMedidata RAVEOracle InformSAAMAEDCVisual Analytics

Matched dimensions

Clinical statistical programmingVisual analytics dashboard developmentSDTM dataset development and validationData reconciliation and external data handlingProgramming quality control and peer reviewStudy-level programming planning and oversight

Matched KRAs

Lead development and implementation of technical services solutionsDevelop/validate Custom/Complex SAS / Python/SDTM datasetsHandle external data and reconciliationsPerform post production changes to programsConduct Peer Review/Quality control of study designLead development of visual analytics dashboardAct as Subject Matter Expert for SAS programmingDevelop and implement SDTM automation/standardization

Resolution: in_db — role exists in library; skill↔dim and role↔dim links saved when applicable.

0
New skills
0
Skill↔dim saved
0
Role↔dim saved
0
Skipped

Job description

Job Overview

Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analytics tools like Spotfire or Tableau. Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations. Perform any postproduction changes to the EDC database or enhancements to the SAS programs like SAS edit checks, listings, Protocol Deviations, SAS Datasets etc., Conduct Peer Review/Quality control of study design for assigned projects.

Summary Of Responsibilities

• Lead the development and implementation of solutions to global technical services issues and concerns regarding SAS or Python or Data/Report programming or Visual Analytics tools like Spotfire or Tableau.
• Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.
• Perform any post production changes to the SAS/Python programs edit checks, listings, Protocol Deviations, Datasets etc.,
• Conduct Peer Review/Quality control of study design for assigned projects.
• Lead the development and implementation of Clinical solutions to global technical services issues and concerns regarding SAS programming.
• Lead the development of visual analytics dashboard using tools like Spotfire/Tableau.
• Complete assigned work utilising SAS, Python, SAAMA or other proprietary software according to Fortrea SOPs, Work Instructions, and project specific guidelines in accordance with Good Clinical Practices.
• Perform any post-production changes to the enhancements for SAS programs like SAS edit checks, listings, Protocol Deviations, etc.,
• With assistance, meet with Data Manager on assigned projects to discuss contractual obligations and timelines.
• Act as Subject Matter Expert (SME) and be point of contact for any technical services, issues related to SAS programming.
• Serve as Lead Statistical Programmer providing programming support for development and maintenance of SDTM/Client standards datasets.
• Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.
• Develop and implement SDTM automation/standardization and best programming practices across projects to enhance quality and productivity.
• Plan, execute and oversee all programming activities on a study, including but not limited to, resource estimation, meeting timelines, maximizing quality, interaction with other departments and the client, etc.
• Exhibit good imparting, analytical skills along with testing, troubleshooting, error fixing, and documentation skills.
• Participate in the ongoing review of the processes used to ensure adaptation of best practices.
• Conduct Peer Review/Quality control of study design for assigned projects.
• Able to work independently and take initiative to accept new challenges in Clinical Programming Applications, also participate in the validation of new or updates to software.
• Resource forecasting and allocate activities to the team members on the project.
• Generate reports/metrics or demonstrate programming process to sponsors/auditors (if required), assist with the design of study documents.
• Perform other duties as assigned by Manager.


Learn more about our EEO & Accommodations request here.

Skills from this JD

Each row merges API 1 extraction, API 2 library match / v3 orchestration (dimensions + locked dims), and API 3 persistence tags.

SAS Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Programming Languages
Sub-category
general
Skill nature
LANGUAGE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Python Primary Library skill API 3: existing canonical (in_db) Existing skill (matched library)
Canonical: Python id=5 · python

Aliases — catalog

  • Python (CANONICAL) primary
  • Python 2 (VERSION)
  • Python 2.x (VERSION)
  • Python 3 (VERSION)
  • Python 3.10 (VERSION)
  • Python 3.11 (VERSION)
  • Python 3.12 (VERSION)
  • Python 3.x (VERSION)
  • py (VERSION)
  • py2 (VERSION)
  • py3 (VERSION)
  • python 3 (VERSION)
  • python 3.x (VERSION)
  • python2 (VERSION)
  • python3 (VERSION)
  • python3.x (VERSION)

Context tags (catalog)

API Django FastAPI Flask Jupyter NumPy PEP 8 Pandas REST SQLAlchemy asyncio pandas pip pytest type hints venv virtualenv

Stored enrichment (catalog DB)

Category
Language
Sub-category
Programming Language
Vendor
PSF
License
mit
Year introduced
1991
Confidence
0.99
Version strategy
SEPARATE_ENTITY
Version tag
3

Maturity reasoning: Python appears in a very high volume of job descriptions across data, backend, automation, and ML roles, and remains a default hiring-pipeline language on major job boards and tech stacks.

Skill profile (library / DB)

Skill nature
LANGUAGE
Volatility
STABLE
Typical lifespan
EVERGREEN
Category id
6
Sub-category id
96
Extractable
True
Also category
False

Dimensions (API 2 worklist)

  • Cloud Security Scripting & DSL Languages Catalog dimension db id 248

    Library dimension (catalog)

    Roles linked in library: Cloud Security Engineer

  • Programming Languages Catalog dimension db id 1

    Library dimension (catalog)

    Roles linked in library: Backend Developer, Fullstack Developer, Fullstack Developer

  • Programming Languages & DSLs Catalog dimension db id 475

    Library dimension (catalog)

    Roles linked in library: Engineering Manager

  • Programming Languages and Scripting Catalog dimension db id 59

    Library dimension (catalog)

    Roles linked in library: Cyber Security Engineer

  • Programming Languages for Data Work Catalog dimension db id 21

    Library dimension (catalog)

    Roles linked in library: Data Engineer

  • Programming Languages for ML Systems Catalog dimension db id 39

    Library dimension (catalog)

    Roles linked in library: ML Engineer, MLOps Engineer

  • Programming Languages for XR Catalog dimension db id 97

    Library dimension (catalog)

    Roles linked in library: AR/VR Engineer

  • Python Programming Catalog dimension db id 290

    Library dimension (catalog)

    Roles linked in library: Python Backend Developer

API 3 link attempts (this skill)

Dimension Skill↔dim Role↔dim Outcome
Cloud Security Scripting & DSL Languages
cloud-security-scripting-dsl-languages
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages
programming-languages
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages & DSLs
programming-languages-dsls
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages and Scripting
programming-languages-and-scripting
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages for Data Work
programming-languages-for-data-work
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages for ML Systems
programming-languages-for-ml-systems
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Programming Languages for XR
programming-languages-for-xr
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python Programming
python-programming
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
SDTM Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Clinical Data Standards
Sub-category
general
Skill nature
CONCEPT
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Medidata RAVE Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Clinical Data Management Tools
Sub-category
general
Skill nature
TOOL
Volatility
FAST
Typical lifespan
SHORT_LIVED
Version strategy
VERSIONED
Oracle Inform Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Clinical Data Management Tools
Sub-category
general
Skill nature
TOOL
Volatility
FAST
Typical lifespan
SHORT_LIVED
Version strategy
VERSIONED
Spotfire Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Data Visualization Tools
Sub-category
general
Skill nature
TOOL
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Tableau Primary Library skill API 3: existing canonical (in_db) Existing skill (matched library)
Canonical: Tableau id=150 · tableau

Aliases — catalog

  • Tableau (CANONICAL) primary

Context tags (catalog)

LOD expressions Tableau Cloud Tableau Desktop Tableau Prep Tableau Server actions calculated fields dashboards data blending data visualization extracts filters parameters published data sources workbooks

Stored enrichment (catalog DB)

Category
Platform
Sub-category
Bi Analytics Platform
Vendor
Tableau Software
License
proprietary
Year introduced
2003
Confidence
0.96
Version strategy
NOT_APPLICABLE

Maturity reasoning: Tableau appears frequently in BI/data analyst job descriptions and remains a standard enterprise analytics platform with strong vendor support and broad adoption.

Skill profile (library / DB)

Skill nature
PLATFORM
Volatility
STABLE
Typical lifespan
EVERGREEN
Category id
9
Sub-category id
111
Extractable
True
Also category
False

Dimensions (API 2 worklist)

  • BI and Visualization Tools Catalog dimension db id 31

    Library dimension (catalog)

    Roles linked in library: Data Engineer

API 3 link attempts (this skill)

Dimension Skill↔dim Role↔dim Outcome
BI and Visualization Tools
bi-and-visualization-tools
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
SAAMA Secondary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Clinical Data Management Tools
Sub-category
general
Skill nature
TOOL
Volatility
FAST
Typical lifespan
SHORT_LIVED
Version strategy
VERSIONED
Clinical Programming Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Practices in Clinical Research
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Data Reconciliation Primary Library skill API 3: existing canonical (in_db) Existing skill (matched library)
Canonical: Data reconciliation id=133 · data-reconciliation

Aliases — catalog

  • Data reconciliation (CANONICAL) primary

Context tags (catalog)

ETL audit trail balancing control totals cross-system validation data quality duplicate detection exception handling ledger master data management reconciliation report record matching reference data source-to-target mapping variance analysis

Stored enrichment (catalog DB)

Category
Methodology
Sub-category
Data Validation Methodology
Confidence
0.88
Version strategy
NOT_APPLICABLE

Maturity reasoning: Common in finance, payments, and ETL JDs; often listed as a core data quality/control requirement alongside SQL and ETL, with many vendor docs and job postings referencing reconciliation workflows.

Skill profile (library / DB)

Skill nature
METHODOLOGY
Volatility
STABLE
Typical lifespan
EVERGREEN
Category id
8
Sub-category id
108
Extractable
True
Also category
False

Dimensions (API 2 worklist)

  • Data Quality and Reconciliation Catalog dimension db id 27

    Library dimension (catalog)

    Roles linked in library: Data Engineer

API 3 link attempts (this skill)

Dimension Skill↔dim Role↔dim Outcome
Data Quality and Reconciliation
data-quality-and-reconciliation
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Quality Control Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Practices in Clinical Research
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Peer Review Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Practices in Clinical Research
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Automation Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Software Development Practices
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Standardization Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Practices in Clinical Research
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED
Good Clinical Practices Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Clinical Research Standards
Sub-category
general
Skill nature
CONCEPT
Volatility
STABLE
Typical lifespan
EVERGREEN
Version strategy
UNVERSIONED
SOPs Primary Library skill API 3: existing canonical (in_db) Existing skill (matched library)
Canonical: SOPs id=897 · sops

Aliases — catalog

  • SOPs (CANONICAL) primary

Context tags (catalog)

SOP templates audit trail audit trails best practices compliance continuous improvement documentation implementation guidelines operational efficiency performance metrics process improvement process mapping process optimization quality assurance regulatory requirements risk management standardization training manuals training materials workflow

Stored enrichment (catalog DB)

Category
Methodology
Sub-category
Standard Operating Procedure
Confidence
0.95
Version strategy
NOT_APPLICABLE

Maturity reasoning: Standard operating procedures are a common requirement in ops, QA, and regulated-industry job descriptions; they’re broadly used for process consistency and compliance rather than a niche tool.

Skill profile (library / DB)

Skill nature
METHODOLOGY
Volatility
STABLE
Typical lifespan
EVERGREEN
Category id
8
Sub-category id
629
Extractable
True
Also category
False

Dimensions (API 2 worklist)

  • Operational Automation and Runbooks Catalog dimension db id 222

    Library dimension (catalog)

    Roles linked in library: MLOps Engineer

  • Release Documentation and Runbooks Catalog dimension db id 158

    Library dimension (catalog)

    Roles linked in library: DevOps Engineer

API 3 link attempts (this skill)

Dimension Skill↔dim Role↔dim Outcome
Operational Automation and Runbooks
operational-automation-and-runbooks
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Release Documentation and Runbooks
release-documentation-and-runbooks
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Work Instructions Primary New / orchestrated API 3: new canonical path (new) New / unmatched skill (orchestrated in API 2)

Skill enrichment (orchestrator / LLM)

No Stage 7 enrichment blob on this skill (orchestrator skipped enrichment).

Derived legacy fields
Category
Documentation Practices
Sub-category
general
Skill nature
PRACTICE
Volatility
MEDIUM
Typical lifespan
MULTI_YEAR
Version strategy
UNVERSIONED

All API 3 persistence rows

Same grid as the skill-extractor “Persistence items” table: one row per (skill × dimension) work item.

Skill Tag Dimension Skill↔dim Role↔dim Outcome Notes
Python in_db
Cloud Security Scripting & DSL Languages
cloud-security-scripting-dsl-languages
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages
programming-languages
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages & DSLs
programming-languages-dsls
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages and Scripting
programming-languages-and-scripting
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages for Data Work
programming-languages-for-data-work
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages for ML Systems
programming-languages-for-ml-systems
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Programming Languages for XR
programming-languages-for-xr
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Python in_db
Python Programming
python-programming
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Tableau in_db
BI and Visualization Tools
bi-and-visualization-tools
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
Data Reconciliation in_db
Data Quality and Reconciliation
data-quality-and-reconciliation
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
SOPs in_db
Operational Automation and Runbooks
operational-automation-and-runbooks
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)
SOPs in_db
Release Documentation and Runbooks
release-documentation-and-runbooks
Existing dimension (library) · Role↔dimension skipped (dimension not under chosen role)

Library artifacts (this run)

Kind Detail DB id
canonical_skill_proposed SAS | type=Programming Languages subtype=general nature=LANGUAGE lifespan=MULTI_YEAR
canonical_skill_proposed SDTM | type=Clinical Data Standards subtype=general nature=CONCEPT lifespan=MULTI_YEAR
canonical_skill_proposed Medidata RAVE | type=Clinical Data Management Tools subtype=general nature=TOOL lifespan=SHORT_LIVED
canonical_skill_proposed Oracle Inform | type=Clinical Data Management Tools subtype=general nature=TOOL lifespan=SHORT_LIVED
canonical_skill_proposed Spotfire | type=Data Visualization Tools subtype=general nature=TOOL lifespan=MULTI_YEAR
canonical_skill_proposed SAAMA | type=Clinical Data Management Tools subtype=general nature=TOOL lifespan=SHORT_LIVED
canonical_skill_proposed Clinical Programming | type=Practices in Clinical Research subtype=general nature=PRACTICE lifespan=MULTI_YEAR
canonical_skill_proposed Quality Control | type=Practices in Clinical Research subtype=general nature=PRACTICE lifespan=MULTI_YEAR
canonical_skill_proposed Peer Review | type=Practices in Clinical Research subtype=general nature=PRACTICE lifespan=MULTI_YEAR
canonical_skill_proposed Automation | type=Software Development Practices subtype=general nature=PRACTICE lifespan=MULTI_YEAR
canonical_skill_proposed Standardization | type=Practices in Clinical Research subtype=general nature=PRACTICE lifespan=MULTI_YEAR
canonical_skill_proposed Good Clinical Practices | type=Clinical Research Standards subtype=general nature=CONCEPT lifespan=EVERGREEN
canonical_skill_proposed Work Instructions | type=Documentation Practices subtype=general nature=PRACTICE lifespan=MULTI_YEAR
nano JD Parser — gpt-4.1-nano click to toggle
RoleLead Statistical Programmer
CompanyFortrea
DomainHealthcare
JD type pass
Show raw JSON
{
  "JD_type": "pass",
  "about_company": null,
  "certifications": [],
  "company_name": "Fortrea",
  "ctc": null,
  "domain": {
    "primary": {
      "aliases": [
        "HealthTech",
        "Clinical Services"
      ],
      "domain": "Healthcare"
    },
    "secondary": null
  },
  "education": [],
  "experience": null,
  "job_locations": [],
  "role": "Lead Statistical Programmer",
  "role_aliases": [
    "Statistical Programmer",
    "Lead Programmer",
    "SAS Programmer"
  ],
  "role_archetype": "Data",
  "roles_and_responsibilities": [
    {
      "bullet_count": 0,
      "heading": "Job Overview",
      "heading_was_present": true,
      "source_marker": {
        "first_5_words": "Lead the development and implementation",
        "last_5_words": "for assigned projects."
      },
      "text": "Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analytics tools like Spotfire or Tableau. Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations. Perform any postproduction changes to the EDC database or enhancements to the SAS programs like SAS edit checks, listings, Protocol Deviations, SAS Datasets etc., Conduct Peer Review/Quality control of study design for assigned projects.",
      "word_count": 66
    },
    {
      "bullet_count": 20,
      "heading": "Summary Of Responsibilities",
      "heading_was_present": true,
      "source_marker": {
        "first_5_words": "\u2022 Lead the development and implementation",
        "last_5_words": "as assigned by Manager."
      },
      "text": "\u2022 Lead the development and implementation of solutions to global technical services issues and concerns regarding SAS or Python or Data/Report programming or Visual Analytics tools like Spotfire or Tableau.\n\u2022 Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.\n\u2022 Perform any post production changes to the SAS/Python programs edit checks, listings, Protocol Deviations, Datasets etc.,\n\u2022 Conduct Peer Review/Quality control of study design for assigned projects.\n\u2022 Lead the development and implementation of Clinical solutions to global technical services issues and concerns regarding SAS programming.\n\u2022 Lead the development of visual analytics dashboard using tools like Spotfire/Tableau.\n\u2022 Complete assigned work utilising SAS, Python, SAAMA or other proprietary software according to Fortrea SOPs, Work Instructions, and project specific guidelines in accordance with Good Clinical Practices.\n\u2022 Perform any post-production changes to the enhancements for SAS programs like SAS edit checks, listings, Protocol Deviations, etc.,\n\u2022 With assistance, meet with Data Manager on assigned projects to discuss contractual obligations and timelines.\n\u2022 Act as Subject Matter Expert (SME) and be point of contact for any technical services, issues related to SAS programming.\n\u2022 Serve as Lead Statistical Programmer providing programming support for development and maintenance of SDTM/Client standards datasets.\n\u2022 Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.\n\u2022 Develop and implement SDTM automation/standardization and best programming practices across projects to enhance quality and productivity.\n\u2022 Plan, execute and oversee all programming activities on a study, including but not limited to, resource estimation, meeting timelines, maximizing quality, interaction with other departments and the client, etc.\n\u2022 Exhibit good imparting, analytical skills along with testing, troubleshooting, error fixing, and documentation skills.\n\u2022 Participate in the ongoing review of the processes used to ensure adaptation of best practices.\n\u2022 Conduct Peer Review/Quality control of study design for assigned projects.\n\u2022 Able to work independently and take initiative to accept new challenges in Clinical Programming Applications, also participate in the validation of new or updates to software.\n\u2022 Resource forecasting and allocate activities to the team members on the project.\n\u2022 Generate reports/metrics or demonstrate programming process to sponsors/auditors (if required), assist with the design of study documents.\n\u2022 Perform other duties as assigned by Manager.",
      "word_count": 392
    }
  ],
  "urls": []
}
API 1 — extract-from-jd click to toggle
{
  "final_skills": [
    {
      "is_primary": true,
      "skill_name": "SAS"
    },
    {
      "is_primary": true,
      "skill_name": "Python"
    },
    {
      "is_primary": true,
      "skill_name": "SDTM"
    },
    {
      "is_primary": true,
      "skill_name": "Medidata RAVE"
    },
    {
      "is_primary": true,
      "skill_name": "Oracle Inform"
    },
    {
      "is_primary": true,
      "skill_name": "Spotfire"
    },
    {
      "is_primary": true,
      "skill_name": "Tableau"
    },
    {
      "is_primary": false,
      "skill_name": "SAAMA"
    },
    {
      "is_primary": true,
      "skill_name": "Clinical Programming"
    },
    {
      "is_primary": true,
      "skill_name": "Data Reconciliation"
    },
    {
      "is_primary": true,
      "skill_name": "Quality Control"
    },
    {
      "is_primary": true,
      "skill_name": "Peer Review"
    },
    {
      "is_primary": true,
      "skill_name": "Automation"
    },
    {
      "is_primary": true,
      "skill_name": "Standardization"
    },
    {
      "is_primary": true,
      "skill_name": "Good Clinical Practices"
    },
    {
      "is_primary": true,
      "skill_name": "SOPs"
    },
    {
      "is_primary": true,
      "skill_name": "Work Instructions"
    }
  ],
  "jd_role": {
    "display_name": "Lead Statistical Programmer",
    "rationale": null,
    "role_aliases": [
      "Statistical Programmer",
      "Lead Programmer",
      "SAS Programmer"
    ],
    "role_archetype": "Data",
    "slug": ""
  },
  "nano_parsed": {
    "JD_type": "pass",
    "about_company": null,
    "certifications": [],
    "company_name": "Fortrea",
    "ctc": null,
    "domain": {
      "primary": {
        "aliases": [
          "HealthTech",
          "Clinical Services"
        ],
        "domain": "Healthcare"
      },
      "secondary": null
    },
    "education": [],
    "experience": null,
    "job_locations": [],
    "role": "Lead Statistical Programmer",
    "role_aliases": [
      "Statistical Programmer",
      "Lead Programmer",
      "SAS Programmer"
    ],
    "role_archetype": "Data",
    "roles_and_responsibilities": [
      {
        "bullet_count": 0,
        "heading": "Job Overview",
        "heading_was_present": true,
        "source_marker": {
          "first_5_words": "Lead the development and implementation",
          "last_5_words": "for assigned projects."
        },
        "text": "Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analytics tools like Spotfire or Tableau. Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations. Perform any postproduction changes to the EDC database or enhancements to the SAS programs like SAS edit checks, listings, Protocol Deviations, SAS Datasets etc., Conduct Peer Review/Quality control of study design for assigned projects.",
        "word_count": 66
      },
      {
        "bullet_count": 20,
        "heading": "Summary Of Responsibilities",
        "heading_was_present": true,
        "source_marker": {
          "first_5_words": "\u2022 Lead the development and implementation",
          "last_5_words": "as assigned by Manager."
        },
        "text": "\u2022 Lead the development and implementation of solutions to global technical services issues and concerns regarding SAS or Python or Data/Report programming or Visual Analytics tools like Spotfire or Tableau.\n\u2022 Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.\n\u2022 Perform any post production changes to the SAS/Python programs edit checks, listings, Protocol Deviations, Datasets etc.,\n\u2022 Conduct Peer Review/Quality control of study design for assigned projects.\n\u2022 Lead the development and implementation of Clinical solutions to global technical services issues and concerns regarding SAS programming.\n\u2022 Lead the development of visual analytics dashboard using tools like Spotfire/Tableau.\n\u2022 Complete assigned work utilising SAS, Python, SAAMA or other proprietary software according to Fortrea SOPs, Work Instructions, and project specific guidelines in accordance with Good Clinical Practices.\n\u2022 Perform any post-production changes to the enhancements for SAS programs like SAS edit checks, listings, Protocol Deviations, etc.,\n\u2022 With assistance, meet with Data Manager on assigned projects to discuss contractual obligations and timelines.\n\u2022 Act as Subject Matter Expert (SME) and be point of contact for any technical services, issues related to SAS programming.\n\u2022 Serve as Lead Statistical Programmer providing programming support for development and maintenance of SDTM/Client standards datasets.\n\u2022 Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.\n\u2022 Develop and implement SDTM automation/standardization and best programming practices across projects to enhance quality and productivity.\n\u2022 Plan, execute and oversee all programming activities on a study, including but not limited to, resource estimation, meeting timelines, maximizing quality, interaction with other departments and the client, etc.\n\u2022 Exhibit good imparting, analytical skills along with testing, troubleshooting, error fixing, and documentation skills.\n\u2022 Participate in the ongoing review of the processes used to ensure adaptation of best practices.\n\u2022 Conduct Peer Review/Quality control of study design for assigned projects.\n\u2022 Able to work independently and take initiative to accept new challenges in Clinical Programming Applications, also participate in the validation of new or updates to software.\n\u2022 Resource forecasting and allocate activities to the team members on the project.\n\u2022 Generate reports/metrics or demonstrate programming process to sponsors/auditors (if required), assist with the design of study documents.\n\u2022 Perform other duties as assigned by Manager.",
        "word_count": 392
      }
    ],
    "urls": []
  },
  "rejected": false,
  "rejection_reason": null,
  "run_id": "b464d3e0-1325-48f4-b379-8c7db23f7b01",
  "stage3_signals": {
    "alias_found": false,
    "alias_match_roles": [],
    "kra_match_roles": [
      {
        "display_name": "Data Engineer",
        "kra_matches": [
          {
            "kra_text": "Implements data quality validation rules, reconciliation checks, and anomaly detection to ensure data completeness, accuracy, and consistency.",
            "sentence": "Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.5618
          },
          {
            "kra_text": "Implements data quality validation rules, reconciliation checks, and anomaly detection to ensure data completeness, accuracy, and consistency.",
            "sentence": "Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.",
            "similarity": 0.5599
          },
          {
            "kra_text": "Implements data transformation, cleansing, deduplication, and enrichment logic to convert raw source data into analytics-ready curated datasets.",
            "sentence": "Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.5485
          }
        ],
        "matched_count": null,
        "matched_skills": null,
        "role_id": 2,
        "score": 0.5567,
        "slug": "data-engineer",
        "total_count": null
      },
      {
        "display_name": "MLOps Engineer",
        "kra_matches": [
          {
            "kra_text": "Validates model performance benchmarks, data schema contracts, and system integration health before signing off on production release readiness.",
            "sentence": "Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.5095
          },
          {
            "kra_text": "Validates model performance benchmarks, data schema contracts, and system integration health before signing off on production release readiness.",
            "sentence": "Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.",
            "similarity": 0.4966
          },
          {
            "kra_text": "Validates model performance benchmarks, data schema contracts, and system integration health before signing off on production release readiness.",
            "sentence": "Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.4912
          }
        ],
        "matched_count": null,
        "matched_skills": null,
        "role_id": 16,
        "score": 0.4991,
        "slug": "ml-ops-engineer",
        "total_count": null
      },
      {
        "display_name": "Engineering Manager",
        "kra_matches": [
          {
            "kra_text": "Set team goals and delivery plans",
            "sentence": "Resource forecasting and allocate activities to the team members on the project.",
            "similarity": 0.5023
          },
          {
            "kra_text": "Set team goals and delivery plans",
            "sentence": "Plan, execute and oversee all programming activities on a study, including but not limited to, resource estimation, meeting timelines, maximizing quality, interaction with other departments and the client, etc. \u2022 Exhibit good imparting, analytical skills along with testing, troubleshooting, error fixing, and documentation skills.",
            "similarity": 0.4826
          },
          {
            "kra_text": "Set team goals and delivery plans",
            "sentence": "With assistance, meet with Data Manager on assigned projects to discuss contractual obligations and timelines.",
            "similarity": 0.4825
          }
        ],
        "matched_count": null,
        "matched_skills": null,
        "role_id": 121,
        "score": 0.4891,
        "slug": "engineering-manager",
        "total_count": null
      },
      {
        "display_name": "DevOps Engineer",
        "kra_matches": [
          {
            "kra_text": "Collaborates with development teams to improve build processes, reduce deployment friction, containerize applications, and adopt DevOps best practices.",
            "sentence": "Develop and implement SDTM automation/standardization and best programming practices across projects to enhance quality and productivity.",
            "similarity": 0.4752
          },
          {
            "kra_text": "Collaborates with development teams to improve build processes, reduce deployment friction, containerize applications, and adopt DevOps best practices.",
            "sentence": "Participate in the ongoing review of the processes used to ensure adaptation of best practices.",
            "similarity": 0.4572
          },
          {
            "kra_text": "Manages release management processes including environment promotion gates, deployment approval workflows, change management records, and rollback procedures.",
            "sentence": "Perform any postproduction changes to the EDC database or enhancements to the SAS programs like SAS edit checks, listings, Protocol Deviations, SAS Datasets etc. , Conduct Peer Review/Quality control of study design for assigned projects.",
            "similarity": 0.409
          }
        ],
        "matched_count": null,
        "matched_skills": null,
        "role_id": 10,
        "score": 0.4471,
        "slug": "devops-engineer",
        "total_count": null
      },
      {
        "display_name": "Java Backend Developer",
        "kra_matches": [
          {
            "kra_text": "persistence and data modeling",
            "sentence": "Develop/validate Custom/Complex SDTM domains and efficiently handle external data and data reconciliations.",
            "similarity": 0.4501
          },
          {
            "kra_text": "persistence and data modeling",
            "sentence": "Develop/validate Custom/Complex SAS / SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.4481
          },
          {
            "kra_text": "persistence and data modeling",
            "sentence": "Develop/validate Custom/Complex SAS / Python/SDTM datasets and efficiently handle external data and reconciliations.",
            "similarity": 0.441
          }
        ],
        "matched_count": null,
        "matched_skills": null,
        "role_id": 79,
        "score": 0.4464,
        "slug": "java-backend-developer",
        "total_count": null
      }
    ],
    "skill_match_roles": [
      {
        "display_name": "Data Engineer",
        "kra_matches": null,
        "matched_count": 3,
        "matched_skills": [
          "Data reconciliation",
          "Python",
          "Tableau"
        ],
        "role_id": 2,
        "score": 0.1875,
        "slug": "data-engineer",
        "total_count": 16
      },
      {
        "display_name": "MLOps Engineer",
        "kra_matches": null,
        "matched_count": 2,
        "matched_skills": [
          "Python",
          "SOPs"
        ],
        "role_id": 16,
        "score": 0.125,
        "slug": "ml-ops-engineer",
        "total_count": 16
      },
      {
        "display_name": "ML Engineer",
        "kra_matches": null,
        "matched_count": 1,
        "matched_skills": [
          "Python"
        ],
        "role_id": 3,
        "score": 0.0625,
        "slug": "ml-engineer",
        "total_count": 16
      },
      {
        "display_name": "AR/VR Engineer",
        "kra_matches": null,
        "matched_count": 1,
        "matched_skills": [
          "Python"
        ],
        "role_id": 8,
        "score": 0.0625,
        "slug": "ar-vr-engineer",
        "total_count": 16
      },
      {
        "display_name": "Cyber Security Engineer",
        "kra_matches": null,
        "matched_count": 1,
        "matched_skills": [
          "Python"
        ],
        "role_id": 5,
        "score": 0.0625,
        "slug": "cybersecurity-engineer",
        "total_count": 16
      }
    ]
  },
  "stage4_decision": {
    "alias_collision_detected": false,
    "case": "DOMAIN",
    "chosen_role": {
      "display_name": "BI Developer",
      "kra_matches": null,
      "matched_count": null,
      "matched_skills": null,
      "role_id": 147,
      "score": 0.88,
      "slug": "bi-developer",
      "total_count": null
    },
    "confidence": 0.88,
    "is_new_role": false,
    "llm2_fired": false,
    "llm2_reasoning": null,
    "matched_dimensions": [
      "Clinical statistical programming",
      "Visual analytics dashboard development",
      "SDTM dataset development and validation",
      "Data reconciliation and external data handling",
      "Programming quality control and peer review",
      "Study-level programming planning and oversight"
    ],
    "matched_kras": [
      "Lead development and implementation of technical services solutions",
      "Develop/validate Custom/Complex SAS / Python/SDTM datasets",
      "Handle external data and reconciliations",
      "Perform post production changes to programs",
      "Conduct Peer Review/Quality control of study design",
      "Lead development of visual analytics dashboard",
      "Act as Subject Matter Expert for SAS programming",
      "Develop and implement SDTM automation/standardization"
    ],
    "matched_skills": [
      "SAS",
      "Python",
      "SDTM",
      "Spotfire",
      "Tableau",
      "Medidata RAVE",
      "Oracle Inform",
      "SAAMA",
      "EDC",
      "Visual Analytics"
    ],
    "new_role_display_name": null,
    "new_role_slug": null,
    "queued": false,
    "reasoning": "Domain=Data Engineering \u0026 Analytics; The JD centers on SAS/Python programming plus Spotfire/Tableau dashboard development and clinical data/reporting support, which best matches a BI Developer role among the candidates.",
    "sub_role": null
  },
  "stage5_updates": {
    "centroid_n_after": 13,
    "centroid_updated": true,
    "collision_log_id": null,
    "new_kra_attached": {
      "best_kra_similarity": 0.0,
      "queue_id": 1973,
      "r_and_r_preview": "Lead the development and implementation of solutions to global technical services issues and concerns regarding EDC tools like Medidata RAVE or Oracle Inform or Data/Report programming or Visual Analy",
      "role_display_name": "BI Developer",
      "role_slug": "bi-developer",
      "status": "pending"
    },
    "new_skills_attached": [
      {
        "is_primary": true,
        "queue_id": 25274,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "SAS",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25275,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "SDTM",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25276,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Medidata RAVE",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25277,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Oracle Inform",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25278,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Spotfire",
        "status": "pending"
      },
      {
        "is_primary": false,
        "queue_id": 25279,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "SAAMA",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25280,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Clinical Programming",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25281,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Quality Control",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25282,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Peer Review",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25283,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Automation",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25284,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Standardization",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25285,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Good Clinical Practices",
        "status": "pending"
      },
      {
        "is_primary": true,
        "queue_id": 25286,
        "role_display_name": "BI Developer",
        "role_slug": "bi-developer",
        "skill_name": "Work Instructions",
        "status": "pending"
      }
    ],
    "queue_entry_id": null,
    "v3_pipeline_triggered": false,
    "v3_role_slug": null,
    "v3_run_id": null
  }
}
API 2 — extract-details
{
  "alias_matches": [
    {
      "alias_persist_skipped_reason": "alias_text already exists for this canonical skill",
      "alias_persisted": false,
      "existing_alias_id": 67,
      "existing_alias_text": "Python",
      "input_term": "Python",
      "matched_canonical": {
        "category_id": 6,
        "display_name": "Python",
        "id": 5,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "LANGUAGE",
        "slug": "python",
        "sub_category_id": 96,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "matched_via": "alias"
    },
    {
      "alias_persist_skipped_reason": "alias_text already exists for this canonical skill",
      "alias_persisted": false,
      "existing_alias_id": 359,
      "existing_alias_text": "Tableau",
      "input_term": "Tableau",
      "matched_canonical": {
        "category_id": 9,
        "display_name": "Tableau",
        "id": 150,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "PLATFORM",
        "slug": "tableau",
        "sub_category_id": 111,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "matched_via": "alias"
    },
    {
      "alias_persist_skipped_reason": "alias_text already exists for this canonical skill",
      "alias_persisted": false,
      "existing_alias_id": 337,
      "existing_alias_text": "Data reconciliation",
      "input_term": "Data Reconciliation",
      "matched_canonical": {
        "category_id": 8,
        "display_name": "Data reconciliation",
        "id": 133,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "METHODOLOGY",
        "slug": "data-reconciliation",
        "sub_category_id": 108,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "matched_via": "alias"
    },
    {
      "alias_persist_skipped_reason": "alias_text already exists for this canonical skill",
      "alias_persisted": false,
      "existing_alias_id": 1459,
      "existing_alias_text": "SOPs",
      "input_term": "SOPs",
      "matched_canonical": {
        "category_id": 8,
        "display_name": "SOPs",
        "id": 897,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "METHODOLOGY",
        "slug": "sops",
        "sub_category_id": 629,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "matched_via": "alias"
    }
  ],
  "candidate_roles": [
    {
      "display_name": "Cloud Security Engineer",
      "id": 23,
      "rationale": null,
      "role_archetype": null,
      "slug": "cloud-security-engineer",
      "source": "db"
    },
    {
      "display_name": "Backend Developer",
      "id": 1,
      "rationale": null,
      "role_archetype": "A Backend Engineer designs, builds, and maintains the server-side logic and data handling that power applications and services. They focus on implementing reliable business functionality, integrating with other systems, and ensuring the backend is scalable, maintainable, and observable.",
      "slug": "backend-engineer",
      "source": "db"
    },
    {
      "display_name": "Fullstack Developer",
      "id": 435,
      "rationale": null,
      "role_archetype": "Engineering",
      "slug": "fullstack-developer",
      "source": "db"
    },
    {
      "display_name": "Fullstack Developer",
      "id": 15,
      "rationale": null,
      "role_archetype": null,
      "slug": "full-stack-engineer",
      "source": "db"
    },
    {
      "display_name": "Engineering Manager",
      "id": 121,
      "rationale": null,
      "role_archetype": null,
      "slug": "engineering-manager",
      "source": "db"
    },
    {
      "display_name": "Cyber Security Engineer",
      "id": 5,
      "rationale": null,
      "role_archetype": null,
      "slug": "cybersecurity-engineer",
      "source": "db"
    },
    {
      "display_name": "Data Engineer",
      "id": 2,
      "rationale": null,
      "role_archetype": null,
      "slug": "data-engineer",
      "source": "db"
    },
    {
      "display_name": "ML Engineer",
      "id": 3,
      "rationale": null,
      "role_archetype": null,
      "slug": "ml-engineer",
      "source": "db"
    },
    {
      "display_name": "MLOps Engineer",
      "id": 16,
      "rationale": null,
      "role_archetype": null,
      "slug": "ml-ops-engineer",
      "source": "db"
    },
    {
      "display_name": "AR/VR Engineer",
      "id": 8,
      "rationale": null,
      "role_archetype": null,
      "slug": "ar-vr-engineer",
      "source": "db"
    },
    {
      "display_name": "Python Backend Developer",
      "id": 80,
      "rationale": null,
      "role_archetype": "Engineering",
      "slug": "python-backend-developer",
      "source": "db"
    },
    {
      "display_name": "DevOps Engineer",
      "id": 10,
      "rationale": null,
      "role_archetype": null,
      "slug": "devops-engineer",
      "source": "db"
    }
  ],
  "chosen_role": {
    "display_name": "BI Developer",
    "id": 147,
    "rationale": "Domain=Data Engineering \u0026 Analytics; The JD centers on SAS/Python programming plus Spotfire/Tableau dashboard development and clinical data/reporting support, which best matches a BI Developer role among the candidates.",
    "role_archetype": null,
    "slug": "bi-developer",
    "source": "db"
  },
  "dimensions": [
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Cloud Security Scripting \u0026 DSL Languages",
        "id": 248,
        "rationale": "Proficiency in programming and domain-specific languages used to automate and script cloud security controls.",
        "slug": "cloud-security-scripting-dsl-languages",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Cloud Security Engineer",
          "id": 23,
          "rationale": null,
          "role_archetype": null,
          "slug": "cloud-security-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages",
        "id": 1,
        "rationale": "Primary implementation languages used to build client and server feature code. Full stack engineers need enough fluency to move across layers and implement product behavior end to end.",
        "slug": "programming-languages",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Backend Developer",
          "id": 1,
          "rationale": null,
          "role_archetype": "A Backend Engineer designs, builds, and maintains the server-side logic and data handling that power applications and services. They focus on implementing reliable business functionality, integrating with other systems, and ensuring the backend is scalable, maintainable, and observable.",
          "slug": "backend-engineer",
          "source": "db"
        },
        {
          "display_name": "Fullstack Developer",
          "id": 435,
          "rationale": null,
          "role_archetype": "Engineering",
          "slug": "fullstack-developer",
          "source": "db"
        },
        {
          "display_name": "Fullstack Developer",
          "id": 15,
          "rationale": null,
          "role_archetype": null,
          "slug": "full-stack-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages \u0026 DSLs",
        "id": 475,
        "rationale": "Oversee and guide the selection and effective use of programming and domain\u2010specific languages in software projects.",
        "slug": "programming-languages-dsls",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Engineering Manager",
          "id": 121,
          "rationale": null,
          "role_archetype": null,
          "slug": "engineering-manager",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages and Scripting",
        "id": 59,
        "rationale": "Languages used to write security automation, analysis scripts, detection logic, and remediation helpers. This is the primary implementation surface for a cybersecurity engineer across tooling and response workflows.",
        "slug": "programming-languages-and-scripting",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Cyber Security Engineer",
          "id": 5,
          "rationale": null,
          "role_archetype": null,
          "slug": "cybersecurity-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages for Data Work",
        "id": 21,
        "rationale": "Languages used to implement data pipelines, transformations, and operational glue. This is the primary coding surface for building ingestion, enrichment, and automation logic in data engineering.",
        "slug": "programming-languages-for-data-work",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Data Engineer",
          "id": 2,
          "rationale": null,
          "role_archetype": null,
          "slug": "data-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages for ML Systems",
        "id": 39,
        "rationale": "Languages used to build training code, inference services, evaluation jobs, and ML glue code. This is the primary implementation surface for ML engineers across experimentation and productionization.",
        "slug": "programming-languages-for-ml-systems",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "ML Engineer",
          "id": 3,
          "rationale": null,
          "role_archetype": null,
          "slug": "ml-engineer",
          "source": "db"
        },
        {
          "display_name": "MLOps Engineer",
          "id": 16,
          "rationale": null,
          "role_archetype": null,
          "slug": "ml-ops-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Programming Languages for XR",
        "id": 97,
        "rationale": "Primary implementation languages used to build immersive client features, interaction logic, and device-specific runtime behavior. This is the core coding surface for AR/VR experiences.",
        "slug": "programming-languages-for-xr",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "AR/VR Engineer",
          "id": 8,
          "rationale": null,
          "role_archetype": null,
          "slug": "ar-vr-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Python Programming",
        "id": 290,
        "rationale": "Core Python language skills used to implement backend business logic, request handlers, integrations, and service internals. This is the primary coding surface for the role.",
        "slug": "python-programming",
        "source": "db"
      },
      "input_skill": "Python",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Python Backend Developer",
          "id": 80,
          "rationale": null,
          "role_archetype": "Engineering",
          "slug": "python-backend-developer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "BI and Visualization Tools",
        "id": 31,
        "rationale": "Tools used to expose curated data to analysts and business users through dashboards, reports, and semantic exploration. Data engineers support these tools by shaping reliable datasets and performant models.",
        "slug": "bi-and-visualization-tools",
        "source": "db"
      },
      "input_skill": "Tableau",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Data Engineer",
          "id": 2,
          "rationale": null,
          "role_archetype": null,
          "slug": "data-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Data Quality and Reconciliation",
        "id": 27,
        "rationale": "Validation and reconciliation practices that ensure data is accurate, complete, and trustworthy. This includes rule-based checks, anomaly detection, cross-system reconciliation, and failure triage.",
        "slug": "data-quality-and-reconciliation",
        "source": "db"
      },
      "input_skill": "Data Reconciliation",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "Data Engineer",
          "id": 2,
          "rationale": null,
          "role_archetype": null,
          "slug": "data-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Operational Automation and Runbooks",
        "id": 222,
        "rationale": "Automation patterns, runbooks, and procedures used to keep model operations repeatable and recoverable. This cluster covers the day-to-day operational glue that turns release policy into executable steps.",
        "slug": "operational-automation-and-runbooks",
        "source": "db"
      },
      "input_skill": "SOPs",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "MLOps Engineer",
          "id": 16,
          "rationale": null,
          "role_archetype": null,
          "slug": "ml-ops-engineer",
          "source": "db"
        }
      ]
    },
    {
      "dimension": {
        "difficulty_hint": "well_known",
        "display_name": "Release Documentation and Runbooks",
        "id": 158,
        "rationale": "Operational documents that explain how to deploy, recover, and hand off systems safely. This is a coherent dimension because DevOps work depends on repeatable procedures and clear escalation paths.",
        "slug": "release-documentation-and-runbooks",
        "source": "db"
      },
      "input_skill": "SOPs",
      "llm_role": null,
      "roles_from_db": [
        {
          "display_name": "DevOps Engineer",
          "id": 10,
          "rationale": null,
          "role_archetype": null,
          "slug": "devops-engineer",
          "source": "db"
        }
      ]
    }
  ],
  "input_final_skills": [
    "SAS",
    "Python",
    "SDTM",
    "Medidata RAVE",
    "Oracle Inform",
    "Spotfire",
    "Tableau",
    "SAAMA",
    "Clinical Programming",
    "Data Reconciliation",
    "Quality Control",
    "Peer Review",
    "Automation",
    "Standardization",
    "Good Clinical Practices",
    "SOPs",
    "Work Instructions"
  ],
  "input_llm_skills": [
    "SAS",
    "Python",
    "SDTM",
    "Medidata RAVE",
    "Oracle Inform",
    "Spotfire",
    "Tableau",
    "SAAMA",
    "Clinical Programming",
    "Data Reconciliation",
    "Quality Control",
    "Peer Review",
    "Automation",
    "Standardization",
    "Good Clinical Practices",
    "SOPs",
    "Work Instructions"
  ],
  "new_aliases_persisted": 0,
  "run_id": "b464d3e0-1325-48f4-b379-8c7db23f7b01",
  "skills_detail": [
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "SAS",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Programming Languages",
          "skill_nature": "LANGUAGE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "sas",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [
        {
          "alias_text": "Python",
          "alias_type": "CANONICAL",
          "id": 67,
          "is_primary": true,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 2",
          "alias_type": "VERSION",
          "id": 72,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 2.x",
          "alias_type": "VERSION",
          "id": 74,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 3",
          "alias_type": "VERSION",
          "id": 73,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 3.10",
          "alias_type": "VERSION",
          "id": 76,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 3.11",
          "alias_type": "VERSION",
          "id": 77,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 3.12",
          "alias_type": "VERSION",
          "id": 78,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "Python 3.x",
          "alias_type": "VERSION",
          "id": 75,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "py",
          "alias_type": "VERSION",
          "id": 2183,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "py2",
          "alias_type": "VERSION",
          "id": 68,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "py3",
          "alias_type": "VERSION",
          "id": 69,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "python 3",
          "alias_type": "VERSION",
          "id": 2186,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "python 3.x",
          "alias_type": "VERSION",
          "id": 2849,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "python2",
          "alias_type": "VERSION",
          "id": 70,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "python3",
          "alias_type": "VERSION",
          "id": 71,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        },
        {
          "alias_text": "python3.x",
          "alias_type": "VERSION",
          "id": 2848,
          "is_primary": false,
          "match_strategy": "CASE_INSENSITIVE"
        }
      ],
      "canonical": {
        "category_id": 6,
        "display_name": "Python",
        "id": 5,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "LANGUAGE",
        "slug": "python",
        "sub_category_id": 96,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "dimensions": [
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Cloud Security Scripting \u0026 DSL Languages",
            "id": 248,
            "rationale": "Proficiency in programming and domain-specific languages used to automate and script cloud security controls.",
            "slug": "cloud-security-scripting-dsl-languages",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Cloud Security Engineer",
              "id": 23,
              "rationale": null,
              "role_archetype": null,
              "slug": "cloud-security-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages",
            "id": 1,
            "rationale": "Primary implementation languages used to build client and server feature code. Full stack engineers need enough fluency to move across layers and implement product behavior end to end.",
            "slug": "programming-languages",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Backend Developer",
              "id": 1,
              "rationale": null,
              "role_archetype": "A Backend Engineer designs, builds, and maintains the server-side logic and data handling that power applications and services. They focus on implementing reliable business functionality, integrating with other systems, and ensuring the backend is scalable, maintainable, and observable.",
              "slug": "backend-engineer",
              "source": "db"
            },
            {
              "display_name": "Fullstack Developer",
              "id": 435,
              "rationale": null,
              "role_archetype": "Engineering",
              "slug": "fullstack-developer",
              "source": "db"
            },
            {
              "display_name": "Fullstack Developer",
              "id": 15,
              "rationale": null,
              "role_archetype": null,
              "slug": "full-stack-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages \u0026 DSLs",
            "id": 475,
            "rationale": "Oversee and guide the selection and effective use of programming and domain\u2010specific languages in software projects.",
            "slug": "programming-languages-dsls",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Engineering Manager",
              "id": 121,
              "rationale": null,
              "role_archetype": null,
              "slug": "engineering-manager",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages and Scripting",
            "id": 59,
            "rationale": "Languages used to write security automation, analysis scripts, detection logic, and remediation helpers. This is the primary implementation surface for a cybersecurity engineer across tooling and response workflows.",
            "slug": "programming-languages-and-scripting",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Cyber Security Engineer",
              "id": 5,
              "rationale": null,
              "role_archetype": null,
              "slug": "cybersecurity-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages for Data Work",
            "id": 21,
            "rationale": "Languages used to implement data pipelines, transformations, and operational glue. This is the primary coding surface for building ingestion, enrichment, and automation logic in data engineering.",
            "slug": "programming-languages-for-data-work",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Data Engineer",
              "id": 2,
              "rationale": null,
              "role_archetype": null,
              "slug": "data-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages for ML Systems",
            "id": 39,
            "rationale": "Languages used to build training code, inference services, evaluation jobs, and ML glue code. This is the primary implementation surface for ML engineers across experimentation and productionization.",
            "slug": "programming-languages-for-ml-systems",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "ML Engineer",
              "id": 3,
              "rationale": null,
              "role_archetype": null,
              "slug": "ml-engineer",
              "source": "db"
            },
            {
              "display_name": "MLOps Engineer",
              "id": 16,
              "rationale": null,
              "role_archetype": null,
              "slug": "ml-ops-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Programming Languages for XR",
            "id": 97,
            "rationale": "Primary implementation languages used to build immersive client features, interaction logic, and device-specific runtime behavior. This is the core coding surface for AR/VR experiences.",
            "slug": "programming-languages-for-xr",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "AR/VR Engineer",
              "id": 8,
              "rationale": null,
              "role_archetype": null,
              "slug": "ar-vr-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Python Programming",
            "id": 290,
            "rationale": "Core Python language skills used to implement backend business logic, request handlers, integrations, and service internals. This is the primary coding surface for the role.",
            "slug": "python-programming",
            "source": "db"
          },
          "input_skill": "Python",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Python Backend Developer",
              "id": 80,
              "rationale": null,
              "role_archetype": "Engineering",
              "slug": "python-backend-developer",
              "source": "db"
            }
          ]
        }
      ],
      "input_skill": "Python",
      "matched_via": "alias",
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": null,
      "source_tag": "db",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "SDTM",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Clinical Data Standards",
          "skill_nature": "CONCEPT",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "sdtm",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Medidata RAVE",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Clinical Data Management Tools",
          "skill_nature": "TOOL",
          "sub_category": "general",
          "typical_lifespan": "SHORT_LIVED",
          "version_strategy": "VERSIONED",
          "volatility": "FAST"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "medidata-rave",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Oracle Inform",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Clinical Data Management Tools",
          "skill_nature": "TOOL",
          "sub_category": "general",
          "typical_lifespan": "SHORT_LIVED",
          "version_strategy": "VERSIONED",
          "volatility": "FAST"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "oracle-inform",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Spotfire",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Data Visualization Tools",
          "skill_nature": "TOOL",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "spotfire",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [
        {
          "alias_text": "Tableau",
          "alias_type": "CANONICAL",
          "id": 359,
          "is_primary": true,
          "match_strategy": "CASE_INSENSITIVE"
        }
      ],
      "canonical": {
        "category_id": 9,
        "display_name": "Tableau",
        "id": 150,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "PLATFORM",
        "slug": "tableau",
        "sub_category_id": 111,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "dimensions": [
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "BI and Visualization Tools",
            "id": 31,
            "rationale": "Tools used to expose curated data to analysts and business users through dashboards, reports, and semantic exploration. Data engineers support these tools by shaping reliable datasets and performant models.",
            "slug": "bi-and-visualization-tools",
            "source": "db"
          },
          "input_skill": "Tableau",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Data Engineer",
              "id": 2,
              "rationale": null,
              "role_archetype": null,
              "slug": "data-engineer",
              "source": "db"
            }
          ]
        }
      ],
      "input_skill": "Tableau",
      "matched_via": "alias",
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": null,
      "source_tag": "db",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "SAAMA",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Clinical Data Management Tools",
          "skill_nature": "TOOL",
          "sub_category": "general",
          "typical_lifespan": "SHORT_LIVED",
          "version_strategy": "VERSIONED",
          "volatility": "FAST"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "saama",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Clinical Programming",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Practices in Clinical Research",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "clinical-programming",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [
        {
          "alias_text": "Data reconciliation",
          "alias_type": "CANONICAL",
          "id": 337,
          "is_primary": true,
          "match_strategy": "CASE_INSENSITIVE"
        }
      ],
      "canonical": {
        "category_id": 8,
        "display_name": "Data reconciliation",
        "id": 133,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "METHODOLOGY",
        "slug": "data-reconciliation",
        "sub_category_id": 108,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "dimensions": [
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Data Quality and Reconciliation",
            "id": 27,
            "rationale": "Validation and reconciliation practices that ensure data is accurate, complete, and trustworthy. This includes rule-based checks, anomaly detection, cross-system reconciliation, and failure triage.",
            "slug": "data-quality-and-reconciliation",
            "source": "db"
          },
          "input_skill": "Data Reconciliation",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "Data Engineer",
              "id": 2,
              "rationale": null,
              "role_archetype": null,
              "slug": "data-engineer",
              "source": "db"
            }
          ]
        }
      ],
      "input_skill": "Data Reconciliation",
      "matched_via": "alias",
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": null,
      "source_tag": "db",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Quality Control",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Practices in Clinical Research",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "quality-control",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Peer Review",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Practices in Clinical Research",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "peer-review",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Automation",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Software Development Practices",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "automation",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Standardization",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Practices in Clinical Research",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "standardization",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Good Clinical Practices",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Clinical Research Standards",
          "skill_nature": "CONCEPT",
          "sub_category": "general",
          "typical_lifespan": "EVERGREEN",
          "version_strategy": "UNVERSIONED",
          "volatility": "STABLE"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "good-clinical-practices",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [
        {
          "alias_text": "SOPs",
          "alias_type": "CANONICAL",
          "id": 1459,
          "is_primary": true,
          "match_strategy": "CASE_INSENSITIVE"
        }
      ],
      "canonical": {
        "category_id": 8,
        "display_name": "SOPs",
        "id": 897,
        "is_also_category": false,
        "is_extractable": true,
        "skill_nature": "METHODOLOGY",
        "slug": "sops",
        "sub_category_id": 629,
        "typical_lifespan": "EVERGREEN",
        "volatility": "STABLE"
      },
      "dimensions": [
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Operational Automation and Runbooks",
            "id": 222,
            "rationale": "Automation patterns, runbooks, and procedures used to keep model operations repeatable and recoverable. This cluster covers the day-to-day operational glue that turns release policy into executable steps.",
            "slug": "operational-automation-and-runbooks",
            "source": "db"
          },
          "input_skill": "SOPs",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "MLOps Engineer",
              "id": 16,
              "rationale": null,
              "role_archetype": null,
              "slug": "ml-ops-engineer",
              "source": "db"
            }
          ]
        },
        {
          "dimension": {
            "difficulty_hint": "well_known",
            "display_name": "Release Documentation and Runbooks",
            "id": 158,
            "rationale": "Operational documents that explain how to deploy, recover, and hand off systems safely. This is a coherent dimension because DevOps work depends on repeatable procedures and clear escalation paths.",
            "slug": "release-documentation-and-runbooks",
            "source": "db"
          },
          "input_skill": "SOPs",
          "llm_role": null,
          "roles_from_db": [
            {
              "display_name": "DevOps Engineer",
              "id": 10,
              "rationale": null,
              "role_archetype": null,
              "slug": "devops-engineer",
              "source": "db"
            }
          ]
        }
      ],
      "input_skill": "SOPs",
      "matched_via": "alias",
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": null,
      "source_tag": "db",
      "was_in_llm_skills": true
    },
    {
      "aliases_in_db": [],
      "canonical": null,
      "dimensions": [],
      "input_skill": "Work Instructions",
      "matched_via": null,
      "new_alias_persisted": false,
      "new_alias_text": null,
      "new_skill_meta": {
        "derived": {
          "category": "Documentation Practices",
          "skill_nature": "PRACTICE",
          "sub_category": "general",
          "typical_lifespan": "MULTI_YEAR",
          "version_strategy": "UNVERSIONED",
          "volatility": "MEDIUM"
        },
        "enrichment": null,
        "keep_log": [],
        "locked_dimensions": [],
        "merge_log": [],
        "placed": null,
        "relationships": null,
        "skill_id": "work-instructions",
        "split_log": [],
        "typed": null,
        "warnings": []
      },
      "source_tag": "llm",
      "was_in_llm_skills": true
    }
  ],
  "unmatched_skills": [
    "SAS",
    "SDTM",
    "Medidata RAVE",
    "Oracle Inform",
    "Spotfire",
    "SAAMA",
    "Clinical Programming",
    "Quality Control",
    "Peer Review",
    "Automation",
    "Standardization",
    "Good Clinical Practices",
    "Work Instructions"
  ]
}
API 3 — final-role-output
{
  "chosen_role": {
    "display_name": "BI Developer",
    "id": 147,
    "rationale": "Domain=Data Engineering \u0026 Analytics; The JD centers on SAS/Python programming plus Spotfire/Tableau dashboard development and clinical data/reporting support, which best matches a BI Developer role among the candidates.",
    "role_archetype": null,
    "slug": "bi-developer",
    "source": "db"
  },
  "chosen_role_resolution": "in_db",
  "final_input_skills": [
    {
      "skill": "SAS",
      "tag": "new"
    },
    {
      "skill": "Python",
      "tag": "in_db"
    },
    {
      "skill": "SDTM",
      "tag": "new"
    },
    {
      "skill": "Medidata RAVE",
      "tag": "new"
    },
    {
      "skill": "Oracle Inform",
      "tag": "new"
    },
    {
      "skill": "Spotfire",
      "tag": "new"
    },
    {
      "skill": "Tableau",
      "tag": "in_db"
    },
    {
      "skill": "SAAMA",
      "tag": "new"
    },
    {
      "skill": "Clinical Programming",
      "tag": "new"
    },
    {
      "skill": "Data Reconciliation",
      "tag": "in_db"
    },
    {
      "skill": "Quality Control",
      "tag": "new"
    },
    {
      "skill": "Peer Review",
      "tag": "new"
    },
    {
      "skill": "Automation",
      "tag": "new"
    },
    {
      "skill": "Standardization",
      "tag": "new"
    },
    {
      "skill": "Good Clinical Practices",
      "tag": "new"
    },
    {
      "skill": "SOPs",
      "tag": "in_db"
    },
    {
      "skill": "Work Instructions",
      "tag": "new"
    }
  ],
  "llm_cost_api1_usd": null,
  "llm_cost_api2_usd": null,
  "llm_cost_api3_usd": null,
  "llm_cost_total_usd": null,
  "persistence": {
    "items": [
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Cloud Security Scripting \u0026 DSL Languages",
          "id": 248,
          "rationale": "Proficiency in programming and domain-specific languages used to automate and script cloud security controls.",
          "slug": "cloud-security-scripting-dsl-languages",
          "source": "db"
        },
        "dimension_id": 248,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Cloud Security Engineer",
            "id": 23,
            "rationale": null,
            "role_archetype": null,
            "slug": "cloud-security-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages",
          "id": 1,
          "rationale": "Primary implementation languages used to build client and server feature code. Full stack engineers need enough fluency to move across layers and implement product behavior end to end.",
          "slug": "programming-languages",
          "source": "db"
        },
        "dimension_id": 1,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Backend Developer",
            "id": 1,
            "rationale": null,
            "role_archetype": "A Backend Engineer designs, builds, and maintains the server-side logic and data handling that power applications and services. They focus on implementing reliable business functionality, integrating with other systems, and ensuring the backend is scalable, maintainable, and observable.",
            "slug": "backend-engineer",
            "source": "db"
          },
          {
            "display_name": "Fullstack Developer",
            "id": 435,
            "rationale": null,
            "role_archetype": "Engineering",
            "slug": "fullstack-developer",
            "source": "db"
          },
          {
            "display_name": "Fullstack Developer",
            "id": 15,
            "rationale": null,
            "role_archetype": null,
            "slug": "full-stack-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages \u0026 DSLs",
          "id": 475,
          "rationale": "Oversee and guide the selection and effective use of programming and domain\u2010specific languages in software projects.",
          "slug": "programming-languages-dsls",
          "source": "db"
        },
        "dimension_id": 475,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Engineering Manager",
            "id": 121,
            "rationale": null,
            "role_archetype": null,
            "slug": "engineering-manager",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages and Scripting",
          "id": 59,
          "rationale": "Languages used to write security automation, analysis scripts, detection logic, and remediation helpers. This is the primary implementation surface for a cybersecurity engineer across tooling and response workflows.",
          "slug": "programming-languages-and-scripting",
          "source": "db"
        },
        "dimension_id": 59,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Cyber Security Engineer",
            "id": 5,
            "rationale": null,
            "role_archetype": null,
            "slug": "cybersecurity-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages for Data Work",
          "id": 21,
          "rationale": "Languages used to implement data pipelines, transformations, and operational glue. This is the primary coding surface for building ingestion, enrichment, and automation logic in data engineering.",
          "slug": "programming-languages-for-data-work",
          "source": "db"
        },
        "dimension_id": 21,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Data Engineer",
            "id": 2,
            "rationale": null,
            "role_archetype": null,
            "slug": "data-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages for ML Systems",
          "id": 39,
          "rationale": "Languages used to build training code, inference services, evaluation jobs, and ML glue code. This is the primary implementation surface for ML engineers across experimentation and productionization.",
          "slug": "programming-languages-for-ml-systems",
          "source": "db"
        },
        "dimension_id": 39,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "ML Engineer",
            "id": 3,
            "rationale": null,
            "role_archetype": null,
            "slug": "ml-engineer",
            "source": "db"
          },
          {
            "display_name": "MLOps Engineer",
            "id": 16,
            "rationale": null,
            "role_archetype": null,
            "slug": "ml-ops-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Programming Languages for XR",
          "id": 97,
          "rationale": "Primary implementation languages used to build immersive client features, interaction logic, and device-specific runtime behavior. This is the core coding surface for AR/VR experiences.",
          "slug": "programming-languages-for-xr",
          "source": "db"
        },
        "dimension_id": 97,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "AR/VR Engineer",
            "id": 8,
            "rationale": null,
            "role_archetype": null,
            "slug": "ar-vr-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Python Programming",
          "id": 290,
          "rationale": "Core Python language skills used to implement backend business logic, request handlers, integrations, and service internals. This is the primary coding surface for the role.",
          "slug": "python-programming",
          "source": "db"
        },
        "dimension_id": 290,
        "input_skill": "Python",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Python Backend Developer",
            "id": 80,
            "rationale": null,
            "role_archetype": "Engineering",
            "slug": "python-backend-developer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 5,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "BI and Visualization Tools",
          "id": 31,
          "rationale": "Tools used to expose curated data to analysts and business users through dashboards, reports, and semantic exploration. Data engineers support these tools by shaping reliable datasets and performant models.",
          "slug": "bi-and-visualization-tools",
          "source": "db"
        },
        "dimension_id": 31,
        "input_skill": "Tableau",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Data Engineer",
            "id": 2,
            "rationale": null,
            "role_archetype": null,
            "slug": "data-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 150,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Data Quality and Reconciliation",
          "id": 27,
          "rationale": "Validation and reconciliation practices that ensure data is accurate, complete, and trustworthy. This includes rule-based checks, anomaly detection, cross-system reconciliation, and failure triage.",
          "slug": "data-quality-and-reconciliation",
          "source": "db"
        },
        "dimension_id": 27,
        "input_skill": "Data Reconciliation",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "Data Engineer",
            "id": 2,
            "rationale": null,
            "role_archetype": null,
            "slug": "data-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 133,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Operational Automation and Runbooks",
          "id": 222,
          "rationale": "Automation patterns, runbooks, and procedures used to keep model operations repeatable and recoverable. This cluster covers the day-to-day operational glue that turns release policy into executable steps.",
          "slug": "operational-automation-and-runbooks",
          "source": "db"
        },
        "dimension_id": 222,
        "input_skill": "SOPs",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "MLOps Engineer",
            "id": 16,
            "rationale": null,
            "role_archetype": null,
            "slug": "ml-ops-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 897,
        "skill_tag": "in_db",
        "skipped_reason": null
      },
      {
        "chosen_role_id": 147,
        "dimension": {
          "difficulty_hint": "well_known",
          "display_name": "Release Documentation and Runbooks",
          "id": 158,
          "rationale": "Operational documents that explain how to deploy, recover, and hand off systems safely. This is a coherent dimension because DevOps work depends on repeatable procedures and clear escalation paths.",
          "slug": "release-documentation-and-runbooks",
          "source": "db"
        },
        "dimension_id": 158,
        "input_skill": "SOPs",
        "llm_role": null,
        "matched_chosen_role": false,
        "outcome_line": "Existing dimension (library) \u00b7 Role\u2194dimension skipped (dimension not under chosen role)",
        "role_dimension_saved": false,
        "roles_from_db": [
          {
            "display_name": "DevOps Engineer",
            "id": 10,
            "rationale": null,
            "role_archetype": null,
            "slug": "devops-engineer",
            "source": "db"
          }
        ],
        "skill_dimension_saved": true,
        "skill_id": 897,
        "skill_tag": "in_db",
        "skipped_reason": null
      }
    ],
    "new_skills_created": 0,
    "role_dimension_saved": 0,
    "skill_dimension_saved": 0,
    "skipped": 0
  },
  "planner_output": null,
  "run_id": "b464d3e0-1325-48f4-b379-8c7db23f7b01"
}