From be1000ad205473b7a789aa730167d00e4d5f223e Mon Sep 17 00:00:00 2001
From: Justin Gasper 
Date: Fri, 18 Aug 2023 15:05:26 +1000
Subject: [PATCH 01/32] HOTFIX - Force RESTRICT_TALENT_SEARCH to false because
 it somehow got reset in prod
---
 src/config/environments/default.env.ts | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/config/environments/default.env.ts b/src/config/environments/default.env.ts
index 078849971..362fc9c83 100644
--- a/src/config/environments/default.env.ts
+++ b/src/config/environments/default.env.ts
@@ -70,5 +70,7 @@ export const DICE_VERIFY_URL = get({
     qa: 'https://accounts-auth0.topcoder-qa.com',
 }, ENV, 'https://accounts-auth0.topcoder.com')
 
-export const RESTRICT_TALENT_SEARCH = getReactEnv('RESTRICT_TALENT_SEARCH', false)
+// TODO: Revert this.  This was done because prod was restricting this and no one was available to fix the config
+// export const RESTRICT_TALENT_SEARCH = getReactEnv('RESTRICT_TALENT_SEARCH', false)
+export const RESTRICT_TALENT_SEARCH = false
 export const SEGMENT_ANALYTICS_KEY = getReactEnv('SEGMENT_ANALYTICS_KEY', undefined)
From 5439ea70f1d58e5af0b77843ddad738bd7dd82e9 Mon Sep 17 00:00:00 2001
From: Vasilica Olariu 
Date: Thu, 5 Oct 2023 16:51:57 +0300
Subject: [PATCH 02/32] Revert "Revert "Merge pull request #916 from
 topcoder-platform/TAL-84_emsi-skill-update""
This reverts commit f9f6f14ae593df9446da46e9b71336250b3aa8e4.
---
 .../lib/components/skill-tags/SkillTags.tsx   |  8 +--
 .../src/lib/components/skill/SkillLabel.tsx   |  4 +-
 .../courses-provider/learn-course.model.ts    |  4 +-
 .../tca-certifications-provider/index.ts      |  2 +-
 .../tca-certification.model.ts                |  4 +-
 ...a-emsi-skill-type.ts => tca-skill-type.ts} |  2 +-
 .../cert-card/TCCertCard.tsx                  |  4 +-
 src/apps/onboarding/src/models/MemberInfo.ts  |  5 +-
 .../onboarding/src/pages/skills/index.tsx     |  6 +-
 .../member-profile/MemberProfile.context.tsx  |  4 +-
 .../skills/MemberSkillsInfo.tsx               | 24 ++++----
 .../ModifySkillsModal/ModifySkillsModal.tsx   |  6 +-
 .../popular-skills/PopularSkills.tsx          | 38 ++++++-------
 .../ProfileSkillsMatch.tsx                    | 17 +++---
 .../components/search-input/SearchInput.tsx   | 18 +++---
 .../src/components/talent-card/TalentCard.tsx |  2 +-
 .../talent-search/src/lib/models/Member.ts    |  5 +-
 .../src/lib/models/MemberEmsiSkill.ts         |  9 ---
 .../talent-search/src/lib/models/index.ts     |  1 -
 .../lib/services/use-fetch-talent-matches.ts  |  2 +-
 .../src/lib/utils/search-query.tsx            |  6 +-
 .../src/lib/utils/skills.utils.tsx            |  8 +--
 .../src/routes/talent-page/TalentPage.tsx     |  4 +-
 .../core/lib/profile/data-providers/index.ts  |  1 -
 .../profile/data-providers/useMemberSkills.ts | 18 ------
 .../profile-functions/rating.functions.ts     |  6 --
 .../core/lib/profile/user-profile.model.ts    |  4 +-
 src/libs/core/lib/profile/user-skill.model.ts | 24 +++-----
 .../InputSkillSelector.tsx                    | 12 ++--
 .../use-member-skill-editor.tsx               | 56 +++++++++----------
 .../lib/services/emsi-skills/skill.model.ts   | 16 ------
 .../lib/services/emsi-skills/skills.utils.ts  |  5 --
 src/libs/shared/lib/services/index.ts         |  2 +-
 .../{emsi-skills => standard-skills}/index.ts |  2 +-
 .../services/standard-skills/skill.model.ts   |  2 +
 .../services/standard-skills/skills.utils.ts  |  5 ++
 .../standard-skills.service.ts}               | 12 ++--
 37 files changed, 147 insertions(+), 201 deletions(-)
 rename src/apps/learn/src/lib/data-providers/tca-certifications-provider/{tca-emsi-skill-type.ts => tca-skill-type.ts} (75%)
 delete mode 100644 src/apps/talent-search/src/lib/models/MemberEmsiSkill.ts
 delete mode 100644 src/libs/core/lib/profile/data-providers/useMemberSkills.ts
 delete mode 100644 src/libs/shared/lib/services/emsi-skills/skill.model.ts
 delete mode 100644 src/libs/shared/lib/services/emsi-skills/skills.utils.ts
 rename src/libs/shared/lib/services/{emsi-skills => standard-skills}/index.ts (59%)
 create mode 100644 src/libs/shared/lib/services/standard-skills/skill.model.ts
 create mode 100644 src/libs/shared/lib/services/standard-skills/skills.utils.ts
 rename src/libs/shared/lib/services/{emsi-skills/emsi-skills.service.ts => standard-skills/standard-skills.service.ts} (73%)
