Jeg ønsker å lage en applikasjon hvor jeg kan søke etter spesifikk kompetanse og få match i en kandidatbase! 🎉
Kandidatene registreres med lavt detaljnivå i kandidatbasen, men søkefunksjonen skal likevel takle et bredt spekter av søkeord og kunne matche kandidater på en god måte. 🥷
Kandidater skal presenteres med beskrivelse og hvorfor de er en god match på kompetansen jeg etterspør. 😎
👴 Hvordan løste jeg det?
Den overordna flyten ser slik ut:

- Bruker utfører et søk etter kompetanse i applikasjonen f.eks. «Prosjektledelse»
- Søketeksten konverteres til vektor via OpenAI
- Databasen som inneholder kandidater har en funksjon som lar meg utføre likhetssøk basert på vektorer – her benyttes vektor som kom fra søketeksten
- Kandidatbasen er fyllt med fiktive kandidater med tilhørende vektor (som også er generert av OpenAI)
- Likhetssøket returnerer x antall rader (kandidater) sortert på prosentvis likhet (vektor fra søketeksten)
Resultatet fra punkt 5 sendes så til OpenAI med en systemprompt som instruerer den til å være en kompetanserådgiver som skal anbefale kandidater basert på forespurt kompetanse. 🥸
Her er de eneste dataene jeg har om kandidatbasen sammen med de genererte vektorene:
Ingrid Olsen, 1985, prosjektleder, kompetanse: prosjektstyring, teamledelse, risikohåndtering, sertifiseringer: PRINCE2, Scrum Master
Andreas Berg, 1990, frontend-utvikler, kompetanse: HTML, CSS, JavaScript, React, sertifiseringer: Responsive Web Design
Maria Johansen, 1982, HR-konsulent, kompetanse: rekruttering, konflikthåndtering, personaladministrasjon, sertifiseringer: personalledelse
Jonas Larsen, 1988, dataanalytiker, kompetanse: Python, SQL, maskinlæring, sertifiseringer: Data Science, Google Analytics
Sara Pettersen, 1993, markedsfører, kompetanse: digital markedsføring, sosiale medier, kampanjeplanlegging, sertifiseringer: Google Ads
Hanne Kristiansen, 1989, UX-designer, kompetanse: brukeropplevelse, prototyping, interaksjonsdesign, sertifiseringer: Adobe XD
Erik Hansen, 1980, IT-prosjektleder, kompetanse: systemimplementering, teamledelse, teknisk prosjektstyring, sertifiseringer: PMP, ITIL
Hanna Karlsen, 1988, sikkerhetsrådgiver, kompetanse: informasjonssikkerhet, datasikkerhet, risikoer, sikkerhetsanalyse, sertifiseringer: CISSP, CISM, SC-300
Jonas Haugen, 1965, fullstack-utvikler, kompetanse: React, C#, .net, SQL, HTML, CSS, Java, Python, REST, GIT, API, Node, sertifiseringer: AZ-204
La oss teste og se om dette fungerer noe særlig bra 🤔😅
Jeg forsøker meg først på noe helt konkret som finnes i kandidatbasen, som. f.eks. maskinlæring:

Ingen problemer å finne kandidaten 😁 Jonas Larsen finnes i kandidatbasen med kompetanse i maskinlæring. Men dette hadde jo et tradisjonelt databasesøk også klart… 🥱
Hva om vi søker etter kompetanse som ikke står ordrett i kandidatbasen? F.eks. trusselhåndtering? 🤔

Traff ganske bra – samt med en god begrunnelse for hvorfor Hanna kan være en god kandidat for trusselhåndtering 🥳
Selv om Hanna ikke har trusselhåndtering nevnt som sin kompetanse så klarer applikasjonen likevel å knytte det til Hanna sine tilsvarende kompetanser – dette pga likhetssøket med vektorverdiene nevnt tidligere 😎
Hva om jeg søker etter flere kompetanser i samme søk? Vi prøver azure, vuejs, kakebaking

Azure: Jonas Haugen blir foreslått pga en sertifisering i Azure (AZ-204). 👍
VueJS: Andreas Berg og Jonas Haugen blir foreslått fordi de begge er utviklere – og dermed kan være en gode kandidater for utvikling i Vue.JS også. 🥸
Kakebaking: Ingen kandidater kunne knyttes opp til den fantastiske ferdigheten kakebaking… 😭😅
Hva om jeg prøver å skrive et scenario, som f.eks. Vi skal utvikle en webportal for kundene våre 🚀

Dream team 😎 Her satte den sammen de rollene som var tilgjengelig i kandidatbasen for å utvikle en webportal (frontend, backend, ux-designer).
Burde den kanskje tatt med IT-prosjektleder også? Vi har jo det i kandidatabasen vår 🤔
Jeg omformulerer spørsmålet for å se om det kommer med: Vi skal etablere et prosjekt for å utvikle en webportal for kundene våre

Da kom IT-prosjektlederen også på plass! 😎
🤔 Konklusjon!
Likhetssøk ved hjelp av vektorer sammen med OpenAI gjorde at resultatet ble ganske ok for denne testapplikasjonen. Med relativt lite kode får man ganske kraftig søkefunksjonalitet 😎
Hadde man investert noen uker med utvikling, samt utarbeide en litt mer detaljert kandidatbase så hadde det nok blitt en meget nyttig applikasjon 🚀
Neste innlegg om AI-drodling har jeg ikke planlagt enda.. Vi får se hva som dukker opp 😅🤩

