Treball seleccionat
ApplyCraft
Projecte en desenvolupament que genera una carta de presentació, un missatge de LinkedIn i un correu de candidatura, amb recerca opcional de l'empresa i generació en streaming.
Visió general
ApplyCraft parteix d'un perfil reutilitzable del candidat i d'informació específica de cada candidatura per preparar tres documents diferents. El perfil es desa localment al navegador i inclou experiència, formació i dades de contacte; la candidatura afegeix empresa, rol, idioma, to, oferta opcional i instruccions addicionals.
Personalització de la candidatura
Cada candidatura es configura amb l'empresa, el lloc de treball, l'idioma de sortida, el to i el model. També es pot indicar una persona de contacte, enganxar una oferta i afegir instruccions per destacar experiències concretes. Si no hi ha oferta, el missatge de LinkedIn es planteja com una sol·licitud de connexió espontània.
Generació i recerca
La carta de presentació, el missatge de LinkedIn i el correu es generen en paral·lel i es mostren progressivament mitjançant streaming. Cada resultat es pot regenerar de manera independent. Una fase prèvia opcional utilitza Gemini amb cerca web per obtenir un resum factual de l'empresa; si no està configurada o falla, la generació continua sense aquest context.
- Sortida en català, castellà, anglès o francès.
- Comportament diferent del missatge de LinkedIn segons si s'ha facilitat una oferta.
- Perfil persistent al navegador i controls específics per candidatura.
Abstracció de proveïdors
Gemini, OpenAI i DeepSeek implementen una mateixa interfície de proveïdor de text en streaming. OpenAI i DeepSeek comparteixen una implementació compatible amb el protocol de chat completions, mentre que Gemini té una implementació pròpia i l'opció de cerca fonamentada. Els models disponibles es filtren segons els proveïdors configurats al servidor.
Secrets i desplegament
Les crides als models es fan des de Route Handlers de Next.js. Les claus es llegeixen de variables d'entorn exclusivament al servidor, sense prefix públic, i el navegador només parla amb els endpoints interns de l'aplicació. El repositori deixa clar que és un projecte local en desenvolupament: abans d'un desplegament públic amb claus compartides caldria afegir limitació de peticions i protecció contra abusos.





