The $0 Solution: How Our Underfunded NGOs Used AI to Outsmart the Refugee Job Crisis (Full Story)

The $0 Solution: How Our Underfunded NGOs Used AI to Outsmart the Refugee Job Crisis (Full Story)

A while ago, an NGO I support occasionally decided to focus on helping refugees in Europe access the job market. The refugees they assisted came from various nations, including Afghanistan, Russia, Syria, and many other countries.

The Mission: Connecting Refugees with the Labor Market

The core concept was straightforward:

  1. Gather a group of volunteers who have experience with the labor market.
  2. Invite refugees and ask them to bring everything they have—a paper resume, a photo, or any other document.
  3. Equipped with AI tools and a laptop, the volunteers would help them:
    – Create a resume (CV).– Draft a cover letter.– Apply for jobs.

The project has been successful, but the journey wasn't easy. In this post, I want to share my personal experience as a volunteer and AI developer in making the first part—resume creation—possible. If there is enough interest, I can share more in upcoming posts.

The Challenge: Building a Resume with Only Memories and a Photo

To apply for most jobs, you need a resume. Some employers require a photo, some require a cover letter, and some—especially for low-paid jobs—can hire refugees on the spot.

At first glance, this might sound as simple as running through a wizard on tools like resume.io or Rezi, but it involves much more than that.

Key Difficulties We Faced

  • Cultural Background: Many of the refugees I worked with either had no concept of what a CV (resume) is, or they significantly underestimated its importance in the european job market.
  • Significant Language Barrier: The refugees and the volunteers often didn't share a common language. For instance, I worked with volunteers who spoke some English serving a girl from Afghanistan who barely spoke the local language. Without AI, the resulting document was often hardly competitive, though better than nothing.
  • Loss of Documentation: Some people have lost their entire history in war-devastated countries like Syria and Afghanistan. Certificates or any kind of documentation are simply unavailable. All there is to work with is memory.
  • Vast Background Differences: The backgrounds of the refugees varied heavily: some had never worked, some had worked for 20+ years, some were retirees, and others were in their early 20s. Covering all industries was almost impossible, although there were clear tendencies toward certain low-paying jobs (remember, many are just looking for work and peace, no matter the specific role).
  • Volunteer Expertise: The technical expertise of the volunteers was as varied as the refugees; some had experience with these tools, others did not.
  • Underfunding: Most importantly, we were underfunded. A subscription beyond the free tiers of ChatGPT or other Large Language Models (LLMs) was hard to afford.

There are certainly more challenges, but these points demonstrate why this was not just a simple technical problem.

How AI Transformed the Process

With AI, the entire dynamic changed.

  • AI offers solutions like real-time translation between the volunteers and the refugees.
  • It can perform web research to help find suitable occupations.
  • It can create a beautiful resume with minimal input.
  • And a personal favorite: its ability to suggest relevant skills based on the refugee's previous roles. This solved a major challenge: people with decades of experience often created one-page resumes simply because they struggled to articulate the specific tasks and responsibilities from their previous jobs in their home countries.
  • AI can easily tailor the resume to a cover letter, and much, much more.

After understanding the challenges and the potential of AI, we had to start compiling the document itself.

---

Step 1: Resume Content is King

We let ChatGPT guide the user through the entire process. For this, we created a template prompt that pulls out all necessary information in a question-and-answer mode from the refugee with the help of the volunteers.

Here is an example dialog:

Step 2: Exporting the Resume in a Quality Format

Having the right content is essential, but now we need to put it into a well-designed format.

Option 1: Old-School Word

For a long time, we used formats like Word with templates. However, as you may know, Word can be very tedious (and, in my opinion, an overly functional format) if you want to change the design or structure of tables, borders, etc.

Option 2: AI + Word Templates

We then discovered docxtemplater:

https://github.com/open-xml-templating/docxtemplater

With AI, we could generate the content and then try to squeeze this content into a template.

For the technically inclined, we used an API with a custom GPT:

  1. Generate content.
  2. Let GPT generate a JSON structure for this content.
  3. Pass the structure to the API.
  4. The API generates the document and returns it to GPT for download.

