Es una plataforma web con búsqueda avanzada de trabajo en la que podrás ser entrevistado(a) por un asistente de inteligencia artificial usando reconocimiento de voz. Además recibirás feedback por cada una de tus respuestas y podrás comparar tus resultados con los de otros candidatos en un dashboard.
Este buscador utiliza la tecnología Embeddings que pertenece a OpenIA.
Básicamente consiste en generar vectores por cada cadena de texto(en este caso sería la oferta de trabajo y la consulta del usuario) para posteriormente calcular la distancia entre estos dos y arrojar como resultado la oferta que tenga mayor relación con la consulta deseada.
A diferencia de los filtros tradicionales que no soportan consultas como Desarrollador C# con ASP.NET con 2 años de experiencia y modalidad presencial
o Desarrollador Java con salario de 30.000 en Barcelona
, gracias a los embeddings podríamos realizar búsquedas de ese tipo.
Para la hackaton he generado embeddings para 2280 ofertas de trabajo en las categorías de programacion, sistemas, administracion-bases-datos y diseno-web. Cabe mencionar que en la aplicación se mostrarán las 10 ofertas de trabajo que tenga un umbral(match_threshold)
de 0.88
a más.
Toda la información está almacenada en una base de datos PostgresSQL en Supabase. Esta guía fue de mucha utilidad.
El endpoint de infojobs utilizado fue: https://api.infojobs.net/api/9/offer?subcategory=programacion&subcategory=sistemas&subcategory=administracion-bases-datos&subcategory=diseno-web
Desarrolle un script que recorre 114 páginas de ofertas de trabajo usando el endpoint mencionado y por cada una de estas generaba el embedding para posteriormente almacenarlo en base de datos.
El asistente recibe información de la oferta de trabajo y mediante un prompt genera las preguntas aleatoriamente y brinda puntaje y feedback por cada respuesta del candidato.
Gracias a la Web Speech API podremos convertir el texto generado a audio y el la voz del candidato a texto.
El objetivo de cada candidato es obtener el puntaje necesario
y de esta forma estará apto para la siguiente fase de entrevista.
Gracias este filtro los reclutadores no tendrán necesidad de realizar la primera entrevista, ahorrando costos en esfuerzo y tiempo.
Para una experiencia completa, se recomienda utilizar Microsoft Edge o Safari.
Actualmente la Web Speech API no es compatible con todos los navegadores, en este proyecto se utilizan dos interfaces SpeechRecognition Texto - Voz y SpeechSynthesisUtterance Voz - Text.
En caniuse se puede ver la compatibilidad de SpeechRecognition y SpeechSynthesisUtterance.
Navegador | Texto a voz | Voz a texto |
---|---|---|
Microsoft Edge 113 | ✅ | ✅ |
Safari 16.4 | ✅ | ✅ |
Google Chrome 113 | 🤔 | ✅ |
Firefox 113 | ✅ | ❌ |
Brave 1.51 | ✅ | ❌ |
En el caso de Chrome parece ser un bug, ya que reproduce parte del texto del asistente y repentinamente se detiene.
Podrás visualizar los resultados de los postulantes por cada oferta de trabajo. Cuenta con indicadores como la cantidad de postulantes, candidatos que aprobaron y desaprobaron la entrevista.
Por último, por cada candidato podrás revisar las preguntas, puntaje y feedback brindado por el asistente.
- Framework: Next.js
- Estilos: Tailwind y Radix
- Dashboard: Tremor
- Iconos: Phosphoricons
- Web Speech API: Web Speech API
- Reconocimiento de voz: react-speech-recognition
- Autenticación: Next Middleware e Infojobs Auth
- Deployment: Vercel y Railway
Se usan variables de entorno tanto en los paquetes client y server. En el caso del client, las variables los encuentras en el archivo .env
y en el server debes renombrar el archivo .env.example
a .env
.
- Crear una cuenta en Infojobs developer.
- Click en
Register new App
e ingresa la información que solicita el formulario. Finalizado el registro, podrás ver elClient ID
yClient Secret
. - Copiar los variables en
INFOJOBS_CLIENT_ID
eINFOJOBS_CLIENT_SECRET
. Luego el valor deINFOJOBS_REDIRECT_URI
debe ser el mismo Callback URL que ingresaste en el formulario del paso 2. - Finalmente, ir a App authentication y generar el token usando el formulario. Después copiar el resultado en
INFOJOBS_TOKEN
del client y server.
- Crear una cuenta en OpenIA.
- Click en
Create new secret key
y copia el valor enOPEN_IA_KEY
en el package server.
- Crear una cuenta en Supabase.
- Crear un proyecto e ingresar la información solicitada en el formulario.
- Finalizado la creación del proyecto, ir a
Project Settings
en el menu lateral. - En la opción
API
, copiar y pegar elanon public
yURL
enSUPABASE_URL
YSUPABASE_KEY
del client y server.
- Clona este repositorio e instala las dependencias usando:
# npm:
npm install
# o pnpm:
pnpm install
# o yarn:
yarn install
- Ejecutar:
# npm:
npm run dev
# o pnpm:
pnpm dev
# o yarn:
yarn dev