[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation-es":3,"projects-nav-es":24,"header-me":1053,"\u002Fes\u002Fprojects\u002Fai-chatbot-project":1054},[4,8,12,16,20],{"title":5,"path":6,"stem":7},"El chatbot humanitario de IA","\u002Fes\u002Fprojects\u002Fai-chatbot-project","es\u002F1.projects\u002F1.ai-chatbot-project",{"title":9,"path":10,"stem":11},"Panel de análisis de datos de empleo de ReliefWeb","\u002Fes\u002Fprojects\u002Freliefweb-jobs-dashboard","es\u002F1.projects\u002F2.reliefweb-jobs-dashboard",{"title":13,"path":14,"stem":15},"Comprender la ayuda en efectivo en Ucrania","\u002Fes\u002Fprojects\u002Fhumanitarian-data-platform","es\u002F1.projects\u002F3.humanitarian-data-platform",{"title":17,"path":18,"stem":19},"Portafolio de analista de datos humanitarios","\u002Fes\u002Fprojects\u002Fweb-development-project","es\u002F1.projects\u002F4.web-development-project",{"title":21,"path":22,"stem":23},"Asesor jurídico humanitario basado en IA para Ucrania","\u002Fes\u002Fprojects\u002Fhumanitarian-paralegal-advisor","es\u002F1.projects\u002F5.humanitarian-paralegal-advisor",[25,268,524,692,880],{"id":26,"title":5,"article":27,"authors":28,"blogUrl":27,"body":30,"client":244,"description":245,"extension":246,"githubUrl":247,"hours":248,"liveDemoUrl":249,"meta":250,"navigation":251,"ogImage":27,"path":6,"publishedAt":27,"role":252,"seo":253,"serviceUrl":254,"servicesUrl":27,"status":255,"stem":7,"tags":256,"techStack":260,"updatedAt":27,"year":266,"__hash__":267},"projects\u002Fes\u002F1.projects\u002F1.ai-chatbot-project.md",null,[29],"Jesus Baena",{"type":31,"value":32,"toc":226},"minimark",[33,41,48,52,58,61,67,80,86,106,112,118,121,127,160,163,169,175,205,212],[34,35,37],"h2",{"id":36},"descripción-general-del-proyecto",[38,39,40],"strong",{},"Descripción general del proyecto",[42,43,45],"h3",{"id":44},"el-objetivo",[38,46,47],{},"El objetivo",[49,50,51],"p",{},"Este proyecto despliega una aplicación de IA de acceso abierto que utiliza un conjunto de datos propio de documentos humanitarios. El flujo de usuario admite el uso inmediato como invitado, con una vía de autenticación opcional para conservar las sesiones. El modelo está optimizado para ayudar al personal remoto sobre el terreno añadiendo contexto educativo a las respuestas generadas.",[42,53,55],{"id":54},"la-solución",[38,56,57],{},"La solución",[49,59,60],{},"Este proyecto utiliza un stack moderno y de baja sobrecarga diseñado para lograr un alto impacto. Construido sobre una plantilla de Nuxt UI Pro, el frontend ofrece acceso público inmediato con una vía de inicio de sesión opcional conectada a baena.ai. La arquitectura del backend evita la sobrecarga habitual del servidor enrutando las solicitudes de API directamente a flujos de trabajo de automatización de n8n, que gestionan la interacción con el modelo de IA y la persistencia de datos a través de Supabase",[42,62,64],{"id":63},"objetivos-clave",[38,65,66],{},"Objetivos clave",[68,69,70,74,77],"ul",{},[71,72,73],"li",{},"Desarrollar una experiencia de chat pública basada en sesiones para usuarios anónimos, con una llamada a la acción clara para registrarse.",[71,75,76],{},"Implementar un sistema de autenticación delegada que permita a los usuarios registrarse o iniciar sesión para guardar y recuperar todo su historial de chat.",[71,78,79],{},"Construir una integración de backend robusta que conecte el servidor de Nuxt con un webhook de n8n y conserve todos los datos en una base de datos de Supabase.",[34,81,83],{"id":82},"público-y-partes-interesadas",[38,84,85],{},"Público y partes interesadas",[68,87,88,94,100],{},[71,89,90,93],{},[38,91,92],{},"Usuarios principales:"," Profesionales humanitarios que necesitan análisis de datos en tiempo real y apoyo a la toma de decisiones.",[71,95,96,99],{},[38,97,98],{},"Usuarios secundarios:"," Organizaciones humanitarias que buscan mejorar su eficiencia operativa mediante herramientas basadas en IA.",[71,101,102,105],{},[38,103,104],{},"Partes interesadas clave:"," Se trata de un proyecto individual gestionado por Jesus Baena, responsable de todos los aspectos del desarrollo, el despliegue y el mantenimiento.",[34,107,109],{"id":108},"el-plan-y-las-funciones-clave",[38,110,111],{},"El plan y las funciones clave",[42,113,115],{"id":114},"enfoque-general",[38,116,117],{},"Enfoque general",[49,119,120],{},"Inicialmente, el proyecto validó su concepto mediante un prototipo sin código en Bubble. Para garantizar la escalabilidad y el control, estoy migrando ahora a una arquitectura propia que utiliza una plantilla de Nuxt UI Pro como base visual. Este proceso implica desacoplar los servicios de autenticación e IA predeterminados de la plantilla para sustituirlos por nuestros requisitos específicos. El desarrollo sigue una estrategia «backend primero»: establecer la API propia y la capa de persistencia de Supabase antes de implementar la lógica dinámica del frontend",[42,122,124],{"id":123},"componentes-principales",[38,125,126],{},"Componentes principales",[68,128,129,140,146],{},[71,130,131,134,135,139],{},[38,132,133],{},"Sistema de autenticación:"," Un flujo delegado que redirige a los usuarios a ",[136,137,138],"code",{},"baena.ai"," para iniciar sesión o registrarse y los devuelve a la aplicación de chat con una sesión activa.",[71,141,142,145],{},[38,143,144],{},"Interfaz de chat principal:"," Una interfaz dinámica con un campo de entrada de mensajes redimensionable, visualización del historial de conversaciones, un selector de asistente de IA y un menú de usuario que se adapta según el estado de autenticación.",[71,147,148,151,152,155,156,159],{},[38,149,150],{},"Integración de backend:"," Una API de servidor de Nuxt que enruta las solicitudes a un webhook de n8n designado, transmitiendo el mensaje, el ",[136,153,154],{},"thread_id"," y el ",[136,157,158],{},"assistant_id",", y guarda todas las conversaciones en Supabase.",[161,162],"hr",{},[34,164,166],{"id":165},"cronograma-y-entregables",[38,167,168],{},"Cronograma y entregables",[42,170,172],{"id":171},"hitos-principales",[38,173,174],{},"Hitos principales",[68,176,177,188,195],{},[71,178,179,180,183,184,187],{},"[",[38,181,182],{},"Fecha","] ",[38,185,186],{},":"," Inicio del proyecto y finalización de los requisitos",[71,189,179,190,183,192,194],{},[38,191,182],{},[38,193,186],{}," Integración de backend (API, n8n, Supabase) completada",[71,196,179,197,183,199,201,202],{},[38,198,182],{},[38,200,186],{}," MVP desplegado y en funcionamiento en ",[136,203,204],{},"chat.baena.ai",[206,207,209],"h4",{"id":208},"entregables-finales",[38,210,211],{},"Entregables finales",[68,213,214,220,223],{},[71,215,216,217,219],{},"Una aplicación web en funcionamiento y plenamente operativa, accesible en ",[136,218,204],{},".",[71,221,222],{},"El repositorio final del código fuente de la aplicación.",[71,224,225],{},"Una presentación o documento que resuma las funciones y la arquitectura.",{"title":227,"searchDepth":228,"depth":228,"links":229},"",2,[230,236,237,241],{"id":36,"depth":228,"text":40,"children":231},[232,234,235],{"id":44,"depth":233,"text":47},3,{"id":54,"depth":233,"text":57},{"id":63,"depth":233,"text":66},{"id":82,"depth":228,"text":85},{"id":108,"depth":228,"text":111,"children":238},[239,240],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":242},[243],{"id":171,"depth":233,"text":174},"Interno (baena.ai)","Una aplicación de chat de IA de acceso público con cuentas de usuario opcionales para guardar el historial de conversaciones.","md","N\u002FA","50+","https:\u002F\u002Fchat.baena.ai",{},true,"Desarrollador en solitario",{"title":5,"description":245},"\u002Fcontact","En producción",[257,258,259],"AI","Chatbot","Web App",[261,262,263,264,265],"Nuxt UI Pro","n8n","Supabase","Flowise","PostgreSQL","2025","qJhv_4Vo3mYTqQFvShPKLwrYDQW33kPvFSez-1vHU3s",{"id":269,"title":9,"article":27,"authors":270,"blogUrl":271,"body":272,"client":508,"description":509,"extension":246,"githubUrl":510,"hours":511,"liveDemoUrl":512,"meta":513,"navigation":251,"ogImage":27,"path":10,"publishedAt":27,"role":252,"seo":514,"serviceUrl":27,"servicesUrl":254,"status":515,"stem":11,"tags":516,"techStack":520,"updatedAt":27,"year":522,"__hash__":523},"projects\u002Fes\u002F1.projects\u002F2.reliefweb-jobs-dashboard.md",[29],"https:\u002F\u002Fbaena.blog\u002F00.-STOCK\u002FB.-HUMANITARIAN-SECTOR-EMPLOYMENT-DASHBOARD",{"type":31,"value":273,"toc":492},[274,278,282,293,297,304,308,328,330,336,351,353,359,365,406,412,418,428,430,434,438,468,472],[34,275,276],{"id":36},[38,277,40],{},[42,279,280],{"id":44},[38,281,47],{},[49,283,284,285,288,289,292],{},"Proporcionar conciencia situacional en tiempo real sobre el impacto de la ",[38,286,287],{},"crisis mundial de financiación de 2025"," en la fuerza de trabajo humanitaria. Este proyecto va más allá de la evidencia anecdótica y utiliza datos para rastrear cómo los recortes de financiación y las directivas de ",[38,290,291],{},"«USAID stop work»"," se traducen en congelaciones reales de la contratación y en una contracción del mercado.",[42,294,295],{"id":54},[38,296,57],{},[49,298,299,300,303],{},"Un panel de ",[38,301,302],{},"Metabase"," autoalojado que automatiza la recopilación y la visualización de los datos del mercado laboral. Al mantener un stack de datos soberano, el proyecto garantiza que los datos históricos se conserven pese a los cambios en plataformas externas, lo que permite un análisis longitudinal de la «Gran Recesión de la Ayuda».",[42,305,306],{"id":63},[38,307,66],{},[68,309,310,316,322],{},[71,311,312,315],{},[38,313,314],{},"Cuantificar la brecha de financiación:"," Correlacionar el descenso de las ofertas de empleo en ReliefWeb con los principales hitos de financiación de 2025 (por ejemplo, la congelación de pagos de USAID de febrero de 2025).",[71,317,318,321],{},[38,319,320],{},"Transparencia operativa:"," Proporcionar un repositorio de código abierto con todas las consultas SQL utilizadas para procesar los datos, invitando a la revisión por pares de la comunidad humanitaria de gestión de la información (IM).",[71,323,324,327],{},[38,325,326],{},"Rendición de cuentas pública:"," Desplegar una instancia pública de Metabase que permita a las partes interesadas ver el coste humano de los recortes presupuestarios en tiempo real.",[161,329],{},[34,331,333],{"id":332},"conclusiones-clave-e-interpretación",[38,334,335],{},"Conclusiones clave e interpretación",[337,338,339,345],"ol",{},[71,340,341,344],{},[38,342,343],{},"El patrón de «reducción de escala»","\nLos datos indican una disminución proporcional en todos los tipos de puestos. Funciones clave como la gestión de proyectos y las operaciones mantienen su peso relativo pese a las cifras absolutas más bajas. Esto sugiere que las organizaciones están aplicando recortes amplios y no estratégicos en lugar de giros estructurales —aplicando su experiencia en «estrategias de salida» a sus propias operaciones.",[71,346,347,350],{},[38,348,349],{},"El giro hacia las consultorías","\nAunque las ofertas de empleo permanente llevan en un descenso sostenido desde febrero de 2025, las consultorías de corta duración se mantienen estables. Esto apunta a un cambio de mercado: las organizaciones mitigan el riesgo dando preferencia a contratos flexibles y de baja sobrecarga frente a los compromisos de personal a largo plazo.",[161,352],{},[34,354,356],{"id":355},"implementación-técnica",[38,357,358],{},"Implementación técnica",[42,360,362],{"id":361},"el-stack",[38,363,364],{},"El stack",[68,366,367,381,390,398],{},[71,368,369,372,373,376,377,380],{},[38,370,371],{},"Fuente de datos:"," Ingesta automatizada desde la ",[38,374,375],{},"API de ReliefWeb"," (endpoint ",[136,378,379],{},"\u002Fjobs",").",[71,382,383,386,387,389],{},[38,384,385],{},"Orquestación:"," ",[38,388,262],{}," (autoalojado) gestiona el proceso diario de ETL (extracción, transformación y carga).",[71,391,392,386,395,397],{},[38,393,394],{},"Análisis:",[38,396,302],{}," (autoalojado) para la visualización y los paneles públicos.",[71,399,400,386,403,405],{},[38,401,402],{},"Base de datos:",[38,404,265],{}," para el almacenamiento de alto rendimiento y las consultas SQL complejas.",[42,407,409],{"id":408},"aspecto-técnico-destacado-resolución-de-la-distorsión-de-datos",[38,410,411],{},"Aspecto técnico destacado: resolución de la distorsión de datos",[49,413,414,417],{},[38,415,416],{},"Reto:"," Las consultas de calendario estándar de «la semana pasada» o «esta semana» distorsionan las tendencias a principios de semana. Por ejemplo, ejecutar un informe un martes muestra un falso «desplome» de las cifras porque la semana natural acaba de empezar.",[49,419,420,423,424,427],{},[38,421,422],{},"Solución:"," Se implementó una lógica de ",[38,425,426],{},"total móvil de 7 días"," en SQL. Esta ignora las semanas naturales fijas para ofrecer una línea de tendencia suavizada y precisa de la velocidad del mercado basada en las últimas 168 horas, garantizando la exactitud independientemente de cuándo consulte el usuario el panel.",[161,429],{},[34,431,432],{"id":165},[38,433,168],{},[42,435,436],{"id":171},[38,437,174],{},[68,439,440,450,456,462],{},[71,441,442,445,446,449],{},[38,443,444],{},"Fase 1:"," Integración de la API y diseño del esquema (correspondencia de las ",[136,447,448],{},"career_categories"," de ReliefWeb con la base de datos).",[71,451,452,455],{},[38,453,454],{},"Fase 2:"," Desarrollo de la lógica SQL (creación de las consultas del total móvil de 7 días y de la proporción consultorías frente a personal).",[71,457,458,461],{},[38,459,460],{},"Fase 3:"," Paneles en Metabase (creación del relato visual de la crisis de financiación de 2025).",[71,463,464,467],{},[38,465,466],{},"Fase 4:"," Lanzamiento de código abierto (publicación de la documentación y los scripts SQL en GitHub).",[42,469,470],{"id":208},[38,471,211],{},[68,473,474,480,486],{},[71,475,476,479],{},[38,477,478],{},"Panel de Metabase en funcionamiento:"," Enlace público a las tendencias de contratación en tiempo real.",[71,481,482,485],{},[38,483,484],{},"Plano SQL:"," Un repositorio de GitHub que contiene la lógica del proyecto.",[71,487,488,491],{},[38,489,490],{},"Guía técnica:"," Documentación sobre cómo montar este stack humanitario de gestión de la información (IM) autoalojado mediante Docker.",{"title":227,"searchDepth":228,"depth":228,"links":493},[494,499,500,504],{"id":36,"depth":228,"text":40,"children":495},[496,497,498],{"id":44,"depth":233,"text":47},{"id":54,"depth":233,"text":57},{"id":63,"depth":233,"text":66},{"id":332,"depth":228,"text":335},{"id":355,"depth":228,"text":358,"children":501},[502,503],{"id":361,"depth":233,"text":364},{"id":408,"depth":233,"text":411},{"id":165,"depth":228,"text":168,"children":505},[506,507],{"id":171,"depth":233,"text":174},{"id":208,"depth":233,"text":211},"Proyecto personal","Un panel de inteligencia de negocio en tiempo real que procesa millones de puntos de datos al día para ofrecer información sobre el mercado laboral humanitario.","https:\u002F\u002Fgithub.com\u002FJesus-Baena\u002F005-dashboard-reliefweb-jobs","15","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Freliefjobs-dashboard",{},{"title":9,"description":509},"Completado",[517,518,519],"Data Analysis","Business Intelligence","Web Services",[302,265,262,521],"Docker","2024","7LPXS4HrfMocW9dP3Z0HHRs11qq1JgbcvYr6h5733ig",{"id":525,"title":13,"article":27,"authors":526,"blogUrl":27,"body":528,"client":675,"description":676,"extension":246,"githubUrl":27,"hours":511,"liveDemoUrl":677,"meta":678,"navigation":251,"ogImage":27,"path":14,"publishedAt":27,"role":679,"seo":680,"serviceUrl":254,"servicesUrl":27,"status":515,"stem":15,"tags":681,"techStack":686,"updatedAt":27,"year":522,"__hash__":691},"projects\u002Fes\u002F1.projects\u002F3.humanitarian-data-platform.md",[527],"Jesús Baena",{"type":31,"value":529,"toc":669},[530,534,538,541,545,548,552,572,576,588,592,596,599,603,623,627,631,654,658],[42,531,532],{"id":36},[38,533,40],{},[206,535,536],{"id":44},[38,537,47],{},[49,539,540],{},"Analizar un conjunto de datos a gran escala sobre la asistencia en efectivo multipropósito (MPCA) de la crisis de Ucrania para obtener información práctica sobre la distribución de la ayuda, las prácticas de elaboración de informes y el alcance demográfico, reconociendo al mismo tiempo las limitaciones inherentes a los datos.",[206,542,543],{"id":54},[38,544,57],{},[49,546,547],{},"Un informe analítico exhaustivo basado en datos recopilados por la Oficina de las Naciones Unidas para la Coordinación de Asuntos Humanitarios (OCHA). El estudio explora los patrones de las intervenciones de MPCA y destaca hallazgos clave que pueden orientar las operaciones actuales y mejorar las futuras estrategias de recopilación de datos en emergencias humanitarias.",[206,549,550],{"id":63},[38,551,66],{},[68,553,554,560,566],{},[71,555,556,559],{},[38,557,558],{},"Analizar los patrones de distribución de la ayuda"," para comprender la influencia de la logística y la presencia de socios frente a los criterios basados puramente en las necesidades.",[71,561,562,565],{},[38,563,564],{},"Evaluar el nivel de detalle de los informes"," y la coherencia entre los distintos tipos de actores humanitarios (ONU, ONG, Movimiento de la Cruz Roja y de la Media Luna Roja).",[71,567,568,571],{},[38,569,570],{},"Identificar posibles carencias en los informes demográficos"," y proponer mejoras para los futuros esfuerzos de recopilación de datos.",[42,573,574],{"id":82},[38,575,85],{},[68,577,578,583],{},[71,579,580,582],{},[38,581,92],{}," Responsables de programas humanitarios, analistas de datos y miembros del grupo de trabajo técnico de MPCA.",[71,584,585,587],{},[38,586,104],{}," OCHA, ONG asociadas, agencias de la ONU, el Movimiento de la Cruz Roja y de la Media Luna Roja y los donantes humanitarios.",[42,589,590],{"id":108},[38,591,111],{},[206,593,594],{"id":114},[38,595,117],{},[49,597,598],{},"El proyecto consistió en un análisis exploratorio de datos de un conjunto de datos real, recopilado sobre el terreno. La estrategia central fue extraer tendencias significativas de los datos de coordinación, contextualizar cuidadosamente los hallazgos reconociendo las limitaciones de los datos (por ejemplo, incoherencias en la información financiera) y elaborar recomendaciones prácticas.",[206,600,601],{"id":123},[38,602,126],{},[68,604,605,611,617],{},[71,606,607,610],{},[38,608,609],{},"Componente 1: Análisis a nivel de socio:"," Datos desagregados por tipo de socio para comparar el nivel de detalle de los informes y el enfoque geográfico de las ONG nacionales, las agencias de la ONU y el Movimiento de la Cruz Roja y de la Media Luna Roja.",[71,612,613,616],{},[38,614,615],{},"Componente 2: Análisis de la distribución geoespacial:"," Se examinó la concentración de las actividades de ayuda en relación con las zonas de conflicto para evaluar el papel de la accesibilidad en la distribución.",[71,618,619,622],{},[38,620,621],{},"Componente 3: Revisión de datos demográficos:"," Se examinaron con detalle los datos de composición de los hogares para identificar el posible subregistro de grupos específicos, como los hombres adultos.",[42,624,625],{"id":165},[38,626,168],{},[206,628,629],{"id":171},[38,630,174],{},[68,632,633,641,648],{},[71,634,635,640],{},[38,636,637,186],{},[638,639,182],"span",{}," Adquisición de datos de OCHA y limpieza\u002Fpreparación inicial de los datos.",[71,642,643,647],{},[38,644,645,186],{},[638,646,182],{}," Finalización del análisis principal y redacción de los hallazgos clave.",[71,649,650,653],{},[38,651,652],{},"20 ene. 2025:"," Publicación del informe analítico final.",[206,655,656],{"id":208},[38,657,211],{},[68,659,660,663,666],{},[71,661,662],{},"Un artículo analítico publicado que detalla la metodología, los hallazgos clave y la conclusión.",[71,664,665],{},"Un conjunto de recomendaciones concretas para mejorar las futuras herramientas de seguimiento de la MPCA humanitaria.",[71,667,668],{},"Una base para un proyecto de investigación posterior que utilice modelos estadísticos para analizar la percepción del riesgo.",{"title":227,"searchDepth":228,"depth":228,"links":670},[671,672,673,674],{"id":36,"depth":233,"text":40},{"id":82,"depth":233,"text":85},{"id":108,"depth":233,"text":111},{"id":165,"depth":233,"text":168},"Análisis de datos humanitarios \u002F Proyecto de iniciativa propia","Un análisis en profundidad de los datos de la asistencia en efectivo multipropósito (MPCA) para identificar tendencias, carencias y lecciones aprendidas de la respuesta humanitaria en Ucrania.","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Fmpca-ukraine-report",{},"Analista de datos",{"title":13,"description":676},[517,682,683,684,685],"Humanitarian Aid","Cash Assistance","Ukraine","OCHA",[687,688,689,690],"Python (Pandas, Matplotlib, Seaborn)","R (dplyr, ggplot2)","QGIS","NGINX","F_Bpc9LPMgUV5ZALBVJ6lmRzocYdr0suho6LBZxkdy4",{"id":693,"title":17,"article":27,"authors":694,"blogUrl":27,"body":696,"client":862,"description":863,"extension":246,"githubUrl":864,"hours":248,"liveDemoUrl":865,"meta":866,"navigation":251,"ogImage":27,"path":18,"publishedAt":27,"role":867,"seo":868,"serviceUrl":27,"servicesUrl":254,"status":869,"stem":19,"tags":870,"techStack":875,"updatedAt":27,"year":522,"__hash__":879},"projects\u002Fes\u002F1.projects\u002F4.web-development-project.md",[29,695],"Gemini",{"type":31,"value":697,"toc":846},[698,700,704,707,711,714,718,744,748,760,764,768,771,775,797,801,805,831,835],[34,699,40],{"id":36},[42,701,702],{"id":44},[38,703,47],{},[49,705,706],{},"El objetivo principal es crear un portafolio en línea pulido y profesional que consolide una marca personal como «arquitecto de datos humanitarios», mostrando de forma eficaz las competencias técnicas y la experiencia en proyectos para atraer a posibles empleadores y clientes freelance.",[42,708,709],{"id":54},[38,710,57],{},[49,712,713],{},"El proyecto es un sitio web de portafolio integral. Servirá como principal herramienta comercial y profesional, presentando los proyectos como casos de estudio orientados a los beneficios, describiendo los servicios freelance contratables y posicionando al autor como referente en la intersección entre la tecnología y la ayuda humanitaria.",[42,715,716],{"id":63},[38,717,66],{},[68,719,720,726,732,738],{},[71,721,722,725],{},[38,723,724],{},"Mostrar la experiencia:"," Demostrar con claridad capacidades avanzadas en IA, análisis de datos y desarrollo de herramientas digitales en un contexto humanitario.",[71,727,728,731],{},[38,729,730],{},"Generar oportunidades:"," Atraer el interés de reclutadores y organizaciones tanto para puestos a tiempo completo como para colaboraciones de servicios freelance.",[71,733,734,737],{},[38,735,736],{},"Construir autoridad:"," Consolidar una reputación como profesional cualificado en el sector de la tecnología humanitaria.",[71,739,740,743],{},[38,741,742],{},"Controlar el relato:"," Presentar una narrativa curada del trabajo profesional que ponga de relieve el impacto tangible y la capacidad de resolución de problemas.",[34,745,746],{"id":82},[38,747,85],{},[68,749,750,755],{},[71,751,752,754],{},[38,753,92],{}," Reclutadores y responsables de contratación en ONG, agencias de la ONU y empresas tecnológicas; clientes potenciales para proyectos freelance; y otros profesionales de los sectores humanitario y tecnológico.",[71,756,757,759],{},[38,758,104],{}," El propietario del portafolio (el usuario).",[34,761,762],{"id":108},[38,763,111],{},[42,765,766],{"id":114},[38,767,117],{},[49,769,770],{},"La estrategia de desarrollo comienza con la creación de un producto mínimo viable (MVP) con Bubble que sirva de referencia en funcionamiento. La versión final se desarrollará después localmente con Nuxt. El código se subirá a un repositorio de GitHub, lo que activará un proceso automatizado de compilación y despliegue mediante Coolify.",[42,772,773],{"id":123},[38,774,126],{},[68,776,777,783,791],{},[71,778,779,782],{},[38,780,781],{},"Componente 1: Sitio web principal del portafolio:"," Una aplicación de Nuxt con páginas de inicio, servicios, proyectos, artículos y «acerca de», todas gestionadas dentro de un único repositorio de GitHub.",[71,784,785,788,789,380],{},[38,786,787],{},"Componente 2: Aplicación de chat de IA:"," Una aplicación de chat de IA modular y transferible, construida como un proyecto de Nuxt independiente en un subdominio dedicado (",[136,790,204],{},[71,792,793,796],{},[38,794,795],{},"Componente 3: Autenticación compartida:"," Un sistema de inicio de sesión unificado en el que la autenticación en el sitio principal se reconoce en el subdominio del chat, creando una experiencia de usuario fluida.",[34,798,799],{"id":165},[38,800,168],{},[42,802,803],{"id":171},[38,804,174],{},[68,806,807,815,823],{},[71,808,179,809,183,812,814],{},[38,810,811],{},"Agosto de 2024",[38,813,186],{}," Planificación completada",[71,816,179,817,183,820,822],{},[38,818,819],{},"Septiembre de 2024",[38,821,186],{}," MVP (versión en Bubble) listo para revisión y lanzamiento",[71,824,179,825,183,828,830],{},[38,826,827],{},"Noviembre de 2024",[38,829,186],{}," Versión final (Nuxt) desplegada\u002Fentregada",[42,832,833],{"id":208},[38,834,211],{},[68,836,837,840,843],{},[71,838,839],{},"Un enlace a la aplicación web del portafolio en funcionamiento.",[71,841,842],{},"El repositorio final del código fuente en GitHub.",[71,844,845],{},"Una colección de casos de estudio y artículos redactados y publicados en el sitio.",{"title":227,"searchDepth":228,"depth":228,"links":847},[848,853,854,858],{"id":36,"depth":228,"text":40,"children":849},[850,851,852],{"id":44,"depth":233,"text":47},{"id":54,"depth":233,"text":57},{"id":63,"depth":233,"text":66},{"id":82,"depth":228,"text":85},{"id":108,"depth":228,"text":111,"children":855},[856,857],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":859},[860,861],{"id":171,"depth":233,"text":174},{"id":208,"depth":233,"text":211},"Portafolio personal","Un portafolio profesional en línea para consolidar y mostrar las competencias técnicas y la experiencia en proyectos","https:\u002F\u002Fgithub.com\u002FJesus-Baena","https:\u002F\u002Fbaena.ai",{},"Desarrollador Full Stack",{"title":17,"description":863},"En curso",[871,872,873,874,257],"Portfolio","Humanitarian Tech","Data Architecture","Web Development",[876,877,262,878],"Nuxt (Vue.js)","Supabase (PostgreSQL)","OpenAI API","EVdOYCDMLoTeg3ljEb5iHo9RTwjFchPejVNR9xfawSk",{"id":881,"title":21,"article":27,"authors":882,"blogUrl":27,"body":883,"client":508,"description":1039,"extension":246,"githubUrl":1040,"hours":27,"liveDemoUrl":1041,"meta":1042,"navigation":251,"ogImage":27,"path":22,"publishedAt":27,"role":867,"seo":1043,"serviceUrl":27,"servicesUrl":27,"status":515,"stem":23,"tags":1044,"techStack":1048,"updatedAt":27,"year":266,"__hash__":1052},"projects\u002Fes\u002F1.projects\u002F5.humanitarian-paralegal-advisor.md",[527],{"type":31,"value":884,"toc":1023},[885,889,893,896,900,903,907,927,931,943,947,951,954,958,984,988,992,1009,1013],[34,886,887],{"id":36},[38,888,40],{},[42,890,891],{"id":44},[38,892,47],{},[49,894,895],{},"El objetivo central es ofrecer a los trabajadores humanitarios en Ucrania una herramienta gratuita y accesible para comprender rápidamente el complejo y cambiante panorama jurídico, ahorrando así tiempo y optimizando los costes de las consultas jurídicas.",[42,897,898],{"id":54},[38,899,57],{},[49,901,902],{},"Un asesor en línea basado en IA que actúa como una guía jurídica preliminar. Utiliza un sofisticado sistema de generación aumentada por recuperación (RAG) de dos agentes que consulta una base de datos especializada de legislación ucraniana y recurre a una búsqueda web como alternativa para ofrecer respuestas sintetizadas y con fuentes a preguntas jurídicas relevantes para las operaciones humanitarias.",[42,904,905],{"id":63},[38,906,66],{},[68,908,909,915,921],{},[71,910,911,914],{},[38,912,913],{},"Ofrecer orientación preliminar"," sobre temas habituales como el registro de ONG, el reclutamiento militar, la normativa de importación y las implicaciones de la ley marcial.",[71,916,917,920],{},[38,918,919],{},"Optimizar los gastos jurídicos"," ayudando a las organizaciones a preparar y plantear mejor sus consultas ante asesores jurídicos profesionales.",[71,922,923,926],{},[38,924,925],{},"Garantizar la fiabilidad"," dando prioridad a la información de una base de datos curada de textos jurídicos oficiales y proporcionando citas de las fuentes para su verificación.",[34,928,929],{"id":82},[38,930,85],{},[68,932,933,938],{},[71,934,935,937],{},[38,936,92],{}," Responsables sobre el terreno, personal de programas y personal administrativo de ONG humanitarias locales e internacionales que operan en Ucrania.",[71,939,940,942],{},[38,941,104],{}," La comunidad humanitaria en general en Ucrania y las organizaciones comprometidas con la promoción del estado de derecho.",[34,944,945],{"id":108},[38,946,111],{},[42,948,949],{"id":114},[38,950,117],{},[49,952,953],{},"El proyecto se construyó utilizando una combinación de componentes low-code y de programación propia. El núcleo del sistema es una cadena secuencial de dos agentes construida en Flowise. Este sistema RAG consulta primero una base de datos vectorial especializada y curada (Supabase) en busca de respuestas de alta relevancia y recurre de forma inteligente a una búsqueda web general (SerpAPI) como alternativa para garantizar una cobertura exhaustiva.",[42,955,956],{"id":123},[38,957,126],{},[68,959,960,966,972,978],{},[71,961,962,965],{},[38,963,964],{},"Base de conocimiento:"," Una base de datos vectorial de creación propia que contiene leyes, decretos y documentos oficiales ucranianos, procesados mediante un pipeline de traducción propio en Python.",[71,967,968,971],{},[38,969,970],{},"Sistema RAG de dos agentes:"," 1. Un agente «compilador» que analiza las consultas de los usuarios y busca en la base de conocimiento o en la web.\n2. Un agente «refinador» que sintetiza la información recuperada en una respuesta coherente con citas de las fuentes.",[71,973,974,977],{},[38,975,976],{},"Backend de automatización:"," Un flujo de trabajo de n8n autoalojado que orquesta el flujo de datos entre la interfaz de usuario y el sistema de IA.",[71,979,980,983],{},[38,981,982],{},"Interfaz web:"," Un frontend sencillo en HTML, CSS y JavaScript para la interacción con el usuario.",[34,985,986],{"id":165},[38,987,168],{},[42,989,990],{"id":171},[38,991,174],{},[68,993,994,999,1004],{},[71,995,996,998],{},[38,997,444],{}," Creación de la base de conocimiento (recopilación de datos, traducción y vectorización).",[71,1000,1001,1003],{},[38,1002,454],{}," Desarrollo del sistema de IA de dos agentes con Flowise y n8n.",[71,1005,1006,1008],{},[38,1007,460],{}," Despliegue de la aplicación web en funcionamiento y lanzamiento público.",[42,1010,1011],{"id":208},[38,1012,211],{},[68,1014,1015,1018,1020],{},[71,1016,1017],{},"Un enlace al asesor jurídico en línea, en funcionamiento y de acceso público.",[71,1019,842],{},[71,1021,1022],{},"Un artículo técnico que detalla la construcción de la base de conocimiento y la arquitectura del sistema.",{"title":227,"searchDepth":228,"depth":228,"links":1024},[1025,1030,1031,1035],{"id":36,"depth":228,"text":40,"children":1026},[1027,1028,1029],{"id":44,"depth":233,"text":47},{"id":54,"depth":233,"text":57},{"id":63,"depth":233,"text":66},{"id":82,"depth":228,"text":85},{"id":108,"depth":228,"text":111,"children":1032},[1033,1034],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":1036},[1037,1038],{"id":171,"depth":233,"text":174},{"id":208,"depth":233,"text":211},"Un asistente de IA en línea diseñado para ayudar a las ONG humanitarias a orientarse en el complejo marco jurídico ucraniano.","https:\u002F\u002Fgithub.com\u002FJesus-Baena\u002Fchatbot-ukr-law","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Fparalegal-advisor",{},{"title":21,"description":1039},[257,682,1045,684,1046,1047],"Legal Tech","RAG","LLM",[262,264,1049,1050,1051],"Ollama","Qdrant","Postgres","cXQkHOc7e87zo1TOsbjXu_CR8AL1hgxkcAF2i64gRz0",{"user":27,"profile":27},{"id":26,"title":5,"article":27,"authors":1055,"blogUrl":27,"body":1056,"client":244,"description":245,"extension":246,"githubUrl":247,"hours":248,"liveDemoUrl":249,"meta":1199,"navigation":251,"ogImage":27,"path":6,"publishedAt":27,"role":252,"seo":1200,"serviceUrl":254,"servicesUrl":27,"status":255,"stem":7,"tags":1201,"techStack":1202,"updatedAt":27,"year":266,"__hash__":267},[29],{"type":31,"value":1057,"toc":1184},[1058,1062,1066,1068,1072,1074,1078,1086,1090,1104,1108,1112,1114,1118,1138,1140,1144,1148,1170,1174],[34,1059,1060],{"id":36},[38,1061,40],{},[42,1063,1064],{"id":44},[38,1065,47],{},[49,1067,51],{},[42,1069,1070],{"id":54},[38,1071,57],{},[49,1073,60],{},[42,1075,1076],{"id":63},[38,1077,66],{},[68,1079,1080,1082,1084],{},[71,1081,73],{},[71,1083,76],{},[71,1085,79],{},[34,1087,1088],{"id":82},[38,1089,85],{},[68,1091,1092,1096,1100],{},[71,1093,1094,93],{},[38,1095,92],{},[71,1097,1098,99],{},[38,1099,98],{},[71,1101,1102,105],{},[38,1103,104],{},[34,1105,1106],{"id":108},[38,1107,111],{},[42,1109,1110],{"id":114},[38,1111,117],{},[49,1113,120],{},[42,1115,1116],{"id":123},[38,1117,126],{},[68,1119,1120,1126,1130],{},[71,1121,1122,134,1124,139],{},[38,1123,133],{},[136,1125,138],{},[71,1127,1128,145],{},[38,1129,144],{},[71,1131,1132,151,1134,155,1136,159],{},[38,1133,150],{},[136,1135,154],{},[136,1137,158],{},[161,1139],{},[34,1141,1142],{"id":165},[38,1143,168],{},[42,1145,1146],{"id":171},[38,1147,174],{},[68,1149,1150,1156,1162],{},[71,1151,179,1152,183,1154,187],{},[38,1153,182],{},[38,1155,186],{},[71,1157,179,1158,183,1160,194],{},[38,1159,182],{},[38,1161,186],{},[71,1163,179,1164,183,1166,201,1168],{},[38,1165,182],{},[38,1167,186],{},[136,1169,204],{},[206,1171,1172],{"id":208},[38,1173,211],{},[68,1175,1176,1180,1182],{},[71,1177,216,1178,219],{},[136,1179,204],{},[71,1181,222],{},[71,1183,225],{},{"title":227,"searchDepth":228,"depth":228,"links":1185},[1186,1191,1192,1196],{"id":36,"depth":228,"text":40,"children":1187},[1188,1189,1190],{"id":44,"depth":233,"text":47},{"id":54,"depth":233,"text":57},{"id":63,"depth":233,"text":66},{"id":82,"depth":228,"text":85},{"id":108,"depth":228,"text":111,"children":1193},[1194,1195],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":1197},[1198],{"id":171,"depth":233,"text":174},{},{"title":5,"description":245},[257,258,259],[261,262,263,264,265]]