¿Qué es Dossier?
Dossier guarda tu trayectoria profesional en un solo perfil y la convierte en un currículum y una carta de presentación a medida para cada empleo. Pegas una oferta, o partes de una encontrada a través de JSearch, Adzuna o FreeHire; la aplicación lee los requisitos, muestra cuáles cubre tu perfil y cuáles son carencias, y redacta los documentos en el tono que elijas, con uno de doce temas y en 21 idiomas de documento incorporados. Un chat los pule, se guarda cada versión, y un tablero, una tabla y un panel siguen cada candidatura desde el borrador hasta la oferta. Una pantalla Startups lista startups que contratan, a partir de las ofertas de empleo de YC y del hilo mensual "Who is hiring?" de Hacker News.
Las partes opcionales están apagadas hasta que las activas: un agente de empleo diario que puntúa ofertas nuevas y puede preparar borradores, pero nunca envía ni se postula; una conexión con Gmail y Google Calendar mediante tu propio cliente OAuth de Google; y un conector MCP que permite a Claude u otra aplicación MCP buscar, puntuar y guardar borradores. El modelo lo eliges tú: Ollama, llama.cpp o LM Studio en local, o cualquier API compatible con OpenAI, Anthropic o Mistral con tu propia clave.
Es una aplicación de Next.js 16 y PostgreSQL 18 en TypeScript con licencia AGPL-3.0, pensada para un solo usuario detrás de una sola contraseña. El repositorio lo creó AienTech el 3 de octubre de 2026 y tiene unas 3.509 estrellas y 744 forks, con 19 versiones desde la v1.0.0 de ese día hasta la v1.11.0 del 31 de octubre de 2026. No hay edición alojada ni de pago; la web del proyecto ofrece la instalación y un enlace para patrocinar.
¿Merece la pena Dossier?
El punto fuerte de Dossier no es la redacción, sino la contabilidad que la rodea. Cada oferta se compara línea a línea con un único perfil, las carencias se muestran como carencias, y cada currículum y carta conserva sus versiones, su chat y su estado, así que veinte candidaturas en un mes siguen siendo legibles. Su documentación de privacidad es la más precisa que hemos leído en una aplicación autoalojada de este tamaño: PRIVACY.md enumera, tarea por tarea, lo que recibe un modelo alojado. Redactar un currículum o una carta envía tu perfil sin datos de contacto (nombre, titular, ciudad, puestos, empresas, fechas, viñetas, proyectos, formación y tus propios datos) más la oferta, leída hasta 20.000 caracteres. El correo, el teléfono, la dirección, la fecha de nacimiento, los enlaces, las referencias y las notas privadas se quedan fuera. La excepción es importar un currículum, que envía el archivo entero, con datos de contacto y referencias incluidos.
La promesa de "no inventar nunca experiencia" tiene dos capas, y solo una es código. Los prompts piden al modelo que use solo datos del perfil; después, con Never invent experience activado (por defecto), un fact guard en fact-guard.ts revisa cada sección generada en busca de nombres en mayúscula, siglas, números, años, porcentajes y palabras como "certified", y marca como "check this" todo lo que no esté en el perfil, en la oferta ni en los datos que añadiste. Señala; no bloquea. Según nuestra lectura del código, una afirmación vaga sin nombre ni número, como "led cross-functional teams", pasa sin tocar, y como la propia oferta cuenta como fuente, una herramienta que nombra la oferta puede atribuírsete sin aviso. El guard reduce el riesgo. La garantía sigue dependiendo de que leas cada borrador antes de enviarlo.
La conexión con Gmail pide a Google gmail.send, gmail.readonly, calendar.freebusy y calendar.events, además de tu dirección. gmail.readonly permite a la aplicación leer todo tu buzón; Dossier solo guarda los hilos que envió y el correo de las empresas a las que te postulaste, salvo que elijas Every new email, que además envía a la IA cada mensaje nuevo fuera de Promociones y Social. Comprueba el correo cada 10 minutos por defecto y no envía nada sin tu confirmación. Tienes que crear tu propio cliente OAuth en Google Cloud, pasar por alto un aviso de "aplicación no verificada" y publicar la pantalla de consentimiento, porque Google corta el acceso en modo de prueba a los 7 días. La búsqueda de empleo cuesta poco: el plan gratuito de JSearch tiene 200 búsquedas al mes, OpenWeb Ninja indica 0,005 $ por petición a partir de ahí, Adzuna da una clave gratuita válida para unas 250 al día y FreeHire no necesita clave. El agente de empleo está limitado a tres ejecuciones al día y una página de resultados en cada una, unas 90 búsquedas de JSearch al mes como máximo.
El modelo de seguridad encaja mejor con un portátil que con internet abierto. Hay una sola contraseña, guardada como hash argon2id, sin cuentas y sin segundo factor descrito, y detrás están tu perfil, cualquier acceso de lectura a Gmail y tus claves de proveedor. Los inicios de sesión tienen límite de intentos por IP y en total, pero SECURITY.md advierte de no exponer directamente el puerto 3000 porque el limitador confía en la última entrada de X-Forwarded-For, así que un proxy inverso con TLS es obligatorio, no opcional. Usar Claude en la web a través del conector MCP también necesita esa dirección HTTPS pública. El ping de uso solo es voluntario desde la 1.8.0, y una comprobación diaria de actualizaciones en GitHub viene activada por defecto.
La madurez es la preocupación honesta. El repositorio tiene cuatro semanas, la API de GitHub lista dos colaboradores y 25 commits en main, y han salido 19 versiones desde el 3 de octubre de 2026, con formatos de exportación que no se importan en versiones anteriores. Los 744 forks son muchos frente a 3.509 estrellas, más o menos uno por cada cinco, lo que puede significar simplemente que la gente hace fork para autoalojarlo. AGPL-3.0 te permite usarlo y modificarlo libremente para ti; un orientador profesional que ejecute una copia modificada para sus clientes debe ofrecerles el código fuente, pasa a ser responsable del tratamiento de sus datos según el RGPD y necesita un plan de API de FreeHire. Para la búsqueda de una persona en un equipo doméstico con un modelo local, es una herramienta bien pensada; como servicio expuesto a internet necesita más blindaje del que trae.
Dónde se gana su sitio
Una diseñadora de producto sénior en Berlín que se postula a entre 15 y 20 puestos al mes
Adaptar el currículum y la carta a cada oferta sin inventarme nada
Rellenas el perfil una vez, pegas cada oferta y revisas la coincidencia y las marcas "check this" antes de descargar los PDF. Con Anthropic u OpenAI, el perfil y la oferta van a ese proveedor bajo las condiciones de tu API; el tablero y el panel siguen respuestas y entrevistas.
Un ingeniero de software bajo un NDA que no enviará su currículum a un modelo en la nube
Hacer toda la búsqueda en mi propio portátil
Arrancas el archivo Compose con el perfil ai y descargas qwen2.5:7b, que necesita unos 6 GB de memoria. Nada del perfil ni de los documentos sale del equipo, pero en una CPU una candidatura nueva tarda varios minutos en lugar de segundos.
Un suscriptor de Claude Pro que prefiere trabajar en el chat
Pedir a Claude que encuentre empleos, los ordene según mi perfil y redacte el mejor
Activas el conector MCP, pones Dossier detrás de un proxy HTTPS público y lo añades como conector personalizado. Las herramientas de Claude pueden buscar, puntuar, leer el perfil y guardar borradores, pero nunca enviar ni borrar; lo que Claude lee va a Anthropic bajo tu cuenta de Claude.
Un recién titulado que busca trabajo con poco presupuesto
Recibir cada mañana una lista corta de ofertas nuevas sin pagar una API
Eliges FreeHire o la clave gratuita de Adzuna y defines una búsqueda, una hora y una puntuación mínima en Settings, Job agent. Se ejecuta una vez al día, puntúa hasta 15 ofertas nuevas por defecto y puede preparar hasta 3 borradores que esperan tu aprobación.
Antes de decidirte
- Puesta en marcha
- Descarga compose.production.yml, genera POSTGRES_PASSWORD y DOSSIER_SECRET, crea el hash de una contraseña con el comando hash-password de la imagen y ejecuta docker compose up -d. La imagen ocupa unos 1,7 GB y necesita unos 2 GB de memoria libre; en un servidor, la documentación pide 2 vCPU, 2 GB y un proxy inverso con TLS.
- Integraciones
- Ollama, llama.cpp, LM Studio, cualquier API compatible con OpenAI (OpenRouter, DeepSeek, vLLM), Anthropic y Mistral; JSearch, Adzuna, FreeHire y una fuente no oficial de la Bundesagentur für Arbeit; Gmail y Google Calendar; un conector MCP para Claude, n8n y otras aplicaciones MCP; Jev by TypeSafe para puntuar.
- Datos y privacidad
- Todo se guarda en tu base de datos PostgreSQL; las claves y los tokens de Google se cifran con DOSSIER_SECRET; las copias de seguridad nocturnas en JSON plano se conservan 14 días por defecto. Un modelo alojado recibe tu perfil sin datos de contacto más las ofertas y, si Gmail está activado, respuestas de hasta 8.000 caracteres. El ping de uso es voluntario; la comprobación diaria de actualizaciones en GitHub viene activada.
- Coste a escala
- No hay nivel de pago. Un servidor pequeño más el uso del modelo: gratis con un modelo local, o el precio por token de tu proveedor por cada lectura, coincidencia, borrador y puntuación. JSearch por encima de 200 búsquedas al mes se paga por uso, a 0,005 $ por petición; un orientador que lo aloje para clientes necesita un plan de API de FreeHire.
- Límites
- Un solo usuario, una sola instancia por base de datos, solo navegadores de escritorio e interfaz en inglés. 19 versiones en cuatro semanas, y una exportación de la 1.11.0 no se puede importar en versiones anteriores. El fact guard es léxico y solo marca. Seis incidencias abiertas en el momento de escribir.
Lo bueno
- Documentación exacta, tarea por tarea, de lo que recibe un modelo alojado
- El fact guard marca nombres, números y titulaciones que tu perfil no respalda
- Los niveles gratuitos de búsqueda bastan para el uso diario, y el agente nunca se postula
- Funciona totalmente sin conexión con Ollama o LM Studio
Lo malo
- Una sola contraseña, sin cuentas y sin segundo factor descrito
- El fact guard solo marca, y se le escapan afirmaciones vagas y términos tomados de la oferta
- El acceso de lectura a Gmail cubre todo el buzón; tienes que gestionar tu propio cliente OAuth de Google
- Cuatro semanas de vida con dos colaboradores listados; solo escritorio, interfaz en inglés
Ideal para
Una persona que busca empleo, cómoda con Docker, y quiere currículums, cartas y seguimiento de candidaturas a medida en un equipo doméstico o un servidor privado, idealmente con un modelo local.
Dossier: preguntas frecuentes
- ¿Merece la pena Dossier?
- Dossier es una aplicación de búsqueda de empleo especialmente cuidadosa y bien documentada, cuyo control de honestidad es una red útil y no una garantía, y cuyas cuatro semanas de historia y su contraseña única aconsejan usarla primero en casa. Le damos un 3.8 sobre 5.
- ¿Cuánto cuesta Dossier?
- Libre y de código abierto (AGPL-3.0), solo autoalojado. Pagas tu propio servidor, tu proveedor de IA si es alojado y cualquier API de búsqueda de empleo por encima de los niveles gratuitos (el plan gratuito de JSearch tiene 200 búsquedas al mes; la clave gratuita de Adzuna, unas 250 al día; FreeHire no necesita clave).
- ¿Qué inconvenientes tiene Dossier?
- Una sola contraseña, sin cuentas y sin segundo factor descrito; el fact guard solo marca, y se le escapan afirmaciones vagas y términos tomados de la oferta; el acceso de lectura a Gmail cubre todo el buzón; tienes que gestionar tu propio cliente OAuth de Google; cuatro semanas de vida con dos colaboradores listados; solo escritorio, interfaz en inglés.
- ¿Para quién es Dossier?
- Una persona que busca empleo, cómoda con Docker, y quiere currículums, cartas y seguimiento de candidaturas a medida en un equipo doméstico o un servidor privado, idealmente con un modelo local.
- ¿Cuánto cuesta Dossier para un equipo o en producción?
- No hay nivel de pago. Un servidor pequeño más el uso del modelo: gratis con un modelo local, o el precio por token de tu proveedor por cada lectura, coincidencia, borrador y puntuación. JSearch por encima de 200 búsquedas al mes se paga por uso, a 0,005 $ por petición; un orientador que lo aloje para clientes necesita un plan de API de FreeHire.
- ¿Es Dossier seguro para los datos de la empresa?
- Todo se guarda en tu base de datos PostgreSQL; las claves y los tokens de Google se cifran con DOSSIER_SECRET; las copias de seguridad nocturnas en JSON plano se conservan 14 días por defecto. Un modelo alojado recibe tu perfil sin datos de contacto más las ofertas y, si Gmail está activado, respuestas de hasta 8.000 caracteres. El ping de uso es voluntario; la comprobación diaria de actualizaciones en GitHub viene activada.
Respuestas comprobadas el 31 oct 2026.