This worked, but the result was not as visually appealing as AI is truly capable of producing.

Option 3: HTML

AI can produce magnificent designs for almost anything, including resumes. HTML is the most flexible and beautiful output (remember, AI was trained on massive amounts of internet data in this exact format). However, HTML has one caveat: it is not easily editable. This is problematic for two reasons:

  • We need to allow the refugees to edit it themselves.
  • We sometimes need to make tiny changes without loading the entire document back into the AI.
  • We need to upload a photo of the applicant into the HTML file.
Nowadays, with app sharing in ChatGPT and Claude, you can create the entire resume and share it, but sharing a GPT link with an employer is not a viable option. Even worse, many of these shared links are potentially leaked, as you may recall from my previous posts.

There are still a few options, but they are also far from perfect for making the resume editable:

  • You have to open it in an editor and start editing code (not an option for volunteers with limited skills and very little time that should be spent on helping refugees, not coding).
  • Edit in the Chrome console (requires technical skill, and as of today, the rendered page is not easily exportable).
  • Need a Chrome extension (raises data privacy and security concerns).

Option 4: RxResume

In addition to all the options and challenges mentioned above, there is an amazing open-source tool called RxResume that is designed to help with creating and sharing visually appealing resumes:

https://rxresu.me/

This project is free, open source, and available for anyone to use and share, which is just great.

However, for our case, it only helps with the final step (rendering the resume) but not with crafting the content from minimal input, handling foreign languages, and addressing all the other challenges mentioned above.

Option 5: Making HTML with Placeholders and Editable (The Current Best Solution)

After reviewing all the options, we found an approach that we started testing a couple of weeks ago, and it seems to be the most fruitful so far.

Here is how it works:

  1. We generate the entire content in an interview mode with GPT.
  2. We let GPT generate the HTML with one key addition to the prompt: generate placeholders for the image. When clicked, this placeholder allows the user to upload an image that is saved as base64 data inside the file itself. This makes the file self-editable, even without any extra tooling.
Some years ago, this would not have been possible because these functions increase the HTML code size and previously led to exceeding the input token limit. Nowadays, these limits are an order of magnitude higher. You can almost embed an entire HTML editor into the static HTML code itself if you wish (though not recommended for modularity reasons).

To let GPT generate a placeholder for the image upload, use this prompt (code):

# Image Upload - How to Create It

## HTML

<img id="photo" class="photo" src="" alt="Photo" />
<input id="photoInput" type="file" accept="image/*" hidden />

## JavaScript

const img = document.getElementById('photo');
const input = document.getElementById('photoInput');

img.addEventListener('click', () => input.click());

input.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  if (!file) return;
  
  const reader = new FileReader();
  reader.onload = () => img.src = reader.result;
  reader.readAsDataURL(file);
});


That's it. Click image → opens file picker → reads file → displays it.
  1. Download the HTML and make further modifications or upload the image as needed.

Step 3: Fine-Tuning and Optional Image Addition

After downloading the resume, we can now upload the image and make modifications to the HTML using a simple open-source HTML editor.

You can trigger the edit of the HTML resume by simply clicking a bookmarklet (a bookmark containing code).

Here is the bookmarklet code:

javascript:(function(){const h=document.documentElement.outerHTML;navigator.clipboard.writeText(h).then(()=>{window.open('https://huggingface.co/spaces/airabbitX/tinyhtmleditor','_blank');}).catch(e=>alert('Failed to copy: '+e.message));})();
To use it, just open any HTML resume and click this bookmark. It will then show the HTML page in an edit mode. When finished, you can download the edited version by hitting save. That's it.
The HTML Editor works entirely offline. If you wish to do so for any reason, you can also download the HTML file and link to your bookmark.

Conclusion

Thanks to this new approach, we can now use AI (not just ChatGPT) to create powerful content and designs. This enables us to generate content and create beautiful résumés in a fraction of the time it took us in the past, helping us to overcome cultural, language and technical barriers. It's great that this technology is now accessible to everyone, and I hope that many other NGOs will benefit from it too.

Data Privacy | Imprint