diff --git a/src/apps/learn/src/lib/components/skill-tags/SkillTags.tsx b/src/apps/learn/src/lib/components/skill-tags/SkillTags.tsx
index a869762f1..cbc54de95 100644
--- a/src/apps/learn/src/lib/components/skill-tags/SkillTags.tsx
+++ b/src/apps/learn/src/lib/components/skill-tags/SkillTags.tsx
@@ -5,7 +5,7 @@ import { Tooltip } from '~/libs/ui'
 import { EnvironmentConfig } from '~/config'
 
 import { SkillLabel } from '..'
-import { TCAEMSISkillType } from '../../data-providers'
+import { TCASkillType } from '../../data-providers'
 
 import styles from './SkillTags.module.scss'
 
@@ -15,7 +15,7 @@ interface SkillTagsProps {
     label?: string
     theme?: 'white' | 'gray' | undefined
     skills?: Array | null | undefined
-    emsiSkills?: TCAEMSISkillType[]
+    emsiSkills?: TCASkillType[]
 }
 
 const SkillTags: FC = (props: SkillTagsProps) => {
@@ -24,7 +24,7 @@ const SkillTags: FC = (props: SkillTagsProps) => {
     const label: string = props.label ?? 'skills taught'
     const tcaEMSIEnabled: boolean = EnvironmentConfig.ENABLE_EMSI_SKILLS || false
 
-    const skills: string[] | TCAEMSISkillType[] = tcaEMSIEnabled ? (props.emsiSkills || []) : (props.skills || [])
+    const skills: string[] | TCASkillType[] = tcaEMSIEnabled ? (props.emsiSkills || []) : (props.skills || [])
 
     return (
         
@@ -32,7 +32,7 @@ const SkillTags: FC
 = (props: SkillTagsProps) => {
                 {label}
             )}
             {skills?.slice(0, expandCount)
-                .map((skill: string | TCAEMSISkillType) => (
+                .map((skill: string | TCASkillType) => (
                     
-    emsiSkills: Array
+    emsiSkills: Array
     estimatedCompletionTimeValue: number
     estimatedCompletionTimeUnits: string
     fccCourseUuid: string
diff --git a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/index.ts b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/index.ts
index 13e3b668f..db94899b4 100644
--- a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/index.ts
+++ b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/index.ts
@@ -17,4 +17,4 @@ export * from './tca-certification-progress'
 export * from './tca-certification-enrollment-base.model'
 export * from './tca-certification-validation'
 export * from './tca-certification-enrollment'
-export * from './tca-emsi-skill-type'
+export * from './tca-skill-type'
diff --git a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-certification.model.ts b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-certification.model.ts
index 0661d69f6..ef6e9d0ae 100644
--- a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-certification.model.ts
+++ b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-certification.model.ts
@@ -5,7 +5,7 @@ import { TCACertificationCompletionTimeRange } from './tca-certification-complet
 import { TCACertificationProvider } from './tca-certification-provider.model'
 import { TCACertificationProviderBase } from './tca-certification-provider.model-base'
 import { TCACertificationResource } from './tca-certification-resource.model'
-import { TCAEMSISkillType } from './tca-emsi-skill-type'
+import { TCASkillType } from './tca-skill-type'
 
 export interface TCACertification {
     certificationCategory: TCACertificationCategory
@@ -16,7 +16,7 @@ export interface TCACertification {
     createdAt: Date
     dashedName: string
     description: string
-    emsiSkills: Array
+    emsiSkills: Array
     id: number
     introText: string
     learnerLevel: TCACertificationLearnLevel
diff --git a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-emsi-skill-type.ts b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-skill-type.ts
similarity index 75%
rename from src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-emsi-skill-type.ts
rename to src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-skill-type.ts
index 12b67f1c3..4f331194a 100644
--- a/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-emsi-skill-type.ts
+++ b/src/apps/learn/src/lib/data-providers/tca-certifications-provider/tca-skill-type.ts
@@ -1,4 +1,4 @@
-export type TCAEMSISkillType = {
+export type TCASkillType = {
     assessed: boolean
     confidence: number
     emsiId: string
diff --git a/src/apps/learn/src/welcome/tc-certifications/cert-card/TCCertCard.tsx b/src/apps/learn/src/welcome/tc-certifications/cert-card/TCCertCard.tsx
index 014058619..e2b38ecd9 100644
--- a/src/apps/learn/src/welcome/tc-certifications/cert-card/TCCertCard.tsx
+++ b/src/apps/learn/src/welcome/tc-certifications/cert-card/TCCertCard.tsx
@@ -19,7 +19,7 @@ import {
     TCACertification,
     TCACertificationProgress,
     TCACertificationProviderBase,
-    TCAEMSISkillType,
+    TCASkillType,
 } from '../../../lib'
 
 import styles from './TCCertCard.module.scss'
@@ -43,7 +43,7 @@ const TCCertCard: FC = (props: TCCertCardProps) => {
         skills: string[],
         providers: Array,
         dashedName: string
-        emsiSkills: TCAEMSISkillType[]
+        emsiSkills: TCASkillType[]
     } = props.certification
 
     const isEnrolled: boolean = props.progress?.status === 'enrolled'
diff --git a/src/apps/onboarding/src/models/MemberInfo.ts b/src/apps/onboarding/src/models/MemberInfo.ts
index 8de57ff6d..41e301d5e 100644
--- a/src/apps/onboarding/src/models/MemberInfo.ts
+++ b/src/apps/onboarding/src/models/MemberInfo.ts
@@ -1,5 +1,6 @@
-import { MemberEmsiSkill, MemberMaxRating } from '~/apps/talent-search/src/lib/models'
+import { MemberMaxRating } from '~/apps/talent-search/src/lib/models'
 import { MemberStats } from '~/libs/core'
+import { Skill } from '~/libs/shared'
 
 import MemberAddress from './MemberAddress'
 
@@ -13,7 +14,7 @@ export default interface MemberInfo {
     email: string
     accountAge: number
     maxRating: MemberMaxRating
-    emsiSkills: Array
+    emsiSkills: Array
     stats: Array
     addresses?: MemberAddress[]
     country: string
diff --git a/src/apps/onboarding/src/pages/skills/index.tsx b/src/apps/onboarding/src/pages/skills/index.tsx
index 8d931d7b3..064e02cc7 100644
--- a/src/apps/onboarding/src/pages/skills/index.tsx
+++ b/src/apps/onboarding/src/pages/skills/index.tsx
@@ -16,12 +16,12 @@ export const PageSkillsContent: FC<{
 }> = props => {
     const navigate: any = useNavigate()
     const [loading, setLoading] = useState(false)
-    const { formInput: emsiFormInput, saveSkills: saveEmsiSkills }: MemberSkillEditor = useMemberSkillEditor()
+    const editor: MemberSkillEditor = useMemberSkillEditor()
 
     async function saveSkills(): Promise {
         setLoading(true)
         try {
-            await saveEmsiSkills()
+            await editor.saveSkills()
         } catch (error) {
         }
 
@@ -46,7 +46,7 @@ export const PageSkillsContent: FC<{
                         Understanding your skills will allow us to connect you to the right opportunities.
                     
                     
-                        {emsiFormInput}
+                        {editor.formInput}
                     
                 
                     
Skills
                     {
-                        canEdit && memberEMSISkills.length > 0 && (
+                        canEdit && memberSkills.length > 0 && (
                             
@@ -92,22 +92,22 @@ const MemberSkillsInfo: FC = (props: MemberSkillsInfoProp
             
 
             
-                {skillsRenderer && memberEMSISkills.length > 0 && skillsRenderer(memberEMSISkills)}
-                {!skillsRenderer && memberEMSISkills.length > 0 && (
+                {skillsRenderer && memberSkills.length > 0 && skillsRenderer(memberSkills)}
+                {!skillsRenderer && memberSkills.length > 0 && (
                     
                         {
-                            memberEMSISkills
-                                .map(memberEMSISkill => (
+                            memberSkills
+                                .map(memberSkill => (
                                     
                                 ))
                         }
                     
                 )}
-                {!memberEMSISkills.length && (
+                {!memberSkills.length && (
                      = (props: MemberSkillsInfoProp
                     
                 )}
             
-            {canEdit && !memberEMSISkills.length && (
+            {canEdit && !memberSkills.length && (
                  = (props: ModifySkillsModalP
     const [isSaving, setIsSaving]: [boolean, Dispatch>]
         = useState(false)
 
-    const { formInput: emsiFormInput, saveSkills: saveEmsiSkills }: MemberSkillEditor = useMemberSkillEditor()
+    const editor: MemberSkillEditor = useMemberSkillEditor()
 
     function handleModifySkillsSave(): void {
         setIsSaving(true)
 
-        saveEmsiSkills()
+        editor.saveSkills()
             .then(() => {
                 toast.success('Skills updated successfully.', { position: toast.POSITION.BOTTOM_RIGHT })
                 props.onSave()
@@ -63,7 +63,7 @@ const ModifySkillsModal: FC = (props: ModifySkillsModalP
                     Understanding your skills will allow us to connect you to the right opportunities.
                 
                 
-                    {emsiFormInput}
+                    {editor.formInput}
                 
             
         
diff --git a/src/apps/talent-search/src/components/popular-skills/PopularSkills.tsx b/src/apps/talent-search/src/components/popular-skills/PopularSkills.tsx
index fdd256287..039cc6a4d 100644
--- a/src/apps/talent-search/src/components/popular-skills/PopularSkills.tsx
+++ b/src/apps/talent-search/src/components/popular-skills/PopularSkills.tsx
@@ -9,22 +9,22 @@ import styles from './PopularSkills.module.scss'
 // TODO: Make this configurable, or read from a service.  We need to discuss
 // how we want to handle this.
 const popularSkills: Skill[] = [
-    { emsiId: 'KS120076FGP5WGWYMP0F', name: 'Java (Programming Language)' },
-    { emsiId: 'KS126QY605N7YVHFYCTW', name: 'MySQL' },
-    { emsiId: 'KS127296VDYS7ZFWVC46', name: 'Node.js' },
-    { emsiId: 'KS121F45VPV8C9W3QFYH', name: 'Cascading Style Sheets (CSS)' },
-    { emsiId: 'KS1200771D9CR9LB4MWW', name: 'JavaScript (Programming Language)' },
-    { emsiId: 'KS1261Z68KSKR1X31KS3', name: 'Machine Learning' },
-    { emsiId: 'KS120SX72T8B5VLXS1VN', name: 'Unit Testing' },
-    { emsiId: 'KS120H6772VQ0MQ5RLVD', name: 'Angular (Web Framework)' },
-    { emsiId: 'KS1200B62W5ZF38RJ7TD', name: '.NET Framework' },
-    { emsiId: 'KS125LS6N7WP4S6SFTCK', name: 'Python (Programming Language)' },
-    { emsiId: 'KS120GZ5YXC6YVM1NGPR', name: 'Android (Operating System)' },
-    { emsiId: 'ES5269FD2583B0B9875C', name: 'Figma (Design Software)' },
-    { emsiId: 'KS120V86MZWV9Z9LKQY3', name: 'Microsoft Azure' },
-    { emsiId: 'KS1206V6K46N1SDVJGBD', name: 'Adobe Illustrator' },
-    { emsiId: 'KSY4WFI1S164RQUBSPCC', name: 'Docker (Software)' },
-    { emsiId: 'KSDJCA4E89LB98JAZ7LZ', name: 'React.js' },
+    { id: 'f81d2a78-ff52-4c77-8cdb-8863601b87c7', name: 'Java (Programming Language)' },
+    { id: '1aabc882-c28d-4b56-8546-5e961b53bf5d', name: 'MySQL' },
+    { id: 'b3181231-af8f-4a44-aff2-97fe00c57d76', name: 'Node.js' },
+    { id: '4328c534-ba51-4589-a3e7-7b5ba76d2b55', name: 'Cascading Style Sheets (CSS)' },
+    { id: 'e3b2b1f1-6bbf-4989-b53d-d8531a10ea5d', name: 'JavaScript (Programming Language)' },
+    { id: '41ffc4d5-2e43-45e1-af36-ae7a23b47c21', name: 'Machine Learning' },
+    { id: '047203fc-8c85-4be0-be0b-0e2fe11c3a16', name: 'Unit Testing' },
+    { id: '8c6703bd-63dd-4f6d-9cf0-5b411e531a9f', name: 'Angular (Web Framework)' },
+    { id: '34ec4bf0-0b44-4d04-9f11-e3daa2c045ce', name: '.NET Framework' },
+    { id: 'a9bb69aa-edc2-4d5f-8141-de33a139f119', name: 'Python (Programming Language)' },
+    { id: '67c623db-09e4-499d-800b-24868b1eb85b', name: 'Android (Operating System)' },
+    { id: '36292f61-c359-42a4-89b9-95245ee494ea', name: 'Figma (Design Software)' },
+    { id: 'cf39f07c-0e7a-48a2-acec-21834900c437', name: 'Microsoft Azure' },
+    { id: 'b33f8342-8015-4244-afea-5fd089bf52a6', name: 'Adobe Illustrator' },
+    { id: 'f21aecd2-5c67-4783-97a4-a77c67cf4f67', name: 'Docker (Software)' },
+    { id: '43baf79e-3632-4b04-889a-7202cbf62a6c', name: 'React.js' },
 ]
 
 interface PopularSkillsProps {
@@ -41,7 +41,7 @@ const PopularSkills: FC = props => {
         // Either delete the value from the list, if we're toggling one that's already in the list
         // Or add the new item to the list
         props.selectedSkills.forEach(filterSkill => {
-            if (filterSkill.emsiId === skill.emsiId) {
+            if (filterSkill.id === skill.id) {
                 deleted = true
             } else {
                 newFilter.push(filterSkill)
@@ -59,7 +59,7 @@ const PopularSkills: FC = props => {
     }, [props.onChange, props.selectedSkills])
 
     function isSelected(skill: Skill): boolean {
-        return !!props.selectedSkills.find(s => s.emsiId === skill.emsiId)
+        return !!props.selectedSkills.find(s => s.id === skill.id)
     }
 
     return (
@@ -69,7 +69,7 @@ const PopularSkills: FC = props => {
             
                 {popularSkills.map(skill => (
                     
[]
+    profileSkills: Pick[]
     queriedSkills: Skill[]
 }
 
 const ProfileSkillsMatch: FC = props => {
     const isMatchingSkill = useIsMatchingSkill(props.queriedSkills)
-    const matchedSkills = (props.profileSkills as unknown as EmsiSkill[]).filter(isMatchingSkill)
-    const unMatchedSkills = (props.profileSkills as unknown as EmsiSkill[]).filter(s => !isMatchingSkill(s))
+    const matchedSkills = props.profileSkills.filter(isMatchingSkill)
+    const unMatchedSkills = props.profileSkills.filter(s => !isMatchingSkill(s))
     const provenMatched = matchedSkills.filter(isSkillVerified)
     const selfSkillmatched = matchedSkills.filter(s => !isSkillVerified(s))
-    const missingSkills = props.queriedSkills.filter(qs => !matchedSkills.find(ms => ms.skillId === qs.emsiId))
+    const missingSkills = props.queriedSkills.filter(qs => !matchedSkills.find(ms => ms.id === qs.id))
 
     return (
         
@@ -41,7 +40,7 @@ const ProfileSkillsMatch: FC
 = props => {
                             
                                 {provenMatched.map(skill => (
-                                    
+                                    
                                 ))}
                             
                         >
@@ -54,7 +53,7 @@ const ProfileSkillsMatch: FC = props => {
                             
                                 {selfSkillmatched.map(skill => (
-                                    
+                                    
                                 ))}
                             
                         >
@@ -82,7 +81,7 @@ const ProfileSkillsMatch: FC = props => {
                     
                         
                             {unMatchedSkills.map(skill => (
-                                
+                                
                             ))}
                         
                     
diff --git a/src/apps/talent-search/src/components/search-input/SearchInput.tsx b/src/apps/talent-search/src/components/search-input/SearchInput.tsx
index 6dd084542..e1dcae54e 100644
--- a/src/apps/talent-search/src/components/search-input/SearchInput.tsx
+++ b/src/apps/talent-search/src/components/search-input/SearchInput.tsx
@@ -2,7 +2,7 @@ import { FC, MouseEvent, Ref, useMemo } from 'react'
 import classNames from 'classnames'
 
 import { IconOutline, InputMultiselectOption } from '~/libs/ui'
-import { EmsiSkill, EmsiSkillSources, InputSkillSelector, Skill } from '~/libs/shared'
+import { InputSkillSelector, Skill, SkillSources } from '~/libs/shared'
 
 import { SKILL_SEARCH_LIMIT } from '../../config'
 
@@ -18,16 +18,16 @@ interface SearchInputProps {
 }
 
 const SearchInput: FC = props => {
-    const emsiSkills: EmsiSkill[] = useMemo(() => props.skills.map(s => ({
+    const skills: Skill[] = useMemo(() => props.skills.map(s => ({
+        id: s.id,
         name: s.name,
-        skillId: s.emsiId,
-        skillSources: [EmsiSkillSources.selfPicked],
+        skillSources: [SkillSources.selfPicked],
     })), [props.skills])
 
     function onChange(ev: any): void {
         const options = (ev.target.value as unknown) as InputMultiselectOption[]
         props.onChange(options.map(v => ({
-            emsiId: v.value,
+            id: v.value,
             name: v.label as string,
         })))
     }
@@ -41,13 +41,13 @@ const SearchInput: FC = props => {
 
     const searchIcon = useMemo(() => (
         
             
         
-    ), [props.onSearch, emsiSkills])
+    ), [props.onSearch, skills])
 
     return (
         
@@ -58,13 +58,13 @@ const SearchInput: FC
 = props => {
                 useWrapper={false}
                 theme='clear'
                 dropdownIcon={searchIcon}
-                value={emsiSkills}
+                value={skills}
                 onChange={onChange}
                 onSubmit={props.onSearch}
                 inputRef={props.inputRef}
                 limit={SKILL_SEARCH_LIMIT}
             />
-            {emsiSkills.length >= SKILL_SEARCH_LIMIT && (
+            {skills.length >= SKILL_SEARCH_LIMIT && (
                 
                     {`You can only search up to ${SKILL_SEARCH_LIMIT} skills at one time`}
                 
diff --git a/src/apps/talent-search/src/components/talent-card/TalentCard.tsx b/src/apps/talent-search/src/components/talent-card/TalentCard.tsx
index f5feac5bb..0ff6a0fee 100644
--- a/src/apps/talent-search/src/components/talent-card/TalentCard.tsx
+++ b/src/apps/talent-search/src/components/talent-card/TalentCard.tsx
@@ -129,7 +129,7 @@ const TalentCard: FC = props => {
                     +0 more matched skill
                     {matchedSkills.length > 0 && matchedSkills.map(skill => (
                         
diff --git a/src/apps/talent-search/src/lib/models/Member.ts b/src/apps/talent-search/src/lib/models/Member.ts
index 793e5e1a6..5798a4da3 100644
--- a/src/apps/talent-search/src/lib/models/Member.ts
+++ b/src/apps/talent-search/src/lib/models/Member.ts
@@ -1,6 +1,7 @@
+import { Skill } from '~/libs/shared'
+
 import { MemberDisplayName } from './MemberDisplayName'
 import MemberAddress from './MemberAddress'
-import MemberEmsiSkill from './MemberEmsiSkill'
 import MemberMaxRating from './MemberMaxRating'
 import MemberStats from './MemberStats'
 
@@ -12,7 +13,7 @@ export default interface Member {
     createdAt: number;
     description: string;
     email: string;
-    emsiSkills: Array ;
+    emsiSkills: Array ;
     firstName: string;
     handle: string;
     homeCountryCode: string;
diff --git a/src/apps/talent-search/src/lib/models/MemberEmsiSkill.ts b/src/apps/talent-search/src/lib/models/MemberEmsiSkill.ts
deleted file mode 100644
index df133b182..000000000
--- a/src/apps/talent-search/src/lib/models/MemberEmsiSkill.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { EmsiSkillSources } from '~/libs/shared'
-
-export default interface MemberEmsiSkill {
-    skillSources: EmsiSkillSources[];
-    skillSubcategory: EmsiSkillSources;
-    skillId: string
-    name: string;
-    category: string;
-}
diff --git a/src/apps/talent-search/src/lib/models/index.ts b/src/apps/talent-search/src/lib/models/index.ts
index f244db5b4..4179a1aca 100644
--- a/src/apps/talent-search/src/lib/models/index.ts
+++ b/src/apps/talent-search/src/lib/models/index.ts
@@ -1,5 +1,4 @@
 export type { default as Member } from './Member'
-export type { default as MemberEmsiSkill } from './MemberEmsiSkill'
 export type { default as MemberMaxRating } from './MemberMaxRating'
 export type { default as MemberStats } from './MemberStats'
 export { MemberDisplayName } from './MemberDisplayName'
diff --git a/src/apps/talent-search/src/lib/services/use-fetch-talent-matches.ts b/src/apps/talent-search/src/lib/services/use-fetch-talent-matches.ts
index a91ed3a8e..4d6f4fe13 100644
--- a/src/apps/talent-search/src/lib/services/use-fetch-talent-matches.ts
+++ b/src/apps/talent-search/src/lib/services/use-fetch-talent-matches.ts
@@ -23,7 +23,7 @@ export function useFetchTalentMatches(
     pageSize: number,
 ): TalentMatchesResponse {
     const searchParams = [
-        ...skills.map(s => `skillId=${s.emsiId}`),
+        ...skills.map(s => `id=${s.id}`),
         'sortBy=skillScore',
         'includeStats=false',
         `page=${page}`,
diff --git a/src/apps/talent-search/src/lib/utils/search-query.tsx b/src/apps/talent-search/src/lib/utils/search-query.tsx
index 237d9b0f1..f93bd9eab 100644
--- a/src/apps/talent-search/src/lib/utils/search-query.tsx
+++ b/src/apps/talent-search/src/lib/utils/search-query.tsx
@@ -5,14 +5,14 @@ import { Skill } from '~/libs/shared'
 
 export const encodeUrlQuerySearch = (skills: Skill[]): string => (
     skills
-        .map(s => `q=${encodeURIComponent(`${s.name}::${s.emsiId}`)}`)
+        .map(s => `q=${encodeURIComponent(`${s.name}::${s.id}`)}`)
         .join('&')
 )
 
 export const parseUrlQuerySearch = (params: string[]): Skill[] => (
     params.map(p => {
-        const [name, emsiId] = p.split('::')
-        return { emsiId, name }
+        const [name, id] = p.split('::')
+        return { id, name }
     })
 )
 
diff --git a/src/apps/talent-search/src/lib/utils/skills.utils.tsx b/src/apps/talent-search/src/lib/utils/skills.utils.tsx
index 25b373f46..772749cff 100644
--- a/src/apps/talent-search/src/lib/utils/skills.utils.tsx
+++ b/src/apps/talent-search/src/lib/utils/skills.utils.tsx
@@ -1,12 +1,12 @@
 import { useCallback } from 'react'
 
-import { EmsiSkill, Skill } from '~/libs/shared'
+import { Skill } from '~/libs/shared'
 
-export type IsMatchingSkillFn = (skill: EmsiSkill) => boolean
+export type IsMatchingSkillFn = (skill: Pick) => boolean
 
 export const useIsMatchingSkill = (skills: Skill[]): IsMatchingSkillFn => {
-    const isMatchingSkill = useCallback((skill: EmsiSkill) => (
-        !!skills.find(s => skill.skillId === s.emsiId)
+    const isMatchingSkill = useCallback((skill: Pick) => (
+        !!skills.find(s => skill.id === s.id)
     ), [skills])
 
     return isMatchingSkill
diff --git a/src/apps/talent-search/src/routes/talent-page/TalentPage.tsx b/src/apps/talent-search/src/routes/talent-page/TalentPage.tsx
index b077a0bfe..4bd1d2eb6 100644
--- a/src/apps/talent-search/src/routes/talent-page/TalentPage.tsx
+++ b/src/apps/talent-search/src/routes/talent-page/TalentPage.tsx
@@ -2,14 +2,14 @@ import { FC, ReactNode } from 'react'
 import { Location, useLocation } from 'react-router-dom'
 
 import { MemberProfileContext, MemberProfilePage } from '@profiles/member-profile'
-import { UserEMSISkill } from '~/libs/core'
+import { Skill } from '~/libs/shared'
 
 import { ProfileSkillsMatch } from '../../components/profile-skills-match'
 
 const TalentPage: FC = () => {
     const { state }: Location = useLocation()
 
-    function skillsRenderer(profileSkills: Pick[]): ReactNode {
+    function skillsRenderer(profileSkills: Pick[]): ReactNode {
         return (
              ({ id: skillKey, ...data.skills[skillKey] }))
-            // sort by challenge verified first
-            .sort((a, b) => b.sources.indexOf('CHALLENGE') - a.sources.indexOf('CHALLENGE')) : undefined
-
-    return skills
-}
diff --git a/src/libs/core/lib/profile/profile-functions/rating.functions.ts b/src/libs/core/lib/profile/profile-functions/rating.functions.ts
index 4ee00920f..05d1c6620 100644
--- a/src/libs/core/lib/profile/profile-functions/rating.functions.ts
+++ b/src/libs/core/lib/profile/profile-functions/rating.functions.ts
@@ -1,7 +1,5 @@
 import { CSSProperties } from 'react'
 
-import { EMSISkillSources } from '../user-skill.model'
-
 export const TC_RATING_COLORS: Array<{ color: string, limit: number }> = [{
     color: '#555555' /* Grey */,
     limit: 900,
@@ -32,7 +30,3 @@ export function ratingToCSScolor(rating: number): CSSProperties {
         color,
     }
 }
-
-export function isVerifiedSkill(skillOriginSources: EMSISkillSources[]): boolean {
-    return skillOriginSources.includes('TCACertified') || skillOriginSources.includes('ChallengeWin')
-}
diff --git a/src/libs/core/lib/profile/user-profile.model.ts b/src/libs/core/lib/profile/user-profile.model.ts
index 63db0e186..f5ccd0e9b 100644
--- a/src/libs/core/lib/profile/user-profile.model.ts
+++ b/src/libs/core/lib/profile/user-profile.model.ts
@@ -1,4 +1,4 @@
-import { UserEMSISkill } from './user-skill.model'
+import { UserSkill } from './user-skill.model'
 
 export type TC_TRACKS = 'DEVELOP' | 'DESIGN' | 'DATA_SCIENCE'
 
@@ -15,7 +15,7 @@ export interface UserProfile {
     description: string
     diceEnabled: boolean
     email: string
-    emsiSkills: Array
+    emsiSkills: Array
     firstName: string
     handle: string
     handleLower: string
diff --git a/src/libs/core/lib/profile/user-skill.model.ts b/src/libs/core/lib/profile/user-skill.model.ts
index 2ad685542..9d454b519 100644
--- a/src/libs/core/lib/profile/user-skill.model.ts
+++ b/src/libs/core/lib/profile/user-skill.model.ts
@@ -1,25 +1,19 @@
-export type skillSources = 'USER_ENTERED' | 'CHALLENGE'
-
-export type UserSkill = {
-    id: number
-    hidden: boolean
-    score: number
-    sources: skillSources[]
-    tagName: string
+export enum SkillSources {
+    selfPicked = 'SelfPicked',
+    challengeWin = 'ChallengeWin',
+    tcaCertified = 'TCACertified',
 }
 
-export type EMSISkillSources = 'TCACertified' | 'SelfPicked' | 'ChallengeWin'
-
-export type UserEMSISkill = {
+export type UserSkill = {
     id: string
     name: string
-    skillCategory: {
+    skillCategory?: {
         name: string
         id: number
     }
-    skillId: string
-    skillSources: Array
-    skillSubcategory: {
+    skillId?: string
+    skillSources?: SkillSources[]
+    skillSubcategory?: {
         name: string
         id: number
     }
diff --git a/src/libs/shared/lib/components/input-skill-selector/InputSkillSelector.tsx b/src/libs/shared/lib/components/input-skill-selector/InputSkillSelector.tsx
index 20f539681..a9683575d 100644
--- a/src/libs/shared/lib/components/input-skill-selector/InputSkillSelector.tsx
+++ b/src/libs/shared/lib/components/input-skill-selector/InputSkillSelector.tsx
@@ -3,12 +3,12 @@ import { noop } from 'lodash'
 
 import { InputMultiselect, InputMultiselectOption, InputMultiselectThemes } from '~/libs/ui'
 
-import { autoCompleteSkills, EmsiSkill, isSkillVerified } from '../../services/emsi-skills'
+import { autoCompleteSkills, isSkillVerified, Skill } from '../../services/standard-skills'
 
-const mapEmsiSkillToInputOption = (skill: EmsiSkill): InputMultiselectOption => ({
+const mapSkillToInputOption = (skill: Skill): InputMultiselectOption => ({
     ...skill,
     label: skill.name,
-    value: skill.skillId,
+    value: skill.id,
     verified: isSkillVerified(skill),
 })
 
@@ -22,7 +22,7 @@ const fetchSkills = (queryTerm: string): Promise