Job Application Assistant (Azure AI Prompt Flow Project)

This is a portfolio project I decided to create upon concluding the Microsoft Azure AI Engineer certification.

Why this project?

Microsoft regularly updates their courses as new technologies emerge, and the focus of the certification exams shifts accordingly. In the most recent version of the AI-102 exam, there’s a heavier emphasis on Generative AI, including Prompt Flow. That’s why I chose to build a Prompt Flow project: It highlights one of the most important takeaways from the course, and it also happens to be genuinely useful

Demo

This is a portfolio demonstration. Contact me for access credentials.

Example outputs

These outputs illustrates what kind of product users can expect if they try the service.

Features

Blacklisting

The service uses a blacklist that avoids the words and phrases overused by the AI.

Technical Implementation

This demo showcases:

  • Multi-step prompt engineering with structured JSON outputs
  • Job advertisement analysis extracting titles, requirements, and keywords
  • CV point selection matching experience to job requirements
  • Document generation with consistent formatting and professional tone
  • Error handling and input validation

The system uses a 5-stage pipeline similar to production-level document processing workflows used by major recruiting platforms.

From Azure to Netlify

The flow was made using the GUI on Azure AI Foundry. However, I chose Netlify over Azure App Service for hosting because this is a portfolio demo with infrequent usage. Azure Web Apps charge continuously (~$13+/month) regardless of traffic, while Netlify’s free tier covers hosting and serverless functions with generous limits. Since the tool might only be used a few times per month, paying $156+/year for always-on Azure hosting doesn’t make economic sense compared to Netlify’s $0 hosting cost. This change necessitated me exporting the files from Azure and rewriting the flow as a Netlify function in JS.

Key insight - Domain expertise is king

Without knowing how to write a good CV and application and giving the AI very specific instructions, the AI ends up writing only a passable CV and a horrible application that doesn’t really support, or serve as an extension of, the CV. A prompt flow is just a chain of prompts that uses each others outputs; and as with all prompts, the results you get are heavily dependent on your ability to craft prompts that precisely requests what you want. The service doesn’t add anything new under the sun but merely speeds up a task that most people would rather not have to bother with. The resulting CV or job application is, roughly put, only as good as the domain knowledge that goes into it.

Desiderata for the next iteration

I have managed to make the output application forward-looking and focused how prospective applicants can add value in the role in question given their experience.

But the service is still far from perfect. Far from it. It is also only a first iteration and would need to go through a significant amount of others with carefully monitoring of how progress is made towards an ideal output.

But with CVs and cover letters there aren’t an ideal output. I just like the principles I follow because they are very rational and should appeal to any recruiter that wants to base their decision on how likely, given the evidence, a candidate is to succeed and because I’ve had significant succes used this method for my own CVs and applications and for those of others that I’ve helped in the course of time.

A better solution would seek a host of insight from recruiters that would act as a that

For one thing, it needs to show intimate familiarity with the tasks that are required in the job ad and that are constitutive of the role the organisation is looking for. For example, if an organisation is looking for a PM that excels at planning, it needs to show that the applicant is intimately familiar with planning in a PM context by e.g. highlighting some frequent risks and how the candidate mitigates these.

I think I might add an extra node that evaluates how well the cover letter satisfies a list of criteria to make sure it is even more on point.