Pedantic Journal

Thoughts on AI and other subjects.

Visualising Microsoft exams

image

After over 20 years spent earning Microsoft certifications, and with my recent success on the GH-900 exam, I started reflecting on just how far I’ve come. That’s when the idea for exam-timeline was born. I wanted a fun, interactive way to visualise my certification journey and maybe inspire others who are on a similar path. There’s something satisfying about seeing all those milestones lined up, and I thought: why not make it easy for anyone to do the same?

The initial prototype came together in under half an hour of vibe-coding, thanks to GitHub Copilot for the coding assist and using the Free tier of Azure Static Web Apps for the super-quick deployment and tight GitHub integration. From there, I spent a few more hours automating the extraction of exam data, and wiring up GitHub Actions - mainly delegating the hard work to the GitHub Coding Agent. The end result is a project that’s both personal and practical, with a workflow that anyone can replicate.

Here’s how it all works: at its core, the project uses a Python script to download your Microsoft certification transcript, based on your Transcript sharing code. You can run this script independently if you just want a quick export for your own records or to feed into another tool. But if you’re feeling ambitious, you can clone the entire repo, customise it, and deploy your own version in minutes. The daily automation fetches your latest transcript, stores it in the repo as a .csv file, which feeds a simple Plotly-powered (JS) dashboard. Here's how it gets the transcript from Microsoft Learn:

API_ENDPOINT_TEMPLATE = "https://learn.microsoft.com/api/profiles/transcript/share/{share_id}?locale={locale}"

url = API_ENDPOINT_TEMPLATE.format(share_id=share_id, locale=locale)
headers = {
     # Provide a User‑Agent to avoid potential filtering of generic requests
     "User-Agent": "Mozilla/5.0 (compatible; MSFTTranscriptFetcher/1.0)"
}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()

If you want to try this yourself, just remember: your Microsoft transcript may contain sensitive personal information, like your name and email address. Thankfully, Microsoft Learn lets you adjust this before sharing anything publicly.

image

Whether you’re looking to track your own certification milestones, show off your progress, or just experiment with Python, GitHub Actions, and Azure Static Websites, I hope my little exam-timeline project inspires you to take pride in your learning journey. Contributions welcome - let’s celebrate our wins together!