|
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | | -<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/all.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-23T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-23T00:00:00+01:00</published><updated>2025-07-23T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-23:/exam-timeline/</id><summary type="html"><p>How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps</p></summary><content type="html"><p><a href="https://exams.guygregory.com"><img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /></a></p> |
| 2 | +<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/all.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-31T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-31T00:00:00+01:00</published><updated>2025-07-31T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-31:/exam-timeline/</id><summary type="html"><p>How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps</p></summary><content type="html"><p><a href="https://exams.guygregory.com"><img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /></a></p> |
3 | 3 | <p>After over 20 years spent earning Microsoft certifications, and with my recent success on the <a href="https://learn.microsoft.com/credentials/certifications/github-foundations/">GH-900</a> exam, I started reflecting on just how far I’ve come. That’s when the idea for <a href="https://github.com/guygregory/exam-timeline"><code>exam-timeline</code></a> was born. I wanted a fun, interactive way to visualise my certification journey and to try building a simple AI app that used LLMs from <a href="https://gh.io/models">GitHub Models</a>.</p> |
4 | 4 | <p>The initial prototype came together in under half an hour of vibe-coding, thanks to <a href="https://github.com/copilot">GitHub Copilot</a> for the coding assist and using the Free tier of <a href="https://learn.microsoft.com/azure/static-web-apps/overview">Azure Static Web Apps</a> 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 <a href="https://docs.github.com/en/actions">GitHub Actions</a> - mainly delegating the hard work to the <a href="https://docs.github.com/en/copilot/how-tos/agents/copilot-coding-agent">GitHub Coding Agent</a>. A few days later, I added the "AI recommendation" feature, using a few lines of Python. The end result is a project that’s both personal and practical, with a workflow that anyone can replicate.</p> |
5 | 5 | <h3>How it works - AI-powered recommendation via GitHub Models</h3> |
|
11 | 11 | <li>The script uses OpenAI's gpt-4o model, which is hosted by GitHub Models (on Azure AI)</li> |
12 | 12 | <li>Because this script is called directly from GitHub Actions, <a href="https://docs.github.com/en/github-models/use-github-models/integrating-ai-models-into-your-development-workflow#using-ai-models-with-github-actions">auth works seamlessly</a>. I only had to add <code>models: read</code> into the <code>permissions</code> section of the workflow for it to work.</li> |
13 | 13 | <li>In order to return a consistent response, <a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;pivots=programming-language-python">Structured Outputs</a> are used with the <a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;pivots=programming-language-python#supported-schemas-and-limitations">enum type</a> to only return an answer from the <a href="https://github.com/guygregory/exam-timeline/blob/main/priority_ARB_exams.csv">list of prioritised exams</a>.</li> |
14 | | -<li>Leverages the <a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits">GitHub Models quota, included in the GitHub Copilot plans (including free)</a></li> |
15 | 14 | <li>The output of this script is a JSON object which includes the recommendation: <code>{"exam_code":"AZ-305"}</code>, which is then inserted into the button in <a href="https://github.com/guygregory/exam-timeline/blob/main/index.html"><code>index.html</code></a></li> |
| 15 | +<li>This automation uses the <a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits">GitHub Models quota, included in the GitHub Copilot plans (including free)</a></li> |
16 | 16 | </ul> |
17 | 17 | <h3>How it works - Data extraction from Microsoft Learn</h3> |
18 | 18 | <p>To extract the exam information, the project uses a <a href="https://github.com/guygregory/exam-timeline/blob/main/passed_exams.py">Python script</a> to download the Microsoft certification transcript, based on the <a href="https://learn.microsoft.com/users/me/transcript">Transcript sharing code</a>.</p> |
|
0 commit comments