Client
Deloitte
Industry
Accounting / HR Tech
Role
Senior Product Designer
Deliverables
End-to-end UX · Figma · Dev handoff
Period
2024-26

Skill Management Ecosystem

Engineering a bi-directional mapping system to harmonize global skill taxonomies and external market data across Deloitte's global operations.

Challenge

Fragmented skill taxonomies across internal DST records and external market libraries created days of manual mapping work.

Solution

A bi-directional Translation Tables module with active upload validation, dual-view relational engine, and a full governance queue.

Impact

100% data integrity since launch. Mapping reduced from days to minutes. Admins self-correct with contextual tooltips.

The Gatekeeper

Backend Logic · Data Validation · Error Handling

Before touching the UI, I mapped the backend validation logic for data ingestion — moving the system from “Passive Uploading” to “Active Validation.” The system intercepts every CSV upload with a 3-point check:

  • Uniqueness: Checking IDs against existing DST and Market Library records
  • Structural Integrity: Identifying rows missing mandatory metadata (Category/Source)
  • Mapping Conflicts: Flagging skills already linked to other hosts to prevent many-to-many data corruption

Design Decision

Instead of a generic Error message, I designed an Upload Log that highlights specific row-level errors, allowing users to correct data before it hits the production database.

// Key Feature — Contextual Guidance System

I integrated an error-reporting layer that speaks admin language, not system language. Recognizing that technical error codes are a barrier for non-technical users, every flagged row-level error is paired with an interactive tooltip — hovering a highlighted error like “Duplicate Skill ID” surfaces a plain-language explanation of exactly what went wrong.

This turns a dead-end error message into guided troubleshooting, reducing reliance on IT support tickets and helping data get corrected with precision.

IN.00Incoming Recordvs in-file / in-systemCHK.01UniquenessNO MATCHPARTIAL · EXACTCHK.02Structural IntegrityCOMPLETEINCOMPLETECHK.03Mapping ConflictNO CONFLICTCONFLICT DETECTEDGATESeverity Gateroutes bycriticalityOUT.AAcceptclean passOUT.FFlagreview flaggedOUT.XExcludeblockedNON-CRITICALCRITICALFIG. 01 — VALIDATION LOGIC3 CHECKS / 1 GATE / 3 STATESReal validation logic, abstracted from a production system.record / severity / route
3-point validation logic flow
Cases

Uploader Logic

The system loads the skills from the uploaded file and compares them with existing data in the Translation Tables section to identify any missing or duplicate entries. If such cases are detected, the following logic is applied:

CRITICAL
NON-CRITICAL
SKILL NAME
CATALOG
ID
SITUATION
CHIP IN TABLE
EXPECTED RESULT
1ST SKILL
Excel
Company Certifications
123
No duplicated in Translation Tables/File, first skill to upload
No chip required
Skill is able to be uploaded
DUPLICATIONS IN FILE
Excel
Global Skills
321
Only name matches
No chip required
Excel
Company Certifications
321
ID does not match but name and Catalog does not
Name & Catalog match
Excel
Global Skills
123
Same Name & ID in file
Duplicate Skill ID
Word
Company Certifications
123
Same ID & Catalog in file
Duplicate Skill ID
Word
Global Skills
123
Same ID in file
Duplicate Skill ID
All the duplicated skills on the file are excluded from the current upload
DUPLICATIONS IN TT
Excel
Global Skills
321
Only name matches
No chip required
Excel
Company Certifications
321
ID does not match but name and Catalog does not
Name & Catalog match
Word
Global Skills
123
Same ID in Translation Tables
ID Already In Use
Excel
Global Skills
123
Same Name & ID in Translation Tables
ID Already In Use
Word
Company Certifications
123
Same ID & Catalog in Translation Tables
ID Already In Use
Excel
Company Certifications
123
Same Name, ID & Catalog in Translation Tables
Skill Already Exists
All the skills with duplicated information in Translation Tables are excluded from the current upload
MISSING DATA IN FILE
Excel
Company Certifications
None
Same Name & Catalog in Translation Tables
ID Missing
Name & Catalog match
Word
None
None
Catalog is missing in the file, ID does not exist
Catalog Is Missing
Word
None
321
Catalog is missing in the file
Catalog Is Missing
None
Global Skills
321
Catalog is missing in the file
Skill Name Is Missing
None
None
321
Name is missing in the file / Catalog is missing in the file
Skill Name Is Missing
Catalog Is Missing
Skills with missing information are excluded from the current upload
MISSING ID
Word
Global Skills
None
Skill ID is missing in the file
ID Missing
Skills automatically get an ID and are uploaded
Validation logic flow (screenshot)
Upload log with row-level error feedback (interactive)

The Relational Engine

Information Architecture · Relational Data Modeling · Mental Model Alignment

Core complexity: managing One-to-Many relationships. One internal Deloitte skill (Host) can represent dozens of external variations (Outsource). Solution: a Dual-View Toggle:

  • View A — Host Perspective: Centers on the internal Deloitte skill, showing all external aliases mapped to it
  • View B — Outsource Perspective: Centers on the external source, ensuring every skill links to exactly one parent

// Key Feature

The Remap Drawer allows users to move an Outsource skill from one Host to another — triggering automatic updates across Pending Translations and Translation Logs to maintain a perfect audit trail.

Dual-view toggle UI
Host view drawer
Host view drawer
Outsource view drawer
Outsource view drawer

Actionable Drawers

To ensure the mapping remains dynamic and accurate, I designed specialized Contextual Drawers for the editing process. Within these drawers, users can perform high-precision actions without losing their place in the main table. I engineered the interface to support:

  • Add Translation
  • Remove Translation
  • Edit Host
Add Translation (Process)
Add Translation (Process)
Remove Translation (Process)
Remove Translation (Process)
Edit Host (Process)
Edit Host (Process)

System Governance & Traceability

Governance · Compliance · System-Wide Synchronization

Every mapping request — whether adding, removing, or reassigning a skill — enters the Pending Translationsqueue as a proposal, not a change. Nothing touches the live “Source of Truth” until an Admin reviews it.

Approving a request pushes the change through immediately. Declining it requires the Admin to enter a reason — the skill stays exactly as it was, and that reason is attached directly to the request. Both outcomes are written to the Translation Log, so requesters can check back, see whether their request was accepted or rejected, and read the decline comment directly. A rejected request isn’t a dead end — it’s feedback the requester can act on to submit a corrected one.

// Key Feature

The Translation Log records every relationship change — move, reason, timestamp — creating a complete, immutable audit trail.

Pending Translations queue
Approve Process
Approve Process
Decline Process
Decline Process

Results

100%

Data Integrity

Zero corruption since launch. Pre-check validation blocks thousands of duplicate or orphaned entries.

Chapter 01, The Gatekeeper

3-Point

Validation Logic

Every incoming record passes through Uniqueness, Structural Integrity, and Mapping Conflict checks before reaching production.

Chapter 01, The Gatekeeper

Days → Minutes

Mapping Time

Manual taxonomy mapping collapsed from a multi-day process to a matter of minutes.

Chapter 02 / Chapter 03

In Enterprise SaaS, UX is a balance between User Empathy — reducing admin fatigue — and Data Architecture — managing complex relational logic. I turned a rigid data-entry tool into a system that thinks in relationships, not rows.

Solving something like this for your team?

Book an intro call