[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation-en":3,"projects-nav-en":24,"header-me":1054,"\u002Fprojects\u002Fai-chatbot-project":1055},[4,8,12,16,20],{"title":5,"path":6,"stem":7},"The Humanitarian AI Chatbot","\u002Fprojects\u002Fai-chatbot-project","1.projects\u002F1.ai-chatbot-project",{"title":9,"path":10,"stem":11},"Analytics Dashboard for ReliefWeb Jobs Data","\u002Fprojects\u002Freliefweb-jobs-dashboard","1.projects\u002F2.reliefweb-jobs-dashboard",{"title":13,"path":14,"stem":15},"Understanding Cash Assistance in Ukraine","\u002Fprojects\u002Fhumanitarian-data-platform","1.projects\u002F3.humanitarian-data-platform",{"title":17,"path":18,"stem":19},"Humanitarian Data Analyst Portfolio","\u002Fprojects\u002Fweb-development-project","1.projects\u002F4.web-development-project",{"title":21,"path":22,"stem":23},"AI-Powered Humanitarian Legal Advisor for Ukraine","\u002Fprojects\u002Fhumanitarian-paralegal-advisor","1.projects\u002F5.humanitarian-paralegal-advisor",[25,268,524,692,881],{"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\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},"project-overview",[38,39,40],"strong",{},"Project Overview",[42,43,45],"h3",{"id":44},"the-goal",[38,46,47],{},"The Goal",[49,50,51],"p",{},"This project deploys an open-access AI application utilizing a custom dataset of humanitarian documents. The user flow supports immediate guest usage, with an optional authentication path for session persistence. The model is optimized to assist remote field staff by appending educational context to generated responses.",[42,53,55],{"id":54},"the-solution",[38,56,57],{},"The Solution",[49,59,60],{},"This project utilizes a modern, low-overhead stack designed for high impact. Built on a Nuxt UI Pro template, the frontend offers immediate public access with an optional login path bridged to baena.ai. The backend architecture avoids traditional server bloat by routing API requests directly to n8n automation workflows, which handle AI model interaction and data persistence via Supabase",[42,62,64],{"id":63},"key-objectives",[38,65,66],{},"Key Objectives",[68,69,70,74,77],"ul",{},[71,72,73],"li",{},"Develop a public, session-based chat experience for anonymous users with a clear call-to-action to register.",[71,75,76],{},"Implement a delegated authentication system for users to sign up\u002Flog in to save and retrieve their entire chat history.",[71,78,79],{},"Build a robust backend integration connecting the Nuxt server to an n8n webhook and persisting all data in a Supabase database.",[34,81,83],{"id":82},"audience-stakeholders",[38,84,85],{},"Audience & Stakeholders",[68,87,88,94,100],{},[71,89,90,93],{},[38,91,92],{},"Primary Users:"," Humanitarians practicioners with the need of real time data analysis and decision-making support.",[71,95,96,99],{},[38,97,98],{},"Secondary Users:"," Humanitarian organizations looking to enhance their operational efficiency through AI-powered tools.",[71,101,102,105],{},[38,103,104],{},"Key Stakeholders:"," This is a solo project managed by Jesus Baena, who is responsible for all aspects of development, deployment, and maintenance.",[34,107,109],{"id":108},"the-plan-key-features",[38,110,111],{},"The Plan & Key Features",[42,113,115],{"id":114},"overall-approach",[38,116,117],{},"Overall Approach",[49,119,120],{},"The project initially proved its concept via a no-code Bubble prototype. To ensure scalability and control, I am now migrating to a custom architecture using a Nuxt UI Pro template as the visual foundation. This process involves decoupling the template's default authentication and AI services to replace them with our specific requirements. Development follows a backend-first strategy: establishing the custom API and Supabase persistence layer before implementing the dynamic frontend logic",[42,122,124],{"id":123},"core-components",[38,125,126],{},"Core Components",[68,128,129,140,146],{},[71,130,131,134,135,139],{},[38,132,133],{},"Authentication System:"," A delegated flow redirecting users to ",[136,137,138],"code",{},"baena.ai"," for login\u002Fsignup and returning them to the chat app with an active session.",[71,141,142,145],{},[38,143,144],{},"Core Chat Interface:"," A dynamic UI featuring a resizable message input, conversation history display, AI assistant selector, and a user menu that adapts based on authentication status.",[71,147,148,151,152,155,156,159],{},[38,149,150],{},"Backend Integration:"," A Nuxt server API that routes requests to a designated n8n webhook, passing the message, ",[136,153,154],{},"thread_id",", and ",[136,157,158],{},"assistant_id",", with all conversations saved to Supabase.",[161,162],"hr",{},[34,164,166],{"id":165},"timeline-deliverables",[38,167,168],{},"Timeline & Deliverables",[42,170,172],{"id":171},"major-milestones",[38,173,174],{},"Major Milestones",[68,176,177,188,195],{},[71,178,179,180,183,184,187],{},"[",[38,181,182],{},"Date","] ",[38,185,186],{},":"," Project Kickoff & Requirements Finalized",[71,189,179,190,183,192,194],{},[38,191,182],{},[38,193,186],{}," Backend Integration (API, n8n, Supabase) Complete",[71,196,179,197,183,199,201,202],{},[38,198,182],{},[38,200,186],{}," MVP Deployed and Live at ",[136,203,204],{},"chat.baena.ai",[206,207,209],"h4",{"id":208},"final-deliverables",[38,210,211],{},"Final Deliverables",[68,213,214,220,223],{},[71,215,216,217,219],{},"A live and fully functional web application accessible at ",[136,218,204],{},".",[71,221,222],{},"The final source code repository for the application.",[71,224,225],{},"A presentation or document summarizing the features and architecture.",{"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},"Internal (baena.ai)","A publicly accessible AI chat application with optional user accounts for saving conversation history.","md","N\u002FA","50+","https:\u002F\u002Fchat.baena.ai",{},true,"Solo Developer",{"title":5,"description":245},"\u002Fcontact","Production",[257,258,259],"AI","Chatbot","Web App",[261,262,263,264,265],"Nuxt UI Pro","n8n","Supabase","Flowise","PostgreSQL","2025","ii_SZDnIDJ01qU-GNM4CAkHBWPzgnIPNxJnWlgQyOr0",{"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\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],{},"To provide real-time situational awareness on the impact of the ",[38,286,287],{},"2025 global funding crisis"," on the humanitarian workforce. This project moves beyond anecdotal evidence, utilizing data to track how funding cuts and the ",[38,290,291],{},"\"USAID stop work\""," directives translate into actual recruitment freezes and market contraction.",[42,294,295],{"id":54},[38,296,57],{},[49,298,299,300,303],{},"A self-hosted ",[38,301,302],{},"Metabase"," dashboard that automates the collection and visualization of job market data. By maintaining a sovereign data stack, the project ensures historical data is preserved despite external platform changes, allowing for longitudinal analysis of the \"Great Aid Recession.\"",[42,305,306],{"id":63},[38,307,66],{},[68,309,310,316,322],{},[71,311,312,315],{},[38,313,314],{},"Quantify the Funding Gap:"," Correlate the decline in ReliefWeb job postings with major 2025 funding milestones (e.g., the February 2025 USAID payment freeze).",[71,317,318,321],{},[38,319,320],{},"Operational Transparency:"," Provide an open-source repository of all SQL queries used to process the data, inviting peer review from the humanitarian IM community.",[71,323,324,327],{},[38,325,326],{},"Public Accountability:"," Deploy a public-facing Metabase instance that allows stakeholders to see the human cost of budget reductions in real-time.",[161,329],{},[34,331,333],{"id":332},"key-insights-interpretation",[38,334,335],{},"Key Insights & Interpretation",[337,338,339,345],"ol",{},[71,340,341,344],{},[38,342,343],{},"The \"Scaling Down\" Pattern","\nData indicates a proportional decrease across all position types. Key functions like Project Management and Operations maintain their relative weight despite lower absolute numbers. This suggests organizations are implementing broad, non-strategic cuts rather than structural pivots—using their expertise in \"exit strategies\" on their own operations.",[71,346,347,350],{},[38,348,349],{},"The Shift to Consultancies","\nWhile permanent job postings have been in a sustained downturn since February 2025, short-term consultancies remain stable. This points to a market shift: organizations are mitigating risk by favoring flexible, low-overhead contracts over long-term staff commitments.",[161,352],{},[34,354,356],{"id":355},"technical-implementation",[38,357,358],{},"Technical Implementation",[42,360,362],{"id":361},"the-stack",[38,363,364],{},"The Stack",[68,366,367,381,390,398],{},[71,368,369,372,373,376,377,380],{},[38,370,371],{},"Data Source:"," Automated ingestion from the ",[38,374,375],{},"ReliefWeb API"," (",[136,378,379],{},"\u002Fjobs"," endpoint).",[71,382,383,386,387,389],{},[38,384,385],{},"Orchestration:"," ",[38,388,262],{}," (Self-hosted) handles the daily ETL (Extract, Transform, Load) process.",[71,391,392,386,395,397],{},[38,393,394],{},"Analytics:",[38,396,302],{}," (Self-hosted) for visualization and public dashboarding.",[71,399,400,386,403,405],{},[38,401,402],{},"Database:",[38,404,265],{}," for high-performance storage and complex SQL querying.",[42,407,409],{"id":408},"technical-highlight-solving-data-distortion",[38,410,411],{},"Technical Highlight: Solving Data Distortion",[49,413,414,417],{},[38,415,416],{},"Challenge:"," Standard \"Last Week\" or \"This Week\" calendar queries distort trends early in the week. For example, running a report on a Tuesday shows a false \"crash\" in numbers because the calendar week has just begun.",[49,419,420,423,424,427],{},[38,421,422],{},"Fix:"," Implemented ",[38,425,426],{},"Rolling 7-Day Total"," logic in SQL. This ignores fixed calendar weeks to provide a smoothed, accurate trend line of market velocity based on the last 168 hours, ensuring accuracy regardless of when the user views the dashboard.",[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],{},"Phase 1:"," API Integration & Schema design (Mapping ReliefWeb's ",[136,447,448],{},"career_categories"," to the database).",[71,451,452,455],{},[38,453,454],{},"Phase 2:"," SQL Logic Development (Building the Rolling 7-Day and Consultancy-vs-Staff ratio queries).",[71,457,458,461],{},[38,459,460],{},"Phase 3:"," Metabase Dashboarding (Creating the visual story of the 2025 funding crisis).",[71,463,464,467],{},[38,465,466],{},"Phase 4:"," Open Source Launch (Publishing documentation and SQL scripts on GitHub).",[42,469,470],{"id":208},[38,471,211],{},[68,473,474,480,486],{},[71,475,476,479],{},[38,477,478],{},"Live Metabase Dashboard:"," Public link to the real-time hiring trends.",[71,481,482,485],{},[38,483,484],{},"SQL Blueprint:"," A GitHub repository containing the logic of the project.",[71,487,488,491],{},[38,489,490],{},"Technical Guide:"," Documentation on setting up this self-hosted humanitarian IM stack via 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},"Personal Project","A real-time business intelligence dashboard processing millions of data points daily to provide insights on the humanitarian job market.","https:\u002F\u002Fgithub.com\u002FJesus-Baena\u002F005-dashboard-reliefweb-jobs","15","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Freliefjobs-dashboard",{},{"title":9,"description":509},"Completed",[517,518,519],"Data Analysis","Business Intelligence","Web Services",[302,265,262,521],"Docker","2024","lKD7CjTCgVghEys2zf4ewQkc-8P2Ot94cqgDEvcWZBU",{"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\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],{},"To analyze a large-scale dataset on Multipurpose Cash Assistance (MPCA) from the Ukraine crisis to derive actionable insights on aid distribution, reporting practices, and demographic reach, while acknowledging the data's inherent limitations.",[206,542,543],{"id":54},[38,544,57],{},[49,546,547],{},"A comprehensive analytical report based on data collected by the UN Office for the Coordination of Humanitarian Affairs (OCHA). The study explores patterns in MPCA interventions, highlighting key findings that can inform current operations and improve future data collection strategies in humanitarian emergencies.",[206,549,550],{"id":63},[38,551,66],{},[68,553,554,560,566],{},[71,555,556,559],{},[38,557,558],{},"Analyze aid distribution patterns"," to understand the influence of logistics and partner presence versus purely needs-based criteria.",[71,561,562,565],{},[38,563,564],{},"Evaluate reporting granularity"," and consistency across different types of humanitarian actors (UN, NGOs, RCRC Movement).",[71,567,568,571],{},[38,569,570],{},"Identify potential demographic reporting gaps"," and suggest improvements for future data collection efforts.",[42,573,574],{"id":82},[38,575,85],{},[68,577,578,583],{},[71,579,580,582],{},[38,581,92],{}," Humanitarian program managers, data analysts, and members of the MPCA technical working group.",[71,584,585,587],{},[38,586,104],{}," OCHA, partner NGOs, UN agencies, the Red Cross\u002FRed Crescent Movement, and humanitarian donors.",[42,589,590],{"id":108},[38,591,111],{},[206,593,594],{"id":114},[38,595,117],{},[49,597,598],{},"The project involved an exploratory data analysis of a real-world, field-collected dataset. The core strategy was to extract meaningful trends from coordination data, carefully contextualize the findings by acknowledging data limitations (e.g., inconsistencies in financial reporting), and produce practical recommendations.",[206,600,601],{"id":123},[38,602,126],{},[68,604,605,611,617],{},[71,606,607,610],{},[38,608,609],{},"Component 1: Partner-Level Analysis:"," Disaggregated data by partner type to compare the reporting detail and geographic focus of national NGOs, UN agencies, and the RCRC Movement.",[71,612,613,616],{},[38,614,615],{},"Component 2: Geospatial Distribution Analysis:"," Examined the clustering of aid activities in relation to conflict zones to assess the role of accessibility in distribution.",[71,618,619,622],{},[38,620,621],{},"Component 3: Demographic Data Review:"," Scrutinized household composition data to identify potential underreporting of specific groups, such as adult men.",[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",{}," Data acquisition from OCHA and initial data cleaning\u002Fpreparation.",[71,642,643,647],{},[38,644,645,186],{},[638,646,182],{}," Completion of the core analysis and drafting of key findings.",[71,649,650,653],{},[38,651,652],{},"20 Jan 2025:"," Final analytical report published.",[206,655,656],{"id":208},[38,657,211],{},[68,659,660,663,666],{},[71,661,662],{},"A published analytical article detailing the methodology, key findings, and conclusion.",[71,664,665],{},"A set of concrete recommendations for enhancing future humanitarian MPCA tracking tools.",[71,667,668],{},"A basis for a subsequent research project using statistical models to analyze risk perception.",{"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},"Humanitarian Data Analysis \u002F Self-Initiated Project","An in-depth analysis of Multipurpose Cash Assistance (MPCA) data to identify trends, gaps, and lessons learned from the humanitarian response in Ukraine.","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Fmpca-ukraine-report",{},"Data Analyst",{"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","FJXjs8pb4ghr4BaefAn0l6g4chrsf7pqc0LX2T4P2cE",{"id":693,"title":17,"article":27,"authors":694,"blogUrl":27,"body":696,"client":863,"description":864,"extension":246,"githubUrl":865,"hours":248,"liveDemoUrl":866,"meta":867,"navigation":251,"ogImage":27,"path":18,"publishedAt":27,"role":868,"seo":869,"serviceUrl":27,"servicesUrl":254,"status":870,"stem":19,"tags":871,"techStack":876,"updatedAt":27,"year":522,"__hash__":880},"projects\u002F1.projects\u002F4.web-development-project.md",[29,695],"Gemini",{"type":31,"value":697,"toc":847},[698,700,704,707,711,714,718,744,748,760,764,768,771,775,798,802,806,832,836],[34,699,40],{"id":36},[42,701,702],{"id":44},[38,703,47],{},[49,705,706],{},"The primary goal is to create a polished and professional online portfolio to establish a personal brand as a \"Humanitarian Data Architect,\" effectively showcasing technical skills and project experience to attract potential employers and freelance clients.",[42,708,709],{"id":54},[38,710,57],{},[49,712,713],{},"The project is a comprehensive portfolio website. It will serve as a primary commercial and professional tool, presenting projects as benefit-oriented case studies, outlining hireable freelance services, and positioning the author as a thought leader at the intersection of technology and humanitarian aid.",[42,715,716],{"id":63},[38,717,66],{},[68,719,720,726,732,738],{},[71,721,722,725],{},[38,723,724],{},"Showcase Expertise:"," Clearly demonstrate advanced capabilities in AI, data analysis, and digital tool development within a humanitarian context.",[71,727,728,731],{},[38,729,730],{},"Generate Leads:"," Attract interest from recruiters and organizations for both full-time roles and freelance service engagements.",[71,733,734,737],{},[38,735,736],{},"Build Authority:"," Establish a reputation as a skilled practitioner in the humanitarian tech sector.",[71,739,740,743],{},[38,741,742],{},"Control Narrative:"," Present a curated story of professional work that highlights tangible impact and problem-solving skills.",[34,745,746],{"id":82},[38,747,85],{},[68,749,750,755],{},[71,751,752,754],{},[38,753,92],{}," Recruiters and hiring managers at NGOs, UN agencies, and tech companies; potential clients for freelance projects; and other professionals in the humanitarian and tech sectors.",[71,756,757,759],{},[38,758,104],{}," The owner of the portfolio (the user).",[34,761,762],{"id":108},[38,763,111],{},[42,765,766],{"id":114},[38,767,117],{},[49,769,770],{},"The development strategy begins with creating a Minimum Viable Product (MVP) using Bubble to serve as a live reference. The final version will then be developed locally using Nuxt. Code will be committed to a GitHub repository, which will trigger an automated build and deployment process via Coolify.",[42,772,773],{"id":123},[38,774,126],{},[68,776,777,783,792],{},[71,778,779,782],{},[38,780,781],{},"Component 1: Main Portfolio Website:"," A Nuxt application featuring home, services, projects, articles, and about pages, all managed within a single GitHub repository.",[71,784,785,788,789,791],{},[38,786,787],{},"Component 2: AI Chat Application:"," A modular and transferable AI chat application built as a separate Nuxt project on a dedicated subdomain (",[136,790,204],{},").",[71,793,794,797],{},[38,795,796],{},"Component 3: Shared Authentication:"," A unified login system where authentication on the main site is recognized on the chat subdomain, creating a seamless user experience.",[34,799,800],{"id":165},[38,801,168],{},[42,803,804],{"id":171},[38,805,174],{},[68,807,808,816,824],{},[71,809,179,810,183,813,815],{},[38,811,812],{},"August 2024",[38,814,186],{}," Planning Complete",[71,817,179,818,183,821,823],{},[38,819,820],{},"September 2024",[38,822,186],{}," MVP (Bubble version) Ready for Review and Launch",[71,825,179,826,183,829,831],{},[38,827,828],{},"November 2024",[38,830,186],{}," Final Version (Nuxt) Deployed\u002FDelivered",[42,833,834],{"id":208},[38,835,211],{},[68,837,838,841,844],{},[71,839,840],{},"A link to the live portfolio web application.",[71,842,843],{},"The final source code repository on GitHub.",[71,845,846],{},"A collection of written case studies and articles published on the site.",{"title":227,"searchDepth":228,"depth":228,"links":848},[849,854,855,859],{"id":36,"depth":228,"text":40,"children":850},[851,852,853],{"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":856},[857,858],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":860},[861,862],{"id":171,"depth":233,"text":174},{"id":208,"depth":233,"text":211},"Personal Portfolio","A professional online portfolio to establish and showcase technical skills and project experience","https:\u002F\u002Fgithub.com\u002FJesus-Baena","https:\u002F\u002Fbaena.ai",{},"Full Stack Developer",{"title":17,"description":864},"Ongoing",[872,873,874,875,257],"Portfolio","Humanitarian Tech","Data Architecture","Web Development",[877,878,262,879],"Nuxt (Vue.js)","Supabase (PostgreSQL)","OpenAI API","6j3V6RA194_H28lz0cbjnaEHF-Oju3-LQct12yAM4Sk",{"id":882,"title":21,"article":27,"authors":883,"blogUrl":27,"body":884,"client":508,"description":1040,"extension":246,"githubUrl":1041,"hours":27,"liveDemoUrl":1042,"meta":1043,"navigation":251,"ogImage":27,"path":22,"publishedAt":27,"role":868,"seo":1044,"serviceUrl":27,"servicesUrl":27,"status":515,"stem":23,"tags":1045,"techStack":1049,"updatedAt":27,"year":266,"__hash__":1053},"projects\u002F1.projects\u002F5.humanitarian-paralegal-advisor.md",[527],{"type":31,"value":885,"toc":1024},[886,890,894,897,901,904,908,928,932,944,948,952,955,959,985,989,993,1010,1014],[34,887,888],{"id":36},[38,889,40],{},[42,891,892],{"id":44},[38,893,47],{},[49,895,896],{},"The core goal is to provide humanitarian workers in Ukraine with a free, accessible tool to quickly understand the complex and rapidly changing legal landscape, thereby saving time and optimizing legal consultation costs.",[42,898,899],{"id":54},[38,900,57],{},[49,902,903],{},"An AI-powered online advisor that acts as a preliminary legal guide. It uses a sophisticated two-agent Retrieval-Augmented Generation (RAG) system that queries a specialized database of Ukrainian legislation and falls back to a web search to provide synthesized, sourced answers to legal questions relevant to humanitarian operations.",[42,905,906],{"id":63},[38,907,66],{},[68,909,910,916,922],{},[71,911,912,915],{},[38,913,914],{},"Provide preliminary guidance"," on common topics like NGO registration, conscription, import regulations, and the implications of martial law.",[71,917,918,921],{},[38,919,920],{},"Optimize legal expenses"," by helping organizations better prepare for and frame inquiries with professional legal counsel.",[71,923,924,927],{},[38,925,926],{},"Ensure reliability"," by prioritizing information from a curated database of official legal texts and providing source citations for verification.",[34,929,930],{"id":82},[38,931,85],{},[68,933,934,939],{},[71,935,936,938],{},[38,937,92],{}," Field managers, program staff, and administrative personnel of local and international humanitarian NGOs operating in Ukraine.",[71,940,941,943],{},[38,942,104],{}," The broader humanitarian community in Ukraine and organizations committed to promoting the rule of law.",[34,945,946],{"id":108},[38,947,111],{},[42,949,950],{"id":114},[38,951,117],{},[49,953,954],{},"The project was built using a mix of low-code and custom-coded components. The core of the system is a sequential two-agent chain built in Flowise. This RAG system first queries a curated, specialized vector database (Supabase) for high-relevance answers and intelligently falls back to a general web search (SerpAPI) to ensure comprehensive coverage.",[42,956,957],{"id":123},[38,958,126],{},[68,960,961,967,973,979],{},[71,962,963,966],{},[38,964,965],{},"Knowledge Base:"," A custom-built vector database containing Ukrainian laws, decrees, and official documents, processed through a custom Python translation pipeline.",[71,968,969,972],{},[38,970,971],{},"Two-Agent RAG System:"," 1. A \"Compiler\" agent that analyzes user queries and searches the knowledge base or the web.\n2. A \"Refiner\" agent that synthesizes the retrieved information into a coherent answer with source citations.",[71,974,975,978],{},[38,976,977],{},"Automation Backend:"," A self-hosted n8n workflow that orchestrates the data flow between the user interface and the AI system.",[71,980,981,984],{},[38,982,983],{},"Web Interface:"," A simple HTML, CSS, and JavaScript frontend for user interaction.",[34,986,987],{"id":165},[38,988,168],{},[42,990,991],{"id":171},[38,992,174],{},[68,994,995,1000,1005],{},[71,996,997,999],{},[38,998,444],{}," Knowledge Base Creation (Data collection, translation, and vectorization).",[71,1001,1002,1004],{},[38,1003,454],{}," Development of the two-agent AI system using Flowise and n8n.",[71,1006,1007,1009],{},[38,1008,460],{}," Deployment of the live web application and public release.",[42,1011,1012],{"id":208},[38,1013,211],{},[68,1015,1016,1019,1021],{},[71,1017,1018],{},"A link to the live, publicly accessible online legal advisor.",[71,1020,843],{},[71,1022,1023],{},"A technical article detailing the construction of the knowledge base and the system's architecture.",{"title":227,"searchDepth":228,"depth":228,"links":1025},[1026,1031,1032,1036],{"id":36,"depth":228,"text":40,"children":1027},[1028,1029,1030],{"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":1033},[1034,1035],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":1037},[1038,1039],{"id":171,"depth":233,"text":174},{"id":208,"depth":233,"text":211},"An online AI assistant designed to help humanitarian NGOs navigate the complex Ukrainian legal framework.","https:\u002F\u002Fgithub.com\u002FJesus-Baena\u002Fchatbot-ukr-law","https:\u002F\u002Fbaena.ai\u002Fdemos\u002Fparalegal-advisor",{},{"title":21,"description":1040},[257,682,1046,684,1047,1048],"Legal Tech","RAG","LLM",[262,264,1050,1051,1052],"Ollama","Qdrant","Postgres","-aiJxRpiHUdriC-Zljr3O8Hl399fjcDTPWrD1ssMePQ",{"user":27,"profile":27},{"id":26,"title":5,"article":27,"authors":1056,"blogUrl":27,"body":1057,"client":244,"description":245,"extension":246,"githubUrl":247,"hours":248,"liveDemoUrl":249,"meta":1200,"navigation":251,"ogImage":27,"path":6,"publishedAt":27,"role":252,"seo":1201,"serviceUrl":254,"servicesUrl":27,"status":255,"stem":7,"tags":1202,"techStack":1203,"updatedAt":27,"year":266,"__hash__":267},[29],{"type":31,"value":1058,"toc":1185},[1059,1063,1067,1069,1073,1075,1079,1087,1091,1105,1109,1113,1115,1119,1139,1141,1145,1149,1171,1175],[34,1060,1061],{"id":36},[38,1062,40],{},[42,1064,1065],{"id":44},[38,1066,47],{},[49,1068,51],{},[42,1070,1071],{"id":54},[38,1072,57],{},[49,1074,60],{},[42,1076,1077],{"id":63},[38,1078,66],{},[68,1080,1081,1083,1085],{},[71,1082,73],{},[71,1084,76],{},[71,1086,79],{},[34,1088,1089],{"id":82},[38,1090,85],{},[68,1092,1093,1097,1101],{},[71,1094,1095,93],{},[38,1096,92],{},[71,1098,1099,99],{},[38,1100,98],{},[71,1102,1103,105],{},[38,1104,104],{},[34,1106,1107],{"id":108},[38,1108,111],{},[42,1110,1111],{"id":114},[38,1112,117],{},[49,1114,120],{},[42,1116,1117],{"id":123},[38,1118,126],{},[68,1120,1121,1127,1131],{},[71,1122,1123,134,1125,139],{},[38,1124,133],{},[136,1126,138],{},[71,1128,1129,145],{},[38,1130,144],{},[71,1132,1133,151,1135,155,1137,159],{},[38,1134,150],{},[136,1136,154],{},[136,1138,158],{},[161,1140],{},[34,1142,1143],{"id":165},[38,1144,168],{},[42,1146,1147],{"id":171},[38,1148,174],{},[68,1150,1151,1157,1163],{},[71,1152,179,1153,183,1155,187],{},[38,1154,182],{},[38,1156,186],{},[71,1158,179,1159,183,1161,194],{},[38,1160,182],{},[38,1162,186],{},[71,1164,179,1165,183,1167,201,1169],{},[38,1166,182],{},[38,1168,186],{},[136,1170,204],{},[206,1172,1173],{"id":208},[38,1174,211],{},[68,1176,1177,1181,1183],{},[71,1178,216,1179,219],{},[136,1180,204],{},[71,1182,222],{},[71,1184,225],{},{"title":227,"searchDepth":228,"depth":228,"links":1186},[1187,1192,1193,1197],{"id":36,"depth":228,"text":40,"children":1188},[1189,1190,1191],{"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":1194},[1195,1196],{"id":114,"depth":233,"text":117},{"id":123,"depth":233,"text":126},{"id":165,"depth":228,"text":168,"children":1198},[1199],{"id":171,"depth":233,"text":174},{},{"title":5,"description":245},[257,258,259],[261,262,263,264,265]]